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