梁 悅
(中船重工第七一三研究所,鄭州 450000)
遙操作機器人系統(tǒng)主要用于遠(yuǎn)程遙控機器人,虛擬現(xiàn)實(VR)技術(shù)的出現(xiàn)為再現(xiàn)機器人所在操作環(huán)境創(chuàng)造了條件,操作者猶如身臨其境一般的感受機器人所在的操作環(huán)境,從而做出更準(zhǔn)確的判斷。傳統(tǒng)的虛擬現(xiàn)實技術(shù)通常采用的是預(yù)先建模的方式,也即在機器人開始操作之前就已經(jīng)將機器人所在終端的三維模型建好,這種方法適合應(yīng)用在已知機器人所在的操作環(huán)境的情況下,但對于大部分遙操作機器人而言,它們的操作環(huán)境是不可預(yù)知的,這就需要引入新的幾何建模的方法。本文引入Kinect傳感器,通過傳感器獲取的深度信息和圖像信息,進(jìn)行點云的匹配,最終實現(xiàn)機器人所在操作環(huán)境的三維重構(gòu)。
引入雙目和多目視覺技術(shù),獲取多個攝像機反饋的圖像信息,通過對多角度圖像信息進(jìn)行信息匹配,可以獲取點云數(shù)據(jù),從而重塑三維環(huán)境。Newcombe等人[1]用單目攝像機獲取場景圖像,并通過GPU和光流技術(shù)生成接近真是表面的密集點云,能反應(yīng)真實的幾何結(jié)構(gòu)。中科院自動化研究所在三維重建技術(shù)研究中,利用雙目視覺技術(shù),通過對圖像信息的提取以及關(guān)鍵點自動匹配等手段形成完整的物體3D結(jié)構(gòu)[2]。但由于視頻信息是二維信息,多角度的圖像在點云匹配時容易出現(xiàn)錯誤匹配,導(dǎo)致重建三維環(huán)境時出現(xiàn)錯誤。
在近些年的研究中發(fā)現(xiàn),考慮將光學(xué)視覺系統(tǒng)和位置傳感器結(jié)合來獲取更為精確的三維信息,常見的獲取位置信息的辦法有激光測距和聲波測距的方法。超聲傳播測距和激光測距原理相似,都是利用激光或聲波在水中的傳播速度和時間來進(jìn)行距離的測算,差別在于激光測距傳感器測量精度更高,測量范圍更廣,報錯率更低,但相應(yīng)的激光測距傳感器價格也就更高。
隨著微軟推出Kinect,研究發(fā)現(xiàn)Kinect傳感器的攝像頭不僅可以獲得二維RGB圖片信息,同時可以獲得深度信息,且相較之下Kinect傳感器價格更便宜,這就為虛擬現(xiàn)實環(huán)境的重塑提供了便利。本文將對Kinect傳感器在重塑三維環(huán)境的過程中獲取深度信息、點云匹配和顏色檢測進(jìn)行實驗。
圖1 機器人操作環(huán)境三維重構(gòu)流程圖
Kinect與普通攝像頭相比,優(yōu)勢在于Kinect傳感器可以同時獲得RGB圖像和深度圖像。Kinect擁有三個不同的鏡頭,一個是位于中間的普通RGB鏡頭,這個鏡頭主要用于采集RGB圖像信息,圖片的分辨率為640*480;左右兩邊分別有一個紅外發(fā)射鏡頭,這兩個鏡頭聯(lián)合使用就可以得到深度信息;
在遙操作過程中,機器人的機械臂執(zhí)行各種操作任務(wù),Kinect在隨機器人運動的過程中,每5到10度采集一次場景信息,計算機處理Kinect傳感器傳回的深度信息和圖像信息,通過對點云去噪、匹配等技術(shù)獲取完整的環(huán)境信息。
深度信息指的是從相機到物體表面的距離信息。距離信息可以由深度圖像上的像素點表示,但像素點的坐標(biāo)與世界坐標(biāo)并不一致,所以想通過深度信息獲取真實世界中的距離信息時,首先需要把像素坐標(biāo)轉(zhuǎn)換為真實世界的世界坐標(biāo)。
如圖2所示的是攝像機的視角,頂端的曲線代表攝像機照到的物體的表面,虛線表示在Kinect傳感器中深度信息框架。A點表示物體上某一點在世界坐標(biāo)系中的坐標(biāo),B點代表對應(yīng)的深度坐標(biāo)值,其中Xw,Yw和Xp,Yp分別平行,Zw代表了攝像機的焦距,則將深度信息轉(zhuǎn)化為物理坐標(biāo)的關(guān)系式為:
采用上述開發(fā)模型,既實現(xiàn)了視圖層、控制層與模型層的分離,又實現(xiàn)了業(yè)務(wù)邏輯層與持久層的分離。這樣無論前端如何變化,模型層只需很少的改動,并且數(shù)據(jù)庫的變化也不會對前端有所影響,大大提高了系統(tǒng)的可復(fù)用性。不同層之間耦合度小,有利于團(tuán)隊成員并行工作,大大提高了開發(fā)效率。
要想計算出Xw和Yw,首先需要計算出Zp,Zp的大小和相機的分辨率等特性有關(guān),相機的分辨率是640*480,θ代表的是相機的水平視角,由圖3可以得出
如圖4所示,左邊是利用Kinect獲取的垃圾桶RGB圖像,右邊是得到的深度圖像在MATLAB中的顯示,從圖中可以看出,藍(lán)色點集表示的是垃圾桶的深度信息,Kinect傳感器可以獲取到垃圾桶的深度信息,但深度信息里存在噪聲,且有些噪聲可能會影響到后面的三維重構(gòu),所以這些噪聲是濾波時必須濾掉的,也即需要進(jìn)行深度圖像預(yù)處理。
圖2 Kinect傳感器前視角
圖3 深度圖像的框架維度
圖4 Kinect傳感器獲取的深度圖像
受到外界環(huán)境和傳感器自身的干擾,Kinect傳感器獲取深度信息時會有較多噪聲,這樣就導(dǎo)致深度信息與實際的環(huán)境信息有誤差,最終影響實驗的準(zhǔn)確性,常見的深度圖像去噪方式有泊松方式去噪,高斯濾波去噪,中值濾波去噪和雙邊濾波去噪。
泊松方程去噪的原理是濾波時,當(dāng)檢測的物體表面只有一個凸點或凹點,周圍都沒有類似凹凸點時,則判斷該點位噪聲點,這樣就會導(dǎo)致當(dāng)物體表面本身粗糙或有凹凸不平時,泊松濾波會將粗糙點視為噪聲。高斯濾波主要用于過濾高斯噪聲和正態(tài)分布的噪聲,但濾波時只考慮到了像素點的空間位置,忽略了像素值的大小,所以最終的濾波效果可能會導(dǎo)致深度圖像的邊界線比較模糊,這樣就改變了深度圖像的信息和輪廓,最終導(dǎo)致深度圖像的精確度不高。中值濾波優(yōu)于高斯濾波的地方在于中值濾波會降低對邊緣的模糊效果,從而保護(hù)圖像的邊緣。雙邊濾波建立在高斯濾波的基礎(chǔ)上,目的是為了保護(hù)深度圖片的邊緣信息。
本文采用了雙邊濾波去噪,如圖所示,左邊是雙邊濾波前,在MATLAB中所顯示的深度信息,右邊是濾波后的深度信息,經(jīng)過雙邊濾波后,大部分噪聲被過濾,深度信息更為純凈。
遠(yuǎn)程操控機器人時,通常希望獲得全面的操作環(huán)境信息,攝像機的拍攝范圍通常有限,所以需要從多個角度拍攝操作環(huán)境,從而獲得點云數(shù)據(jù)。點云匹配則是為了將不同坐標(biāo)系下的點云轉(zhuǎn)換至同一坐標(biāo)系下拼出完整的環(huán)境點云信息,同時計算相鄰點云之間的相對位置關(guān)系,然后進(jìn)行拼接。
圖5 濾波前后的深度圖像信息
通常攝像機獲取的點云信息數(shù)據(jù)非常龐大,為了可以高效的進(jìn)行點云匹配,我們選取有明顯特征的點云進(jìn)行數(shù)據(jù)匹配,這些被匹配的點,被稱為特征點。Harris、SURF以及SIFT是常見的特征點檢測方法[3]。本文采用SURF算法得到RGB圖像的特征點。
當(dāng)特征點確定完畢后,使用IPC算法進(jìn)行點云匹配。IPC算法可以求出初始點云上每個點對應(yīng)的目標(biāo)點云上最接近的點,這樣原始點云上的每個點和目標(biāo)點云的最近點可以到達(dá)匹配。
主要操作步驟為:
(1)讀入點云數(shù)據(jù),點云集合P和X分別代表了原點集P和目標(biāo)點集X
(5)算出集合P中的點到對應(yīng)集合Y中點的距離:
圖6所示為獲取的特征點及特征點的匹配效果。匹配采用的是兩個相鄰視角的點云圖,由圖可以看出,兩圖重疊區(qū)域匹配度較高,可以達(dá)到基本需求。
圖6 特征點匹配結(jié)果
顏色是物體的重要特性之一,也是機器人是否能識別到物體的一個重要參考條件。顏色空間是指將顏色數(shù)字化,常見的顏色空間主要是RGB顏色空間。紅(R)綠(G)藍(lán)(B)是三原色,也就是說,所有的顏色都可以通過這三種顏色疊加而成。
本文拿黃色作為例子進(jìn)行檢測實驗,我們知道光線不同可能會影響顏色的空間信息,所挑選的黃色物體在正常光照下的顏色坐標(biāo)為[230,230,15],在有遮擋物的情況下顏色坐標(biāo)為[120,122,1],可以看出,綠色和紅色值減少了將近一半,但二者的數(shù)值始終相近,且藍(lán)色值比紅黃值小非常多,所以滿足黃色點的數(shù)值特點是:紅色和綠色的比值接近1,紅綠的數(shù)值比藍(lán)色高5倍以上。
圖7 正常光照下的顏色探測結(jié)果
圖8 有遮擋條件下顏色探測結(jié)果
實驗結(jié)果如圖7圖8所示,白色空隙處表示識別出的黃色物體,由圖可以看出,Kinect傳感器可以準(zhǔn)確識別出不同環(huán)境下的黃色物體。
在基于虛擬現(xiàn)實技術(shù)的遙操作機器人領(lǐng)域,操作者想要得到更準(zhǔn)確的機器人所在環(huán)境,需要重構(gòu)三維虛擬場景,三維場景重構(gòu)的精確度會影響遙操作任務(wù)的完成情況,本文提出了一種基于Kinect傳感器的遙操作機器人環(huán)境重建的方法,本文完成的工作包括:
(1)利用Kinect傳感器獲取圖像的深度信息和三維點云。(2)對三維點云進(jìn)行去噪處理。(3)利用SURF算法和ICP算法對點云進(jìn)行匹配。(4)利用Kinect傳感器完成顏色的探測。
本實驗中還存在的問題有:
(1)本文中的實驗場景多是簡單的室內(nèi)場景,物體比較規(guī)則,光線也比較充足,但實際上機器人所處的環(huán)境復(fù)雜的多,現(xiàn)有的特征點提取辦法不能很好地在較為復(fù)雜的環(huán)境中提取特征點,之后需要做的工作是分類總結(jié)在不同環(huán)境中使用提取特征點的不同算法。
(2)Kinect傳感器的精度不高,獲取的深度信息精確值只有1cm,并且獲取深度的有效距離大約為0.5至3m,所以當(dāng)碰到體積比較小的物體時,Kinect傳感器無法完成三維重建。