居家涼拌

硬體部分

▲Kinect

  Kinect是由微軟開發,應用於Xbox 360和Xbox One主機的周邊設備。它讓玩家不需要手持或踩踏控制器,而是使用語音指令或手勢來操作Xbox 360和Xbox One的系統介面。它能捕捉玩家全身上下的動作,用身體來進行遊戲,帶給玩家「免控制器的遊戲與娛樂體驗」。此設備是微軟研究院的研究成果之一。

  Kinect感應器是一個外型類似網路攝影機的裝置。Kinect有三個鏡頭,中間的鏡頭是RGB彩色攝影機,左右兩邊鏡頭則分別為紅外線發射器和紅外線 CMOS 攝影機所構成的3D結構光深度感應器。Kinect還搭配了追焦技術,底座馬達會隨著對焦物體移動跟著轉動。Kinect也內建陣列式麥克風,由多組麥克風同時收音,比對後消除雜音。   

  在技術部份我們主要運用到Kinect的鏡頭來偵測人體骨架的位置,水平視角為57度、垂直視角為43度(±27度),最佳使用距離為1.2m至4m。在Kinect的使用及原理上,我們先以Kinect的座標軸為基準(下圖一),並將Kinect的視野分割成20個BLOCK(下圖二),待偵測到人體骨架的位置後,取出頭部的X及Z之座標,判斷該座標屬於事先分割好的哪一BLOCK,再按照該BLOCK相對應的音訊進行播放。

圖一 圖二

▲Arduino

  
 Arduino,是一個開放原始碼的單晶片微控制器,它使用了Atmel AVR單片機,採用了開放原始碼的軟硬體平台,建構於簡易輸出/輸入(simple I/O)介面板,並且具有使用類似Java、C語言的Processing/Wiring開發環境。
  

▲iRobot

  機器人吸塵器,又稱自動打掃機、自動吸塵機、智能吸塵、掃地機器人等,用以打掃家裡環境。其原理為一自動化技術機身,搭配有集塵設施的真空吸塵裝置,由機身內置的微處理器控制路徑行走,加上毛刷或是抹布、除塵紙打掃,達到更好的居家自動打掃效果。機器人當作移動的動力。

原理架設

▲深度感測

  在深度串流的畫格中,每一個像素的資料,表示在指定的 x, y 座標下,與最靠近感應器的物件的相對距離。深度距離範圍為 500mm ~ 4000mm。深度 0 則表示未知狀況,例如該位置是影子、過低反射 (玻璃)、過高反射 (鏡子)。

   深度感測分析步驟: 將 500mm ~ 1800mm 內的物品視為障礙物上色。 左右各150pixels的障礙物上白色,中心的障礙物上紅色。 依據障礙物佔視訊畫面的比例決定機器人前進方向。

▲Twitter發文

  利用twitter提供的api,在code中填上自己的token後即可透過自己的程式發文,定期擷取螢幕畫面,螢幕畫面包括心跳圖以及深度感測圖,並設定timer即可定期發文,透過發文通知家人使用者當前所在位置,及身體健康狀況。

▲iRobot行進方式

  kinect偵測到是否有障礙物並控制arduino發射紅外線訊號,決定行進方向,iRobot偵測到紅外線訊號,做出相對的動作。實作上由於深度感測的code是C++,而紅外線發射的code是C#所寫的,以至於在兩隻程式的溝通上遇到不少困難,我們將kinect偵測到的訊號輸出成一個代碼寫至一個txt檔中,arduino再讀取txt檔中的內容,以達到傳輸訊號的效果,但寫檔及讀檔是不能同時進行的,於是我們就採取重開程式的方法,每次遇到剛好同時寫檔讀檔卡住的時候,就重新啟動程式,解決兩邊程式互相溝通的問題。

▲心跳感測

  arduino脈搏感測,透過arduino pulse sensor然後傳送脈搏訊號到arduino uno板子上 ,之後傳送到我們的電腦上,讓電腦判斷老人健康狀況。   

  arduino pulse sensor將心跳分析後的數據傳輸到arduino uno開發板上,然後再將心跳訊號透過電腦上的processing將心跳結果顯示在老人面前。

  arduino脈搏感測分析步驟: 利用arduino pulse sensor脈搏感測器 感測人體心跳 將心跳訊號傳輸到arduino uno開發板 再透過processing顯示心跳狀況