馬志軍,楊俊友,孫義真
(沈陽工業(yè)大學,遼寧 沈陽110000)
隨著老齡化越來越嚴重,家庭服務機器人越來越受到人們的歡迎,同時對于機器人的研究越來越多,其中機器人視覺研究十分熱門。
FROME等提出了3D形狀描述子(3D Shape Context),該算法計算復雜并且必須在關(guān)鍵點計算描述子。RUSU等提出了快速點特征直方(Fast PointFeature Histogram,F(xiàn)PFH)[2],它對點云具有旋轉(zhuǎn)平移不變性,但是計算復雜度較高。近幾年RUSU又提出全局特征視點特征直方圖(View Feature Histogram,VFH)。該特征具有旋轉(zhuǎn)及縮放不變性,但識別中會受到遮擋的影響。針對以上問題,本文提出了點云特征描述子融合的算法(VFH-FPFH)。該算法既有VFH的高效性,同時也包含了FPFH特征較高的魯棒性。
本文采用的分割算法主要包括RANSAC平面分割[4]和歐式聚類分割[5]。
RANSAC算法主要分割掉場景點云中平面部分,本文主要分割支撐平面和背景平面部分。算法原理為:①設(shè)平面方程ax+by+zx+d=0,點云數(shù)據(jù)中任意三個點P{pi,pj,pk};②選取點云數(shù)據(jù)中多組點,求取A·B=0的最優(yōu)解為B=Bx,得到擬合平面ABx=0;③輸入點云數(shù)據(jù),滿足擬合平面的為內(nèi)點,否則為外點,保留內(nèi)點。
經(jīng)過平面分割處理后,還需要對點云進行聚類分割,本文利用歐式聚類分割算法對點云進行分割。
為了獲得最好的聚類效果,對歐式聚類分割算法參數(shù)進行設(shè)置,近鄰搜索半徑設(shè)為0.02,聚類點數(shù)的范圍為[100,1 000]。
FPFH的算法原理為:FPFH只計算查詢點和其鄰域點的PFH值,統(tǒng)計為SPFH,然后再計算鄰域點的SPFH值,最后對鄰域點SPFH進行加權(quán)計算:
式(1)中:ωi為查詢點P到鄰域點Pi的距離。
此外,基于FPFH特征識別,不受遮擋的影響,還可以求取點云配準的6D位姿。但是FPFH計算復雜,導致識別時間過長,在實際應用中依然受限。
視點特征直方圖(VFH)屬于全局特征描述子,VFH由FPFH演變而來,主要的改進是加入視點方向,如圖1所示。算法原理為:VFH以整個點云為對象,選取點云中心點Pi為查詢點,然后選點云的采樣點為鄰域點,計算點云的FPFH,同時將視點方向融入到計算中:
計算完五個特征元素cosα、cosβ、θ、cosφ、d,分別統(tǒng)計每個元素在不同區(qū)間的百分比,最終完成直方圖的構(gòu)建。
VFH具有旋轉(zhuǎn)不變性和縮放不變性。VFH的識別速度比局部特征PFH和FPFH快很多。雖然識別速度快,但是VFH沿視覺方向具有旋轉(zhuǎn)不變性,無法進行6D位姿估計。VFH特征描述如圖1所示。
圖1 VFH特征描述
綜上,本文采用局部特征和全局特征融合方法,完成識別和位姿估計。
模型庫的建立包括深度相機采集點云、點云濾波、點云分割、提取點云特征。具體步驟如下:①只有目標物體的場景下,對目標進行多角度拍攝,然后對拍攝的點云進行濾波和分割處理,得到只有目標物體的點云。計算每個角度目標點云的特征描述子VFH和FPFH,然后將特征數(shù)據(jù)和對應的點云數(shù)據(jù)放到同一個文件夾data下,最后轉(zhuǎn)換為FLANN格式[6];②為了加快搜尋和匹配速度,將FLANN格式數(shù)據(jù)轉(zhuǎn)換為Kd-tree結(jié)構(gòu)[7];③設(shè)卡方距離閾值為200,近鄰搜索值為16,對測試點云進行搜索,結(jié)果紅色點云表示不滿足要求,綠色點云表示在參數(shù)范圍內(nèi),測試表明運行算法能夠滿足識別要求。
本文采用ubuntu 16.04系統(tǒng),配置PCL 1.8.0函數(shù)庫,ROS-kinetic操作環(huán)境。硬件為Intel(R)Core(TM)i5-4200H CPU,16 G內(nèi)存,RealSense深度相機,實驗室“小粉”機器人,如圖2所示。
圖2 “小粉”機器人
本實驗選取茶葉盒為目標對象,分別在茶葉盒簡單場景、茶葉盒和其他物體組合復雜場景、茶葉盒被類似茶葉盒遮擋復雜場景三種場景下分別進行實驗。
在線識別過程和模型庫建立過程有很多相同的部分,主要包括深度相機采集場景點云、點云濾波、點云分割、點云特征計算、場景點云和模型庫點云搜索匹配、目標物體位姿估計。具體步驟如下。
第一,深度相機采集包含目標物體的場景點云。
第二,利用直通濾波去除場景點云中離散點,再通過體素濾波算法降低點云密度。
第三,通過平面分割算法分割掉平面點云,然后利用歐式聚類分割算法對剩余點云進行聚類分割。
第四,計算聚類分割后每個點云的VFH特征,利用最近鄰算法[7](K-nearest neighbor)在模型庫中對每個聚類的VFH特征進行匹配搜索。設(shè)卡方距離閾值為D,模型點云Pi和場景點云Qi卡方距離為Di,若Di>D,則標為紅色,否則標為綠色,小于閾值D的卡方值形成集合P{D1,D2,…,Dk},并對集合中的卡方距離按從小到大排序。設(shè)最小和最大卡方距離分別為Dmin、Dmax,任意小值為ε。若Dmin<<Dk且min≠k,則Dmin對應的聚類為目標點云,進行第六步;若Dmax-Dmin=ε,則表明場景中存在目標物遮擋和目標物相似的情況,進行第五步。
第五,分別計算集合對應的點云和模型點云的FPFH特征,進行配準識別。
第六,求取模型點云Pj和目標點云Qj的特征FPFH,利用SAC-IA+FPFH和ICP+FPFH分別求得初始變換T1和精確變換T2,則配準的位姿變換Ti=T1·T2。
第七,如果模型點云相對于相機的位姿轉(zhuǎn)換關(guān)系為Tj,則目標點云相對于相機的位姿為T=Ti·Tj。
如圖3、圖4、圖5三種場景,分別表示茶葉盒、茶葉盒與其他物體組合、茶葉盒被其他物體遮擋三種場景的識別結(jié)果,點云圖中地面上密度較大的點云集為識別結(jié)果。圖3表示只有茶葉盒的簡單場景,圖4表示茶葉盒在復雜環(huán)境中。對比圖3和圖4的實驗環(huán)境,圖4中目標物體周圍的物體對識別產(chǎn)生了一定的干擾。對比圖4和圖5的實驗環(huán)境,圖5中除了擺放了較多的物體,還存在目標物被遮擋的現(xiàn)象。上述三種場景基本涵蓋了家庭環(huán)境中雜亂、遮擋、相似物等問題。
圖4 茶葉盒和其他物體組合圖
圖5 茶葉盒被類似茶葉盒遮擋
表1是在無遮擋場景中,通過FPFH、VFH、本文算法三種算法,對單物(只有茶葉盒)和多物(茶葉盒和其他物體組合)兩類場景不同內(nèi)容進行200次識別實驗,結(jié)果發(fā)現(xiàn)本文算法(VFH+FPFH)識別率最高。
表1 無遮擋場景
表2是在遮擋場景中,通過FPFH、VFH、本文算法三種算法,對多物體(不遮擋組合)和多物(遮擋組合)兩種場景進行200次實驗,發(fā)現(xiàn)本文的算法識別率最高,綜合表1和表2,說明本文算法識別率最高。
表2 遮擋場景
為了讓服務機器人在復雜的家庭環(huán)境下高效地識別和定位物體,本文提出了特征描述子融合(VFH-FPFH)的方法,當目標物體沒有被遮擋和被類似物干擾時,VFH能夠快速識別;當目標物遇到干擾和遮擋時,基于FPFH不受遮擋影響的特性繼續(xù)識別,最終完成目標物的識別。相比于VFH和FPFH識別算法,復雜場景下本文算法識別率分別提高了6%和8%。實驗結(jié)果表明本文算法有很強的魯棒性和高效性,能夠滿足服務機器人在家庭環(huán)境下的識別需求。未來計劃將本文算法應用于服務機器人的識別抓取中。