《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于Kinect的家庭助理機器人系統(tǒng)設計與實現
基于Kinect的家庭助理機器人系統(tǒng)設計與實現
2017年電子技術應用第3期
黨宏社,侯金良,張 超
陜西科技大學 電氣與信息工程學院,陜西 西安710021
摘要: 為了使獨自在家的小孩、行動不便的老人和病人得到更好的照顧,設計了基于Kinect的家庭助理機器人系統(tǒng)。系統(tǒng)采用單服務器多客戶端模型,Kinect和智能手機作為客戶端連接到服務器。設計制作了助理機器人,其頭部為網絡攝像頭,臂部為舵機結構,腿部為輪式結構。提出了基于Kinect的改進動作識別算法,實現了機器人的體感控制,可幫助老人和病人抓取物體。設計了手機APP,在外的家人可遠程監(jiān)視室內情況,與家中的老人和病人進行視頻通話。
中圖分類號: TP242.6
文獻標識碼: 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.
Design and implementation of home assistant robot system based on Kinect
Dang Hongshe,Hou Jinliang,Zhang Chao
College of Electrical and Information Engineering,Shaanxi University of Science and Technology,Xi′an 710021,China
Abstract: In order to make the elderly, patients and children get better care, a home assistant robot system based on Kinect is designed. Single server multi clients model is used to design the system, the clients Kinect and App are connected to the server. The assistant robot is designed and the IP camera is used as the head ,the steering joint structure is used as the arm and the wheels are used as the leg of the robot. Applying the improved Kinect motion recognition algorithm,the function of motion-control is achieved. The medication bottles and cups can be taken to the elderly and patient by the robot. The APP is designed to realize the function of remote monitoring and video cheat with the elderly and patients.
Key words : Kinect;robot;motion recognition algorithm;APP

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所示。

ck1-t1.gif

    機器人硬件組成如圖2所示。機器人頭部為網絡攝像頭IP Camera,主要功能有:遠程視頻監(jiān)視、遠程視頻通話、智能報警。機器人臂部為數字舵機結構,共8個自由度,機械臂末端為夾爪結構。機械臂可模擬人的雙臂運動,可通過夾爪來抓取物體。機器人的腿部為輪式結構,使其在室內更快捷、靈活地移動。

ck1-t2.gif

    機器人的主控芯片采用樹莓派,樹莓派(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為人體關鍵點的示意圖。

ck1-t3.gif

    由于直接獲取的坐標為深度圖像坐標,所以將其換算為實際坐標。(ximage,yimage,zimage)到(xworld,yworld,zworld)的變換公式[10]

ck1-gs1.gif

2.1.2 特征提取

    在Kinect不標定的情況下識別人體動作,且操作者所在位置可能隨時會發(fā)生變化,因此算法對魯棒性要求很高。本文算法提取的特征是骨骼關鍵點坐標的相對位置,即提取關鍵點坐標向量所成的角度特征。Kinect每秒鐘獲取30幀圖像[11],即關鍵點的坐標每秒刷新30次,再加上人體的抖動,采集到的關鍵點坐標會有波動。采用加權遞推平均濾波方法對坐標進行濾波。把連續(xù)N個采樣值看成一個隊列,隊列的長度固定為N,每次采樣到新的數據放入隊尾,并扔掉原來隊首的一次數據(先進先出原則)。然后針對不同時刻采用不同的權值,最后把隊列中的N個數據進行算術平均運算,就可獲得新的濾波結果。公式如下:

ck1-gs2-4.gif

    角度θ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)視功能。

ck1-t4.gif

3 功能實現

    Processing程序對Kinect深度數據進行采集,利用上文動作識別算法對數據進行處理,把控制信號傳給機器人。操作者可以用雙臂體感控制機械臂,并且實時性很好;可以用腿部的前后移動體感控制機器人的前后移動,并且可以調速;可以利用雙腿的分開程度控制機械夾爪的開合。實驗表明,本算法的動作識別準確率較高,而且光照、背景、操作者和操作者位置的變化對算法影響較小。測試結果如圖5和圖6所示。系統(tǒng)可實現機器人的體感控制,幫助家里的老人和病人抓取物品。

ck1-t5.gif

ck1-t6.gif

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)

此內容為AET網站原創(chuàng),未經授權禁止轉載。