楊文超,吳亞東,趙思蕊,馮鑫淼
(西南科技大學 計算機科學與技術(shù)學院,四川 綿陽 621010)
摘 要: 為解決機器人設(shè)計功能單一而結(jié)構(gòu)復(fù)雜,智能家居產(chǎn)品依賴終端而用戶體驗度差等問題,結(jié)合Kinect v2體感交互設(shè)備設(shè)計一種仿人形智慧家庭機器人,借助嵌入式硬件技術(shù)、語音合成技術(shù)、動態(tài)區(qū)域濾波算法、圖像分割避障算法、二階差分邊緣檢測方法和姿勢序列有限狀態(tài)機的動作識別方法,實現(xiàn)可自定義內(nèi)容的自然語音交流與語音控制功能、可自動調(diào)速的自主避障與路徑規(guī)劃功能、可鎖定目標的人物跟蹤與動作識別功能。設(shè)計實現(xiàn)的機器人具有成本低廉、結(jié)構(gòu)簡單、適應(yīng)性強、功能多樣等優(yōu)點。經(jīng)實際測試,該智慧家庭管家機器人運行穩(wěn)定,用戶體驗良好,可作為智能家居行業(yè)探索方向。
關(guān)鍵詞: 人機交互;智能家居;Kinect v2傳感器;機器人
0 引言
目前,智能家居行業(yè)發(fā)展緩慢,智能家居產(chǎn)品未能脫離手持終端設(shè)備,同時用戶體驗度不高、產(chǎn)品功能單一、成本昂貴等弊端亟待解決。移動機器人的研究表現(xiàn)出聲吶、激光、紅外等深度探測傳感器及其他傳感器融合的趨勢[1-2]。市面上常見的深度傳感器有3種:(1)基于多目攝像頭,典型代表有基于雙目攝像頭的Leap Motion、基于四目攝像頭的Google Tango;(2)基于結(jié)構(gòu)光技術(shù),典型代表為PrimeSense和Kinect v1;(3)基于TOF技術(shù),典型代表為Kinect v2。
微軟公司發(fā)布的Kinect系列體感設(shè)備將彩色圖像、深度圖像、人體骨骼以及語音信息集成在一起[3],Kinect v2相比于第一代其深度可視范圍更廣,可同時識別6人,每個人25個骨骼點,彩色圖像分辨率提升到1 080 p高清格式。本設(shè)計將Kinect v2與智能家居機器人相結(jié)合,應(yīng)用該傳感器和廉價的單片機嵌入式硬件實現(xiàn)了一套擁有自然語言交流、自主避障、路徑規(guī)劃、動作識別等功能的智慧家庭管家機器人,將Kinect v2傳感器的室內(nèi)環(huán)境應(yīng)用優(yōu)勢充分展現(xiàn)[4]。
1 智慧家庭管家硬件組成
智慧家庭管家的技術(shù)架構(gòu)分四部分:(1)Kinect v2為系統(tǒng)提供了視覺和聽覺平臺,充當著智慧管家的眼睛和耳朵,為分析周圍環(huán)境和下一步行動決策提供數(shù)據(jù)基礎(chǔ);(2)主控系統(tǒng)包含安裝了Kinect for Windows SDK2.0的筆記本電腦,好比機器人的大腦和心臟,是機器人數(shù)據(jù)處理、算法實現(xiàn)和邏輯控制的中心;(3)底層行走系統(tǒng)基于ARM架構(gòu)的STM32F103系列32位單片機設(shè)計,接收控制命令并驅(qū)動電機轉(zhuǎn)動,構(gòu)成智慧機器人的移動四肢;(4)借助無線智能家電控制器輕松控制電器設(shè)備,為用戶提供個性化智能家居服務(wù)。系統(tǒng)硬件組成框圖如圖1所示。
1.1 底層行走系統(tǒng)
底層行走系統(tǒng)以STM32F103單片機為控制中心,通過串口與主控系統(tǒng)進行信息交換,驅(qū)動電子羅盤模塊獲取機器人方向信息,輸出4路PWM波控制兩個直流電機的轉(zhuǎn)速與轉(zhuǎn)向。串口使用PL2303USB轉(zhuǎn)串口模塊,在筆記本和STM32單片機之間穩(wěn)定傳輸數(shù)據(jù);電子羅盤使用HMC5883L模塊,可以實時獲取方向信息;直流電機使用12 V行星減速電機,轉(zhuǎn)速低,扭力大,噪音小,分別控制兩邊輪子的轉(zhuǎn)速與轉(zhuǎn)向,實現(xiàn)差速轉(zhuǎn)向。
1.2 智能家電控制器
運用WiFi轉(zhuǎn)串口模塊實現(xiàn)STC89s52單片機與筆記本電腦之間無線傳輸數(shù)據(jù)。由于WiFi轉(zhuǎn)串口模塊傳輸透明,為了提高安全性,控制命令在筆記本發(fā)送端經(jīng)過算法加密后發(fā)送。單片機接收到命令并解密后,控制與I/O口相連的繼電器開關(guān)狀態(tài),實現(xiàn)對電燈等家電的控制。
2 系統(tǒng)軟件設(shè)計
機器人軟件包括底層行走系統(tǒng)程序、智能家電控制器程序、主控系統(tǒng)核心軟件。行走系統(tǒng)和家電控制器程序都相對簡單,這里不再贅述[5]。本節(jié)僅介紹基于.net4.0 Framework架構(gòu),采用WPF開發(fā)的核心軟件系統(tǒng)。核心軟件系統(tǒng)負責驅(qū)動Kinect v2設(shè)備,讀取語音數(shù)據(jù)、彩色圖像、深度數(shù)據(jù)和骨骼數(shù)據(jù),然后經(jīng)過內(nèi)部算法處理控制智慧管家機器人表現(xiàn)類人行為。如圖2是軟件主流程圖。
軟件處理分為四種模式,復(fù)位狀態(tài)處于語音模式,通過語音識別與語音合成技術(shù)實現(xiàn)與用戶的對話交流。語音控制家電設(shè)備或者語音設(shè)置管家機器人進入跟蹤模式、避障模式、導(dǎo)航模式。如果處于跟蹤模式則在保證沒有近端障礙的前提下運動到被跟蹤用戶近處并識別用戶動作;如果處于避障模式則根據(jù)圖像分割避障算法的步驟控制機器人避開障礙物并規(guī)劃路徑,在其他模式如果有障礙物靠近機器人也會跳轉(zhuǎn)執(zhí)行避障算法;如果處于導(dǎo)航模式則保證沒有近端障礙的前提下擬合前方路徑中線并應(yīng)用PID控制機器人快速行徑到目標位置。
2.1 語音識別與合成處理
機器人運行后,首先停止運動進入語音模式,為避免誤識別,復(fù)位狀態(tài)Kinect v2處于監(jiān)聽鎖定狀態(tài),只有在識別到“Hello”、“Robot”等對話使能關(guān)鍵詞后才開啟語音對話模式,在該模式下用戶可以與機器人進行自然語言交流,語音控制家電開關(guān),或者語音改變機器人模式進入跟蹤、避障、導(dǎo)航模式。為進一步提高語音控制命令的準確性,每個命令語音都需要重復(fù)驗證:用戶聽到“Please repeat”回復(fù)語音后需要重復(fù)語音命令或者說“Yes”。而如果識別到的語音是對話語音則不需要驗證,通過Windows語音合成開發(fā)包將文本信息轉(zhuǎn)化為語音輸出實現(xiàn)自然交流。如果等待8 s沒有識別到任何語音信息則機器人重新進入監(jiān)聽鎖定狀態(tài)。語音識別流程如圖3所示。
機器人與用戶對話的內(nèi)容記錄在工程目錄下的speech.data文件中,speech文件存儲格式如表1所示。文件中每一行是一條語音對話內(nèi)容,前面是識別到的用戶語音,后面是機器人回應(yīng),如果是交流語音,中間用“|”隔開,回應(yīng)時直接取后面部分語音合成回復(fù);如果是命令語音,中間用“||”隔開,回應(yīng)時翻譯后面部分執(zhí)行相應(yīng)命令動作;如果沒有分隔符則不做任何回應(yīng)。在對話使能以后,當識別到speech文件中不存在的句子時,可以提示用戶是否需要存檔該對話內(nèi)容,如果用戶回答“Yes”,則可以在接下來的提示后錄入回復(fù)語句,即完成用戶自定義語音對話內(nèi)容。
2.2 深度圖像濾波
Kinect v2屬于主動式TOF深度傳感器,通過測量光脈沖之間的傳輸延遲時間來測量深度。一旦遇到透明玻璃、鏡子等影響光的正常散射的物體時,就會產(chǎn)生測量誤差[6]。隨著測量深度增加,深度圖像左右邊緣的噪點也不可避免,這些噪聲出現(xiàn)在物體邊緣以及圖像四角,影響圖像判斷。參考文獻[7]提出了基于改進的雙邊濾波算法,結(jié)合彩色圖像梯度域,運用聯(lián)合雙邊濾波算法對深度圖噪聲進行插值,該方法需要同時遍歷彩色圖與深度圖,會消耗大量處理時間;參考文獻[8]采用帶權(quán)值的全局優(yōu)化插值濾波方法,運用了復(fù)雜的權(quán)值計算算法,也會消耗大量計算時間。本設(shè)計系統(tǒng)運算量較大,不適合采用耗時的濾波算法。進一步分析深度圖像噪聲特點可知,噪聲為數(shù)據(jù)已知的椒鹽噪聲,本設(shè)計結(jié)合中值濾波的思想,應(yīng)用動態(tài)區(qū)域遍歷插值的方法,保證不會將圖像邊緣平滑掉,又能夠去除大部分噪聲,為下一步邊緣處理提供基礎(chǔ)。濾波公式如下:
xk=med(xk-n,xk-n+1,…,xk,…,xk+n)(1)
式中,xk-n…xk…xk+n為以噪點xk為中心的回形窗口中不為0的數(shù)據(jù),med表示求取數(shù)據(jù)中值。xk為深度值是0的噪點,首先在包圍該點的最小正方形區(qū)域(8個點組成)內(nèi)遍歷各點尋找非零點,若沒有找到,則擴大區(qū)域到外層更大的正方形區(qū)域,直到遍歷完一個極限層數(shù)。圖4所示為濾波效果圖。
2.3 自主避障及路徑規(guī)劃
根據(jù)深度數(shù)據(jù)分層著色得到深度彩圖,每個像素點按照與傳感器的距離由近及遠分別被著色為紅、綠、藍、淺藍、灰(在本文表現(xiàn)為灰度值的變化)。然后將深度彩圖均分為2行4列區(qū)域塊,如圖5所示。
控制邏輯占據(jù)的主要是Ⅱ、Ⅲ列數(shù)據(jù),表示視野的中間部分,這部分要夠?qū)挋C器人才能通過。圖像分割避障算法判斷步驟如下:
?。?)判斷Ⅱ、Ⅲ列有沒有出現(xiàn)紅色,如果沒有則轉(zhuǎn)到執(zhí)行(4),如果有紅色則判斷左轉(zhuǎn)標志或者右轉(zhuǎn)標志是否有置位,若有置位則執(zhí)行(3);
(2)比較Ⅰ、Ⅱ列區(qū)域的紅色面積之和與Ⅲ、Ⅳ列區(qū)域的紅色面積之和的大小,如果Ⅰ、Ⅱ列區(qū)域大于Ⅲ、Ⅳ列區(qū)域,則右轉(zhuǎn)標志置位,否則左轉(zhuǎn)標志置位,并記錄當前機器人方位值;
?。?)如果左轉(zhuǎn)標志置位則執(zhí)行左轉(zhuǎn),如果右轉(zhuǎn)標志置位則執(zhí)行右轉(zhuǎn),讀取當前方位值,如果與記錄值相等則交換左轉(zhuǎn)、右轉(zhuǎn)標志再執(zhí)行(5);
?。?)執(zhí)行前進,清零左轉(zhuǎn)標志、右轉(zhuǎn)標志;
?。?)控制流程結(jié)束,等待下一幀圖像處理。
上述控制邏輯能有效控制機器人自主避障及路徑規(guī)劃,在執(zhí)行一次左轉(zhuǎn)或者右轉(zhuǎn)命令后會一直沿著該方向轉(zhuǎn)動,直到可以前進時才清零標志,避免了管家機器人陷入左轉(zhuǎn)一次右轉(zhuǎn)一次的死循環(huán)。在轉(zhuǎn)向時讀取方位值,當旋轉(zhuǎn)超過一圈時就會反向旋轉(zhuǎn)。
為了給傳感器足夠的前瞻性,必然在近端產(chǎn)生小區(qū)域盲區(qū)。因此對于比較低的物品,如果在綠色背景中有藍色區(qū)域出現(xiàn),并且該藍色區(qū)域面積超過閾值,則判定為低障礙物,當做紅色障礙避開,預(yù)測性避開盲區(qū)障礙物。同時,在機器人四周還安置紅外避障模塊,在盲區(qū)突然進入低障礙(如貓)時也能檢測到并立即停止運動。
2.4 邊緣提取與路徑擬合
在自主避障模式中,依靠深度彩圖控制機器人前進,此過程基于近端紅色危險區(qū)規(guī)避原則實現(xiàn),速度不能太快,不適合遠距離行徑。因此,在近端沒有紅色障礙物時,通過路徑邊緣提取和中線擬合得到路徑中線,再運用控制學科經(jīng)典的PID控制算法使機器人快速而準確的沿路徑中線前進。
圖像邊緣提取算法中,圖像的梯度對應(yīng)于圖像灰度值變化最快的方向,基于一階導(dǎo)數(shù)算子的邊緣檢測算法需要求得像素點處的灰度梯度[9]。
|f(x,y)|=|f(x,y+1)-f(x,y)|+|f(x+1,y)-f(x,y)|(2)
其中,f(x,y)為像素點(x,y)處的灰度梯度,f(x,y)為(x,y)處灰度值。式(2)可求得像素點處橫向和縱向上的灰度差之和?;谶@種思想的衍生算法包括Roberts算子、Laplacian算子等[10]。但從式(2)也可以看出這類算法對于噪聲敏感,所以本設(shè)計采用該公式的一種變種。
這里,f(x,y)為像素點(x,y)處的深度值梯度, f(x,y)為(x,y)處深度值,
fx(x,y)為橫向差值的梯度,
fy(x,y)為縱向差值的梯度。通過計算二階梯度,可以有效避免單個噪點帶來的干擾。得到場景內(nèi)物品的邊緣后,從圖像每一行的中點向兩邊遍歷尋找路徑邊緣,提取路徑邊線,再根據(jù)左右邊線求平均就可以得到擬合的路徑中線。圖6中右邊部分標出的中線就是擬合路徑的中線。
本算法應(yīng)用自適應(yīng)路徑擬合的方法,只在有效路徑長度(綠色區(qū)域)內(nèi)擬合路徑中線,超出范圍不作為控制的依據(jù)。主要公式如下:
其中,mid為擬合路徑中線的橫坐標值,n為路徑的有效長度,xl為每行數(shù)據(jù)左邊緣線的橫坐標值,xr為右邊緣線橫坐標值,width為圖像寬度,δ為擬合中線橫坐標與圖像中心線橫坐標的偏差,此值作為PID控制器的輸入。PID輸出命令控制兩個電機的轉(zhuǎn)速,即控制機器人轉(zhuǎn)向和運動速度。
2.5 用戶跟蹤與動作識別
Kinect v2帶有可直接獲取的用戶骨骼數(shù)據(jù),由骨骼數(shù)據(jù)在圖像中的移動規(guī)律易于實現(xiàn)用戶跟蹤。在跟蹤模式下,機器人運動到距離用戶1.5 m的近距離位置停止,為避免在臨界值產(chǎn)生抖動,還做了容差處理,即距離值大于1.7 m才繼續(xù)向前跟進,距離值小于1.3 m才向后退。在近距離位置自動開啟動作識別功能。
利用骨骼數(shù)據(jù)可實現(xiàn)較為復(fù)雜的連續(xù)動作識別,本設(shè)計應(yīng)用了姿勢序列有限狀態(tài)機動作識別的方法[11],并對該方法進行了擴充。Kinect v2可以辨別拇指與手掌相對關(guān)系并在官方數(shù)據(jù)中提供了握拳和張開手掌兩種姿勢,通過局部扣取手掌深度圖并邊緣提取捕獲指尖關(guān)鍵點,記錄指尖動作軌跡識別手指動作。系統(tǒng)最終實現(xiàn)了右手向右展開、左手向左展開、右手食指在胸前揮動動作的識別。
3 結(jié)論
應(yīng)用Kinect v2體感交互設(shè)備,結(jié)合嵌入式技術(shù)及深度圖像處理算法,實現(xiàn)了能理解用戶交互意圖,幫助用戶控制家電,復(fù)雜環(huán)境動態(tài)規(guī)劃路徑,實時跟蹤用戶與識別手勢的智慧家庭管家機器人。經(jīng)實際測試,該機器人可以與用戶進行簡單自然語言交流,語音控制家電開關(guān),在復(fù)雜環(huán)境自主避障及搜索路徑,跟蹤用戶并識別用戶手勢,其智能化水平遠高于現(xiàn)有智能家居產(chǎn)品。該智慧家庭管家機器人運行穩(wěn)定,圖像刷新率在每秒30幀左右,經(jīng)處理的Kinect語音識別準確率超過80%,動作識別準確率超過90%,符合家用機器人要求,可作為智能家居機器人探索方向。
雖然系統(tǒng)的功能基本實現(xiàn),但仍存在提升空間,可從下面幾點考慮改進:(1)語音對話實現(xiàn)智能學習功能。只是簡單的查表回復(fù)語音不能滿足用戶聊天需求,在聯(lián)網(wǎng)狀態(tài)下可與網(wǎng)絡(luò)聊天機器人結(jié)合,真正實現(xiàn)智能聊天,甚至可以成為小孩子的百科全書。(2)基于人物跟隨與Kinect v2判別聲源方向的能力,設(shè)計動態(tài)監(jiān)控功能,為上班族了解家庭情況提供更直接、更全方位的途徑。(3)目前實現(xiàn)的路徑規(guī)劃僅實現(xiàn)了跟蹤用戶時迅速靠近用戶以及尋找到較長距離可行路徑并快速移動,可以參閱參考文獻[12-13]在室內(nèi)環(huán)境構(gòu)建家庭地圖,從而實現(xiàn)定點移動。
參考文獻
[1] 魏志蓮,汪劍鳴,竇汝振,等.一種新的室內(nèi)機器人手勢指令識別系統(tǒng)[J].天津工業(yè)大學學報,2010,29(1):72-76.
[2] 余振中,鄭為湊,劉鑫,等.基于Kinect的移動機器人實時局部路徑規(guī)劃[J].計算機工程,2013,39(4):243-247.
[3] FABIAN J, YOUNG T, JONES J C P, et al. Integrating the Microsoft Kinect with simulink: real-time object tracking example[J]. IEEE-ASME Transactions on Mechatronics,2014,19(1):249-257.
[4] Xing Guansheng, Tian Shuangna, Sun Hexu, et al. People-following system design for mobile robots using Kinect sensor[C]. 25th Control and Decision Corference(CCDC), Guiyang,2013:3190-3194.
[5] 陳敬德,趙文麗,梁洪濤,等.基于Kinect的機器人控制系統(tǒng)[J].電子設(shè)計工程,2014,22(5):81-83.
[6] 陳曉明,蔣樂天,應(yīng)忍冬.基于Kinect深度信息的實時三維重建和濾波算法研究[J].計算機應(yīng)用研究,2013,30(4):1216-1218.
[7] 李應(yīng)彬,馮杰,張華熊,等.基于改進雙邊濾波的Kinect深度圖像空洞修復(fù)算法研究[J].工業(yè)控制計算機,2013,26(11):105-106.
[8] 劉金榮,李淳梵,歐陽建權(quán),等.基于聯(lián)合雙邊濾波的深度圖像增強算法[J].計算機工程,2014,40(3):249-252.
[9] 林源晟.基于FPGA的圖像邊緣檢測系統(tǒng)設(shè)計[D].西安:西安電子科技大學,2014.
[10] 董梁,王忠民.圖像邊緣檢測算法研究[J].現(xiàn)代電子技術(shù),2007,30(15):179-180.
[11] 林水強,吳亞東,余芳,等.姿勢序列有限狀態(tài)機動作識別方法[J].計算機輔助設(shè)計與圖形學學報,2014,26(9):1403-1411.
[12] 李海,陳啟軍.基于全景視覺的移動機器人地圖創(chuàng)建與定位[J].控制與決策,2014(2):215-220.
[13] 孔令富,高勝男,吳培良.面向?qū)ο蟮募彝ト⒌貓D表示與構(gòu)建[J].計算機工程與設(shè)計,2013,34(1):353-359.