周 林,高 亮,鐘浩然,董昊臻
(華中科技大學 數(shù)字制造裝備與技術國家重點實驗室,武漢 430074)
隨著中國制造2025戰(zhàn)略的不斷推進,視覺技術得到了快速發(fā)展,基于視覺傳感器的運動追蹤技術在人機交互領域得到了廣泛應用[1-2]。常見的交互型機器人[3]體積較小,自由度較少,對輸入的運動數(shù)據(jù)精度要求不高。而對于體積較大的工業(yè)機器人(如機械臂),需要高精度的運動數(shù)據(jù)作為信息輸入來實現(xiàn)其對人上肢動作的模仿。為了減小關節(jié)點運動數(shù)據(jù)的異常值對人機交互運動的影響,研究并改進上肢關節(jié)點的濾波方法[4-5]具有重要意義。
人體上肢關節(jié)點的濾波方法有很多種,比較常見的有卡爾曼濾波[6-7]和粒子濾波[8-9]等。文獻[10]在解決移動機械臂動態(tài)抓取的問題中,通過卡爾曼濾波對目標物體位置進行預測,對動態(tài)目標的滯后進行了補償,提高了對目標物體的跟蹤精度。文獻[11]提出了基于Beowulf機群中改進的粒子濾波新算法,降低了粒子濾波的計算時間,并將該方法應用于人體運動跟蹤中。文獻[12]使用Kinect對乒乓球手正手攻球進行動作采集,采用了二次指數(shù)平滑算法來對原始數(shù)據(jù)進行降噪處理,存在滯后問題,文中通過預測值減小濾波延遲會影響濾波的精度。文獻[13]提出了一種基于質量評價的運動跟蹤數(shù)據(jù)融合方法,使用慣性傳感器的測量數(shù)據(jù)來補償卡爾曼濾波的觀測誤差,提高了運動跟蹤系統(tǒng)的穩(wěn)定性。文獻[14]在對人體上肢關節(jié)點追蹤時,采用了分塊采樣的方法,消除了使用粒子濾波進行高維空間數(shù)據(jù)跟蹤時需要額外粒子的問題,提高了濾波速度。文獻[15]提出了一種自適應粒子濾波方法,通過自適應來選擇噪聲方差和粒子數(shù)量,該方法用于跳水運動的視頻跟蹤,降低了誤差率。文獻[16]提到了使用無跡卡爾曼濾波方法進行人體關節(jié)運動檢測,相比于傳統(tǒng)卡爾曼濾波和擴展卡爾曼濾波,該方法精度更高。對比常見的卡爾曼濾波和粒子濾波方法,卡爾曼濾波在處理線性問題上具有處理速度快的優(yōu)點。而對于非線性問題,如果卡爾曼濾波的預測噪聲協(xié)方差矩陣Q和測量噪聲協(xié)方差矩陣R取值不當,濾波效果會變得很差[17]。粒子濾波受環(huán)境的非線性因素的影響較小,在人體運動跟蹤領域的應用多,但是這種方法需要大量樣本來保障濾波精度,而樣本數(shù)的增加會造成濾波時間的增加[18]。
針對傳統(tǒng)濾波方法在濾波精度、濾波時間和濾波穩(wěn)定性上難以兼顧的問題,本文提出了一種基于相似度函數(shù)的改進關節(jié)點閾值濾波方法。和以往的研究相比,本文的主要貢獻有以下3點:①提出了關節(jié)點相似度函數(shù),通過前景輪廓相似度、肢體比例相似度、分布相似度3個指標對關節(jié)點數(shù)據(jù)的可信度進行描述;②通過改進的閾值濾波方法進行數(shù)據(jù)篩選,提高了濾波精度的同時,濾波耗時較短,穩(wěn)定性較好;③將濾波后的運動數(shù)據(jù)應用在工業(yè)機器人平臺上完成了人機交互實驗,驗證了方法的有效性。
Kinect對人體的運動追蹤主要是通過關節(jié)點來描述[19]。Kinect V2.0可以追蹤一個用戶身上的25個關節(jié)點,對這25個關節(jié)點標記如圖1所示。
圖1 Kinect追蹤人體25個關節(jié)點坐標Fig.1 Coordinates of 25 human joints tracking by Kinect
一段時間內(nèi),第n幀的關節(jié)點的空間位置信息可以通過Kinect的3D坐標P表示。
P=pij(k)
(1)
(1)式中:i代表關節(jié)編號,i=1,2,…,25;j代表三維坐標,j=x,y,z;k=1,2,…,n。
Kinect在采集關節(jié)點空間坐標的過程中,容易受到硬件性能不穩(wěn)定或者周圍環(huán)境干擾項(光線強弱,透明和光滑物體等)的影響,采集到的深度圖像難以反映人真實的運動情況,造成Kinect輸出的被跟蹤者的關節(jié)點運動數(shù)據(jù)不準確。此外,人在運動過程中的動作不連貫以及身體部位之間的重疊和遮擋等問題,也容易產(chǎn)生關節(jié)點異常值。常見的濾波方法大多采用預測或者擬合的方式,通過關節(jié)點一段時間內(nèi)的運動數(shù)據(jù),建立數(shù)學模型來預測下一階段的運動狀態(tài)。這種方法存在滯后誤差[20]和預測誤差[21],難以準確地表達關節(jié)點真實運動情況。對擬合方程或者預測方程的要求較高,難以適應不同環(huán)境。
本文對提取的每幀圖像中的關節(jié)點數(shù)據(jù)設定評價體系,提出了關節(jié)點相似度函數(shù)來對數(shù)據(jù)的有效性進行描述。涉及到的描述指標需要滿足3個特征:①方便采集;②具有普適性;③容易計算。本文選取前景輪廓相似度LF,肢體比例相似度LB和分布相似度LJ3個指標來構建關節(jié)點相似度函數(shù)。
Kinect對上肢進行關節(jié)點坐標提取之前,首先要將人從深度圖像的背景中分離出來,本文使用的是視頻的前景對象分割方法,即從連續(xù)的視頻幀中分離出特定的運動對象[22-24]。采用Kinect2.0 SDK中的MapDepthFrameToColorSpace函數(shù),將深度幀映射到彩色空間,然后過濾掉背景圖像,得到前景圖像,如圖2所示。
圖2 深度圖像和前景圖像Fig.2 Depth image and foreground image
前景輪廓相似度的含義是經(jīng)過前景分割后的前景輪廓與原來的深度圖像幀中輪廓的相似程度,反映了前景分割中目標對象輪廓和背景分離的準確度。從截取的視頻幀中取前景圖像,將圖像投影到二維平面。對第i幀的二維圖像隨機選取Nf(i)個點,比較其和深度圖中輪廓的重合點數(shù)Nc(i),得到前景輪廓相似度LF的表達式為
(2)
(2)式中,LF越大,表示對前景輪廓中目標對象分離的準確度越高。
為了提高Kinect跟蹤人體運動的的魯棒性,定義了關節(jié)點間距的比例相似度函數(shù)。人的上肢可看作由13個關節(jié)點組成的連桿模型,相鄰3個關節(jié)點可以組成2個連桿,相鄰兩連桿之間的間距之比與真實人體上肢的對應長度比例的相似程度即為肢體比例相似度函數(shù),如圖3所示。
圖3 人體上肢關節(jié)點連桿模型Fig.3 Model of upper body joints
人體上肢對應的長度比例可以通過實際測量和計算得到。為了簡化計算,將上肢視為左右對稱模型。以P0為原點,以模型左半部分為例,共有P0~P67個點,構成6個連桿,測量相鄰連桿間的長度比in。
(3)
測量人體左半部分實際尺寸比例結果如表1所示。人體上肢的右半部分跟左半部分對稱,長度比相同。
表1 人體實際尺寸比例
(4)
對視頻幀圖像進行前景分割的過程中,關節(jié)點在深度圖像中的位置容易受到光照、Kinect擺放不水平等外界因素的影響,產(chǎn)生偏移[25-26]。定義分布相似度函數(shù)來描述關節(jié)點在彩色圖像和前景圖像中的位置分布的相似性。從視頻幀彩色圖像中截取圖中5個固定區(qū)域,比較其和前景圖像中同一區(qū)域的關節(jié)點數(shù)目及位置,如圖4所示。
(5)
對Kinect獲取到的每幀深度圖像的關節(jié)點求解相似度函數(shù)值后,對關節(jié)點的異常值數(shù)據(jù)進行篩選。相似度函數(shù)值越高,說明該關節(jié)點的數(shù)據(jù)可信度越高。傳統(tǒng)的濾波方法在未知數(shù)據(jù)可信度的情況下,通常會采用擬合或者預測的數(shù)據(jù)來替代模糊不清的數(shù)據(jù)。在對數(shù)據(jù)精度要求和適用性要求不高的情況下,這種方式能夠滿足操作者的使用要求。但是擬合和預測的數(shù)據(jù)具有不確定性,難以客觀地反映人體運動情況。而閾值篩選法可以通過縮小時間間隔,增加采集樣本數(shù)的方式來篩選出數(shù)據(jù)集中的有效數(shù)據(jù),并濾除無效數(shù)據(jù),提高濾波精度。本文結合關節(jié)點相似度函數(shù)對閾值篩選法進行改進,提高了濾波過程的魯棒性和在不同環(huán)境下的濾波適應性。
為了對關節(jié)點相似度的優(yōu)劣進行評價,定義了關節(jié)點相似度函數(shù)。使用前景輪廓相似度LF、肢體比例相似度LB和分布相似度LJ3個指標來檢驗某一時刻輸出的關節(jié)點數(shù)據(jù)是否達到濾波要求。這3個評價指標相互獨立,各自對關節(jié)點可信程度進行描述,且互不影響。因此,可以通過賦權值的方法對整體的相似度進行描述。相似度函數(shù)L的計算公式為
L=δ1LF+δ2LB+δ3LJ
(6)
(7)
當δ1=1時,只考慮前景輪廓相似度的影響,εd1=0.125 867。
圖5 肘關節(jié)濾波結果1Fig.5 Filtering results of elbow joint 1
設δ1=0,δ2=1,δ3=0,只考慮肢體比例相似度的影響,此時相似度函數(shù)可以簡化為L=LB。采集此時的肘關節(jié)點的測量值和基于相似度的濾波值,跟蹤曲線如圖6所示,關節(jié)點坐標平均偏差εd2=0.302 783。
設δ1=0,δ2=0,δ3=1,只考慮分布相似度函數(shù)的影響,此時相似度函數(shù)可以簡化為L=LJ。采集此時的肘關節(jié)點的測量值和基于相似度的濾波值,跟蹤曲線如圖7所示,關節(jié)點坐標平均偏差εd3=0.122 908。
圖6 肘關節(jié)濾波結果2Fig.6 Filtering results of elbow joint 2
圖7 肘關節(jié)濾波結果3Fig.7 Filtering results of elbow joint 3
比較實驗數(shù)據(jù)可知,前景輪廓相似度函數(shù)LF和分布相似度函數(shù)LJ組的平均偏差較小,說明它們對相似度函數(shù)的影響權重更大,且二者的影響偏差相近。因此,取δ1=δ3,根據(jù)δ2取值的不同設置多個分組,記錄各組的關節(jié)點誤差。通過實驗結果擬合出誤差和對應權值的分布曲線如圖8所示,列出了δ2∈[0.1,0.9]的9組結果,相鄰組間δ2間隔為0.1。分析實驗結果發(fā)現(xiàn),δ2大于0.4時誤差過大,不適宜選用。δ2=0.2時關節(jié)點濾波的效果較好,本文中選取的權值δ=(0.4,0.2,0.4)。
圖8 權值選取實驗Fig.8 Experiment of selecting the weight
使用閾值篩選法進行濾波之前通常需要設定一個預期值,達到預期值說明該數(shù)據(jù)是達標的,輸出該數(shù)據(jù);未達到說明該數(shù)據(jù)不達標,需要進行篩除。閾值越高,濾波的計算耗時也越長,考慮實際情況中采用的計算機性能,選取閾值為0.9,可以保障30 Hz下濾波過程具有較小時延。 改進的閾值篩選法濾波的流程如圖9所示。讀入關節(jié)點P,計算該關節(jié)點的相似度函數(shù)L。設定閾值LT=0.9(相似度為90%)。如果讀入的關節(jié)點的相似度函數(shù)值小于閾值0.9,說明沒有滿足濾波條件,篩除這些關節(jié)點;如果大于這個閾值,則與上一次濾波結果比較,取相似度函數(shù)值更大的關節(jié)點數(shù)據(jù)作為濾波結果輸出。
圖9 改進的閾值篩選法Fig.9 Improved threshold filtering method
設置濾波頻率30 Hz,Kinect深度相機水平放置,從人進入視野范圍開始,對肢體進行運動追蹤,構建了人體運動模型,并輸出了關節(jié)點運動數(shù)據(jù)至濾波器,濾波器對運動數(shù)據(jù)進行篩選。圖10為濾波后追蹤到的人體動作序列。可以看出,濾波跟蹤到的人體動作序列較為清晰,能夠完整反映人體骨架結構。圖11為100組腕關節(jié)點的濾波誤差,誤差均值為8%左右,返回一組濾波結果耗時在100 ms左右。
圖10 人體動作序列濾波Fig.10 Filtering results of human body motion
圖11 腕關節(jié)濾波誤差Fig.11 Wrist filtering error
采用LPMS-B2穿戴式傳感器測量關節(jié)角度,作為測量數(shù)據(jù)來和濾波數(shù)據(jù)進行比較,如圖12所示。使用傳感器測量人體關節(jié)角度變化的精度在靜態(tài)下可以達到0.5°,在動態(tài)下可以達到2°。操作者穿戴傳感器后,建立了右臂在空間中的3維模型。
圖12 傳感器測量角度數(shù)據(jù)Fig.12 Joint angle data measured by sensors
(8)
其對比結果如表2所示,使用本文提出的方法,采集到的關節(jié)角數(shù)據(jù)誤差小于10%,可以滿足機械臂模仿人臂運動的控制數(shù)據(jù)的精度要求。
表2 傳感器測量結果和濾波結果對比
比較傳統(tǒng)的卡爾曼濾波、無跡卡爾曼濾波、粒子濾波、自適應粒子濾波和本文提出的濾波方法對上肢肘關節(jié)角的平均跟蹤誤差,如表3所示。由表3可見,本文提出的濾波方法的精度最高,優(yōu)于常見的卡爾曼濾波和粒子濾波方法,精度可以達到8.49°;誤差均方差僅次于粒子濾波,且相差不大,在濾波過程中的誤差的浮動性較小,具有良好的穩(wěn)定性;濾波耗時僅長于經(jīng)典卡爾曼濾波,遠低于粒子濾波,濾波過程中的時效性較好。因此,本文提出的上肢關節(jié)點濾波方法的綜合性能在人體不同姿態(tài)下的表現(xiàn)較為穩(wěn)定,適用于多種場景下的運動追蹤。
搭建人機運動傳遞框架如圖13所示。在獲取了關節(jié)角的運動數(shù)據(jù)之后,可以通過運動傳遞模型,將人手臂的動作映射到機械臂運動空間,并控制機械臂的運動。Kinect作為信息輸入端口采集關節(jié)點的空間坐標,使用空間向量法來計算各關節(jié)角度,本文提出的基于相似度函數(shù)的改進關節(jié)點閾值濾波方法提高了數(shù)據(jù)的可靠性。
在工業(yè)機器人操作平臺上進行了人機運動交互實驗,UR5(universal robots 5)機械臂基于本文方法濾波后的關節(jié)點運動數(shù)據(jù)進行抓取實驗。通過分解的抓取動作的完成情況來評估所提出的濾波方法的效果。使用的硬件系統(tǒng)主要包括UR5機械臂,Kinect V2.0深度相機,靈巧機械手爪。骨骼追蹤和關節(jié)點獲取主要是通過OpenNI來實現(xiàn),機械臂運動控制通過C++控制程序實現(xiàn)。Kinect追蹤人體的運動序列,使用本文提出的濾波方法處理數(shù)據(jù)作為運動信息輸入,指引機械臂模仿人的手臂動作完成抓取實驗,如圖14所示。
表3 肘關節(jié)θ不同角度下的平均跟蹤誤差
圖13 人機運動傳遞框架Fig.13 Human-robot motion transmission framework
圖14 UR5機械臂實驗Fig.14 UR5 robotic arm experiment
采用本文提出的濾波方法和Kinect自帶的關節(jié)點濾波器進行對比,對6種動作類型各實驗50次,統(tǒng)計實驗的完成情況如表4所示。實驗結果表明,相比于Kinect默認的濾波器(卡爾曼濾波器和粒子濾波器),本文提出的濾波方法對機械臂各類動作的完成率都有較大提升。這是因為Kinect SDK中的濾波器濾波精度不夠,且沒有專門針對人和機械臂交互的這一場景的關節(jié)點濾波模型,因此,對機械臂實驗的濾波效果不好。通過實驗,驗證了使用基于相似度函數(shù)的改進關節(jié)點閾值濾波方法處理后的數(shù)據(jù),能更好地完成人機交互實驗。
表4 機械臂動作完成情況
為了減少運動數(shù)據(jù)采集過程中的外界因素干擾,提高數(shù)據(jù)篩選的魯棒性和準確性,本文提出了一種基于相似度函數(shù)的上肢關節(jié)點改進閾值濾波法。通過前景輪廓相似度、肢體比例相似度和分布相似度3個評價指標建立了關節(jié)點相似度函數(shù),基于相似度函數(shù)設定了相似度閾值對關節(jié)點數(shù)據(jù)進行篩選。本文方法能夠適應不同環(huán)境下的關節(jié)點濾波,減少光照、透明物體、光滑表面等環(huán)境噪聲對Kinect的影響,濾除不符合要求的運動數(shù)據(jù)。跟傳統(tǒng)方法進行對比,具有誤差小,穩(wěn)定性高,耗時少的優(yōu)點。實驗結果表明,本文方法具有很好的適用性和可移植性,可以廣泛應用于人機交互、仿人機器人、運動物體追蹤等領域的研究。