文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2017.03.017
中文引用格式: 黨宏社,侯金良,張超. 基于Kinect的家庭助理機器人系統(tǒng)設計與實現[J].電子技術應用,2017,43(3):70-72,76.
英文引用格式: Dang Hongshe,Hou Jinliang,Zhang Chao. Design and implementation of home assistant robot system based on Kinect[J].Application of Electronic Technique,2017,43(3):70-72,76.
0 引言
老齡化社會提前到來,“空巢家庭”日趨增多,越來越多的老年人“照顧缺位”。子女在外上班,不能陪伴父母,一些身體虛弱、生活不能自理的老人不能得到很好的照顧。老人獨自在家時若發(fā)生一些意外事故,因無法快速地發(fā)送求救信號,從而不能得到救助而造成嚴重后果。家人工作繁忙,一些生病或因殘疾導致行動、生活不便的人,不能獨自去拿水杯、藥品等。家長出門孩子獨自留在家中,孩子由于調皮貪玩會跑到陽臺等危險區(qū)域,因無實時的監(jiān)管導致意外?,F代年輕人工作壓力和生活壓力加重,上班一族整天為工作奔波,常常會疏忽家里的瑣事,忘記關燈、關空調等;家里出現煤氣泄漏、水管漏水等危險情況,未能及時處理而導致事故的發(fā)生;家里有盜賊進入時,不能及時報警而導致貴重財物被盜。
為了解決上述問題,設計了基于Kinect的家庭助理機器人系統(tǒng)。可通過Kinect體感控制機器人移動到指定地點并抓取物體,也可用手機APP遠程控制機器人,實時地監(jiān)視室內情況。
1 系統(tǒng)硬件設計
系統(tǒng)采用基于Java的單服務器多客戶端模型,Kinect和智能手機分別作為客戶端連接到運行在PC上的服務器[1]。Kinect通過USB連接到電腦,利用串口通信將采集到的數據實時發(fā)送到服務器。智能手機通過WiFi連接到服務器,手機APP將控制信號發(fā)送到服務器。服務器對客戶端發(fā)來的數據進行實時采集、解析,并將控制信號發(fā)送給機器人。系統(tǒng)整體結構如圖1所示。
機器人硬件組成如圖2所示。機器人頭部為網絡攝像頭IP Camera,主要功能有:遠程視頻監(jiān)視、遠程視頻通話、智能報警。機器人臂部為數字舵機結構,共8個自由度,機械臂末端為夾爪結構。機械臂可模擬人的雙臂運動,可通過夾爪來抓取物體。機器人的腿部為輪式結構,使其在室內更快捷、靈活地移動。
機器人的主控芯片采用樹莓派,樹莓派(Raspberry Pi)是只有信用卡大小的卡片式電腦。它配備一枚1.24 GHz的4核ARM架構Cortex-A53處理器,SD卡作為儲存媒體,主板周圍有4個USB接口和一個網口[2],利用USB接口可直接與Arduino相連。樹莓派內置無線WiFi模塊,可與服務器進行無線通信。樹莓派PWM輸出能力有限,利用2片Arduino共同產生8路PWM控制機械臂的8個舵機[3]。Arduino是一款便捷靈活、方便上手的開源電子原型平臺,它搭載Atmel ATmega328處理器,有14路數字輸入輸出端口。一片Arduino可同時產生6路PWM信號,并且Arduino開發(fā)軟件提供標準的串口通信協議,可直接與樹莓派通信。樹莓派通過USB與Arduino相連,通過串口通信將每個舵機控制信號發(fā)給Arduino。數字舵機根據PWM信號轉動,實現0°~180°的精確控制。此外,機器人上裝有煙霧和溫濕度傳感器,可實時監(jiān)測家中環(huán)境,發(fā)生煤氣泄漏或火災時可自動報警。
Kinect通過USB與服務器相連,完成人體骨骼數據的采集。采用Kinect for Windows,其工作原理是通過傳感器上一個可見光RGB攝像頭和2個紅外攝像頭,使傳感器能夠采集彩色影像和3D深度圖像[4]。采集圖像時,Kinect傳感器通過紅外激光點陣反饋圖像信息到2個紅外攝像頭中,對操作者的X、Y、Z坐標進行3D掃描定位。此外,通過可見光RGB攝像頭捕捉VGA級別的圖像[5],可進行人物的身份識別。Kinect數據通過USB線纜傳輸到PC上,PC上的Kinect數據采集庫對傳感器傳輸而來的3種不同的數據資料進行串聯,將彩色圖像和3D深度圖像融合成為一個數據流,最后將數據流輸出[6]。本次設計利用數據流中的20個關鍵點的三維坐標,對人體動作進行識別。
2 系統(tǒng)軟件設計
2.1 Kinect動作識別算法
基于輪廓和特征匹配的目標跟蹤算法,例如文獻[7]中的人體動作識別算法,雖然準確性良好,但其算法過于復雜,模板匹配運算量太大,需要大量設備進行并行處理,需要比較高端的處理器?;跒V波預測跟蹤算法,例如文獻[8]中提出的利用卡爾曼濾波算法實現人體動作識別,雖然消除了數據抖動,但其算法的魯棒性不好,對光照、背景變化太敏感。本文提出了一種改進的Kinect動作識別算法,將人體關節(jié)分上、下半身來處理,既保證了手臂控制機器人的實時性,又保證了雙腿控制機器人的準確性。
2.1.1 坐標獲取
Kinect是微軟公司于2011年推出的一款體感外設,主要由紅外發(fā)射器、RGB攝像頭、紅外深度攝像頭組成。它具有實時的全身骨骼跟蹤、運動捕捉以及麥克風輸入的功能,并能夠識別一系列人體動作[9]。本文算法利用Kinect骨骼追蹤技術獲取操作者20個關鍵點的三維坐標,并能對這些點的位置進行實時追蹤。圖3為人體關鍵點的示意圖。
由于直接獲取的坐標為深度圖像坐標,所以將其換算為實際坐標。(ximage,yimage,zimage)到(xworld,yworld,zworld)的變換公式[10]:
2.1.2 特征提取
在Kinect不標定的情況下識別人體動作,且操作者所在位置可能隨時會發(fā)生變化,因此算法對魯棒性要求很高。本文算法提取的特征是骨骼關鍵點坐標的相對位置,即提取關鍵點坐標向量所成的角度特征。Kinect每秒鐘獲取30幀圖像[11],即關鍵點的坐標每秒刷新30次,再加上人體的抖動,采集到的關鍵點坐標會有波動。采用加權遞推平均濾波方法對坐標進行濾波。把連續(xù)N個采樣值看成一個隊列,隊列的長度固定為N,每次采樣到新的數據放入隊尾,并扔掉原來隊首的一次數據(先進先出原則)。然后針對不同時刻采用不同的權值,最后把隊列中的N個數據進行算術平均運算,就可獲得新的濾波結果。公式如下:
角度θij就是當前人體肘部的角度特征。以此類推,可求出人體所有關節(jié)的角度特征。提取的角度特征是一個相對的特征且魯棒性好,只與關鍵點相對位置有關,與光照、背景、操作者以及操作者的位置都無關。
2.1.3 特征匹配
機器人的機械臂是由操作者的雙臂體感控制的,而所提取的角度特征恰好是每個關節(jié)點的相對角度,所以可直接將角度特征輸出控制舵機的轉動。對于下半身,則要通過特征匹配的方法更加準確地識別操作者的動作。由于Kinect采用Processing進行開發(fā),用Java語言編程,所以將計算好的動作模板保存到TXT文本中。本設計中下半身需要識別的動作包括:前進一檔、前進二檔、前進三檔、后退一檔、后退二檔、后退三檔、停止、機器人夾爪的張開與閉合。將下半身骨骼數據的角度特征與動作模板角度特征進行比較,可得到匹配的百分比,從而實現人體動作的識別。
2.2 機器人軟件編程
機器人的軟件部分主要完成的任務為:接收服務器發(fā)來的控制信號并根據信號控制舵機和電機。機器人的控制芯片為樹莓派,樹莓派的操作系統(tǒng)是開源的Linux系統(tǒng),采用Python語言進行編程。首先利用Socket無線通信把樹莓派作為客戶端連接到服務器,開啟客戶端并將其連接到服務器的IP地址和端口號,接收服務器數據。然后根據通信協議解析數據,最后利用Firmata協議將控制舵機和電機數據發(fā)給Arduino。Arduino根據接收到的數據,控制對應引腳產生不同占空比的PWM信號來控制舵機和電機的轉動。樹莓派接收煙霧傳感器和溫濕度傳感器的反饋值,與設定閾值比較決定是否報警。
本設計利用安卓開發(fā)了手機APP[12],可使在外的家人通過機器人實時查看家中情況,及時發(fā)現家中緊急情況。圖4為手機APP界面,點擊連接按鈕,手機APP會自動登錄服務器。左邊是實時視頻監(jiān)控界面,可實現360°旋轉監(jiān)視、拍照、錄像等功能,還可通過對講功能與家里的老人和病人進行視頻通話;右邊是機器人控制界面,通過前后、左右按鈕控制機器人的運動,從而實現了與傳統(tǒng)固定攝像頭監(jiān)視不同的室內移動視頻監(jiān)視功能。
3 功能實現
Processing程序對Kinect深度數據進行采集,利用上文動作識別算法對數據進行處理,把控制信號傳給機器人。操作者可以用雙臂體感控制機械臂,并且實時性很好;可以用腿部的前后移動體感控制機器人的前后移動,并且可以調速;可以利用雙腿的分開程度控制機械夾爪的開合。實驗表明,本算法的動作識別準確率較高,而且光照、背景、操作者和操作者位置的變化對算法影響較小。測試結果如圖5和圖6所示。系統(tǒng)可實現機器人的體感控制,幫助家里的老人和病人抓取物品。
4 結束語
設計制作了基于Kinect的家庭助理機器人系統(tǒng),可通過機器人的體感控制幫助在家無人照顧的老人和病人抓取物體。在外的家人可通過手機App遠程監(jiān)視室內情況并可視頻通話,使老人和病人得到更好的照顧。通過實驗測試,該系統(tǒng)工作正常,可實現以上各項功能。
參考文獻
[1] 馬響.基于Java語言在Web開發(fā)的知識探討[J].信息技術與信息化,2015,13(15):169-171.
[2] 蘇祥林,陳文藝,閆灑灑.基于樹莓派的物聯網開放平臺[J].電子科技,2015,28(9):35-37.
[3] 崔陽,張維華.一種基于Arduino的智能家居控制系統(tǒng)[J].計算機技術與應用,2014,40(4):123-125.
[4] PANSARE J R,BANSAL M.A system to recognize dynamic hand gestures using hidden markov model to control windows applications[J].International Journal of Computer Applications,2013,62(15):169-171.
[5] SU C J,CHIANG C Y.Kinect-enabled home-based rehabilitation system using dynamic time warping and fuzzy logic[J].Applied Soft Computing,2014(22):652-666.
[6] FABRIZIO P,SERGIO B.An open source framework for hand pose and gesture recognition using kinect[J].Visual Computer,2014(30):1107-1122.
[7] 朱國剛,曹林.基于Kinect傳感器骨骼信息的人體動作識別[J].計算機仿真,2014,31(12):329-333.
[8] 王梅,盧熙昌.基于人體動作識別的服務機器人手臂運動控制[J].工業(yè)控制計算機,2015,28(9):59-62.
[9] 戰(zhàn)蔭偉,于芝枝.基于Kinect角度測量的姿勢識別算法[J].傳感器與微系統(tǒng),2014,33(7):129-132.
[10] 陳翰雄,黃雅云,劉宇,等.基于Kinect的空中手勢跟蹤識別的研究與實現[J].電視技術,2015,39(21):91-94.
[11] 蔡菁,程雷,王紅霞.基于Kinect的疲勞駕駛綜合監(jiān)測系統(tǒng)研究[J].計算機工程與科學,2015,37(12):2380-2385.
[12] 薛亮,張繼飛.基于IOS的智能家居安防系統(tǒng)移動端設計[J].計算機技術與自動化,2016,35(2):89-92.
作者信息:
黨宏社,侯金良,張 超
(陜西科技大學 電氣與信息工程學院,陜西 西安710021)