張澤坤,唐 冰,陳小平
(中國(guó)科學(xué)技術(shù)大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,合肥 230027)(*通信作者電子郵箱xpchen@ustc.edu.cn)
飛速發(fā)展的電子商務(wù)對(duì)物流行業(yè)提出了越來(lái)越高的要求,傳統(tǒng)的人工分揀方式已經(jīng)逐漸無(wú)法滿(mǎn)足需求。為了節(jié)省時(shí)間和空間,每個(gè)物流節(jié)點(diǎn)需要快速將物件按照大小、形狀、目的地進(jìn)行分揀和裝載。機(jī)械臂技術(shù)的不斷發(fā)展使得機(jī)器人可以以相當(dāng)高的精度和智能度進(jìn)行物體操縱,可以幫助人類(lèi)分揀物件。典型的機(jī)器人參與的物流分揀場(chǎng)景類(lèi)似于工廠(chǎng)裝配流水線(xiàn)。機(jī)械臂和傳感器安裝在平臺(tái)上,位置相對(duì)固定;待分揀的物體用傳送裝置運(yùn)輸?shù)狡脚_(tái)當(dāng)中,系統(tǒng)對(duì)它們進(jìn)行識(shí)別和定位,然后由機(jī)械臂將其分揀到不同的運(yùn)輸設(shè)備上。這種場(chǎng)景下,需要能夠?qū)崟r(shí)對(duì)平面上所有物體的尺寸、形狀、表面特征、適合抓取的位置等進(jìn)行識(shí)別,使得機(jī)械臂能夠選取合理的模式進(jìn)行操作。因?yàn)榇謷锛姆N類(lèi)無(wú)法預(yù)先確定,識(shí)別系統(tǒng)需要較強(qiáng)的泛化性能。同時(shí),分揀系統(tǒng)的成本需要控制在合理范圍內(nèi),而識(shí)別與定位精度只需要滿(mǎn)足操作要求即可。對(duì)于典型大小的物件,定位精度約為5 mm以下就可以保證操作成功。
普通的彩色攝像頭只能得到物體在成像平面上的投影信息,無(wú)法獲得物體的真實(shí)形狀和尺寸。單個(gè)立體攝像頭可以得到物體在攝像頭視角可見(jiàn)的立體結(jié)構(gòu),但是不能看到物體的背面,也不能處理多個(gè)物體相互遮擋的場(chǎng)景。這些信息對(duì)于物流分揀尤為重要。工業(yè)界已經(jīng)發(fā)展出了成熟的使用激光掃描對(duì)物體的立體形狀進(jìn)行重建的技術(shù)[1],并已形成了實(shí)用的產(chǎn)品。這些產(chǎn)品可以實(shí)現(xiàn)很高的精度,但是往往需要昂貴的設(shè)備和復(fù)雜的操作,無(wú)法滿(mǎn)足物流分揀場(chǎng)景的實(shí)時(shí)性和低成本要求。從立體攝像頭拍攝的多張圖像中重建整個(gè)立體場(chǎng)景的方法廣泛應(yīng)用于機(jī)器人導(dǎo)航當(dāng)中[2];使用結(jié)合了整體和局部特征的描述子,可以使用二維攝像頭的數(shù)據(jù)進(jìn)行機(jī)器人定位[3]。這類(lèi)機(jī)器人導(dǎo)航中使用的方法同樣可以用于物體識(shí)別,但是這類(lèi)方法需要較高的計(jì)算量,且在小尺度下表現(xiàn)不佳。使用多個(gè)方向的大量彩色攝像頭和立體攝像頭得到的互相同步的圖像中可以十分精確地重構(gòu)出場(chǎng)景的三維立體信息[4],但是這種方法需要非常復(fù)雜的硬件和算法,一般適用于訓(xùn)練數(shù)據(jù)的收集的場(chǎng)合。從人類(lèi)操作物體的視頻中學(xué)習(xí)物體和工具的物理性質(zhì)可以賦予機(jī)械臂以合理的方式操作工具的能力[5],但這類(lèi)方法需要大量數(shù)據(jù)進(jìn)行離線(xiàn)訓(xùn)練,而且最適用于人類(lèi)的工具操作方法并不一定適用于所有類(lèi)型的機(jī)械臂。
使用多種機(jī)器學(xué)習(xí)方法可以完成對(duì)物體的識(shí)別與定位[6-7]。隨著基于深度學(xué)習(xí)的物體識(shí)別技術(shù)的發(fā)展,基于卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network, CNN)的物體抓取方法也在不斷提出。桂林電子科技大學(xué)的多位研究者利用預(yù)先訓(xùn)練好的CNN識(shí)別象棋上的文字,結(jié)合邊緣檢測(cè)算法,實(shí)現(xiàn)了對(duì)象棋的位置和旋轉(zhuǎn)角度的檢測(cè)[8],并使用機(jī)械臂進(jìn)行了實(shí)驗(yàn)。中國(guó)科學(xué)院自動(dòng)化研究所的研究者使用基于區(qū)域候選的卷積神經(jīng)網(wǎng)絡(luò)(Region Convolutional Neural Network, R-CNN)的物體檢測(cè)和識(shí)別算法[9],從物體上方攝像頭的圖像出發(fā),定位物體的最佳抓取位置,并使用機(jī)械臂進(jìn)行了實(shí)驗(yàn)。這類(lèi)方法的識(shí)別效果較好,如果結(jié)合深度學(xué)習(xí)相關(guān)硬件和軟件也可以實(shí)現(xiàn)較高的運(yùn)行速度;但是它們都依賴(lài)于預(yù)先標(biāo)注好的數(shù)據(jù)集,需要預(yù)先離線(xiàn)訓(xùn)練,如果遇到未知物體,算法可能會(huì)失效。
使用機(jī)械臂進(jìn)行成功和不成功的物體抓取的視覺(jué)信息進(jìn)行深度學(xué)習(xí)訓(xùn)練,可以得到一個(gè)端對(duì)端的從機(jī)械臂和待抓取物體的圖像到抓取動(dòng)作成功率的卷積神經(jīng)網(wǎng)絡(luò),這個(gè)網(wǎng)絡(luò)可以被用于對(duì)機(jī)械臂進(jìn)行一系列的連續(xù)控制,以完成高成功率的物體抓取[10]。使用機(jī)械臂進(jìn)行大量的物體抓取嘗試可以訓(xùn)練深度卷積神經(jīng)網(wǎng)絡(luò)用于從攝像頭得到的物體圖像中檢測(cè)適合抓取的點(diǎn)和方向的信息[11]。這類(lèi)基于深度學(xué)習(xí)的方法不依賴(lài)于人類(lèi)經(jīng)驗(yàn)或人工標(biāo)注的數(shù)據(jù)集,可以通過(guò)長(zhǎng)時(shí)間運(yùn)行采集海量數(shù)據(jù),在這些數(shù)據(jù)上訓(xùn)練得到很高的成功率。但是它們訓(xùn)練得到的神經(jīng)網(wǎng)絡(luò)一般與硬件設(shè)置以及訓(xùn)練使用的物體相關(guān),當(dāng)機(jī)械臂結(jié)構(gòu)和外觀(guān)或場(chǎng)景發(fā)生及較大的改變,或者出現(xiàn)了與訓(xùn)練物體相差非常大的新物體時(shí),可能需要重新訓(xùn)練。另外這類(lèi)方法需要機(jī)械臂進(jìn)行大量成功和失敗的抓取嘗試,而失敗的嘗試可能伴隨著機(jī)械臂與其他硬件的碰撞,收集這些數(shù)據(jù)的過(guò)程中可能會(huì)對(duì)機(jī)械臂和其他硬件造成損傷。
由于物體的立體全貌需要由多張圖像綜合得到,對(duì)這些圖像進(jìn)行變換和拼合是立體視覺(jué)的核心任務(wù)?;谔卣鼽c(diǎn)匹配的方法通用性較強(qiáng),但是需要大量的計(jì)算,也不能處理特征較少的物體。物流分揀場(chǎng)景中攝像頭和機(jī)械臂的安裝位置相對(duì)固定,可以首先對(duì)安裝好的攝像頭和機(jī)械臂進(jìn)行校準(zhǔn),使得它們可以在同一坐標(biāo)系中協(xié)同工作,之后對(duì)于任意物體都可以使用同一套校準(zhǔn)參數(shù)而不需要每次進(jìn)行校準(zhǔn)。使用多個(gè)攝像頭從不同方向?qū)ξ矬w進(jìn)行拍攝可以得到物體全貌,并在一定程度上解決物體相互遮擋的問(wèn)題。從物體的立體全貌可以直接計(jì)算有用的特征,如物體尺寸、空間取向、平面法向量等。使用這些信息,結(jié)合機(jī)械臂的物理結(jié)構(gòu)和機(jī)械指標(biāo),可以設(shè)計(jì)出最合適的操作模式。本文設(shè)計(jì)了一種可以得到物體的立體全貌信息,并使用機(jī)械臂進(jìn)行操作的物流分揀系統(tǒng)。使用二維碼標(biāo)簽可以建立多個(gè)立體攝像頭內(nèi)部坐標(biāo)系到平臺(tái)坐標(biāo)系的變換關(guān)系。將攝像頭的三維立體點(diǎn)云圖像變換到平臺(tái)坐標(biāo)系中后,直接進(jìn)行拼合即可得到完整的物體立體模型。從這些模型出發(fā),本文計(jì)算了尺寸、中心點(diǎn)、取向等立體特征,并提取了物體表面含有的平面。利用這些特征,結(jié)合一定的人類(lèi)進(jìn)行物體操作的經(jīng)驗(yàn),控制機(jī)械臂采用了不同的操作策略進(jìn)行物體操作,模擬了物流分揀場(chǎng)景中幾個(gè)典型任務(wù),實(shí)驗(yàn)的精度和實(shí)時(shí)性都達(dá)到了應(yīng)用要求。本文將詳細(xì)描述攝像頭的設(shè)置、校準(zhǔn)與相關(guān)算法,以及手臂的安裝和控制方法,討論在此平臺(tái)上進(jìn)行實(shí)驗(yàn)的結(jié)果并分析誤差,最后給出總體結(jié)論和下一步工作方向。
微軟公司于2010年為Xbox 360主機(jī)發(fā)布了第一款立體攝像頭Kinect,并很快因其低廉的價(jià)格和較高的精度成為機(jī)器人科研界廣泛應(yīng)用的立體攝像頭。為獲取物體的立體信息,Kinect攝像頭在普通的彩色(Red Green Blue, RGB)傳感器之外還安裝了紅外線(xiàn)(Infra-Red, IR)投射和接收裝置,從而重構(gòu)出物體表面的立體結(jié)構(gòu)[12]。大部分技術(shù)成熟的立體攝像頭都應(yīng)用了類(lèi)似的技術(shù)。采用一塊印有形狀和尺寸已知圖案的平板,RGB傳感器和IR傳感器可以在它們接收到的圖像的特征點(diǎn)之間建立對(duì)應(yīng)關(guān)系,從而完成兩個(gè)像素空間的對(duì)齊[13],對(duì)齊參數(shù)稱(chēng)為攝像頭的內(nèi)部參數(shù)。在驅(qū)動(dòng)軟件中,可以根據(jù)內(nèi)部參數(shù)從彩色圖像和具有深度信息的IR圖案建立三維點(diǎn)云(Point Cloud),相比普通的彩色圖像,點(diǎn)云中的每個(gè)像素點(diǎn)還具有該點(diǎn)在攝像頭坐標(biāo)系中的位置信息(RGBXYZ)。典型的深度攝像頭如圖1所示,圖1(a)和(b)中分別標(biāo)出了微軟Kinect和后來(lái)開(kāi)發(fā)的Kinect 2.0攝像頭的主要結(jié)構(gòu)和對(duì)應(yīng)的攝像頭坐標(biāo)系。在物流場(chǎng)景中,物體和攝像頭一般置于室內(nèi)的均勻光照條件下,攝像頭和物體之間沒(méi)有灰塵或水霧的干擾,且物體表面一般不會(huì)非常光滑以至于發(fā)生鏡面反射。這種條件下,商用的立體攝像頭可以以較高的精度得到物體的立體點(diǎn)云信息。
圖1 典型的立體攝像頭示意圖
立體攝像頭給出的點(diǎn)云中點(diǎn)的坐標(biāo)都基于攝像頭坐標(biāo)系,應(yīng)用中為了能讓多個(gè)攝像頭同時(shí)工作,需要將不同攝像頭坐標(biāo)系變換到到同一個(gè)外部坐標(biāo)系中。此變換關(guān)系可以通過(guò)識(shí)別位置已知的特征點(diǎn)來(lái)建立。在外部坐標(biāo)系C中選取一系列點(diǎn),其坐標(biāo)分別為{P1,P2,…,PN}。在這些點(diǎn)處放置攝像頭容易識(shí)別的圖案,根據(jù)攝像頭識(shí)別的結(jié)果得到它們?cè)谀硞€(gè)攝像頭坐標(biāo)系Ck中的位置為{Q1,Q2,…,QN}。通過(guò)最小化誤差得到Ck到C的變換矩陣Tk:
(1)
其中:差函數(shù)E用于計(jì)算點(diǎn)的真實(shí)坐標(biāo)Pi與攝像頭識(shí)別到的坐標(biāo)經(jīng)過(guò)變換矩陣變換后得到的坐標(biāo)TkQi間的誤差,為便于優(yōu)化誤差函數(shù)一般取為三維歐幾里得距離。為了減小誤差,選取的點(diǎn)需要有足夠的數(shù)量,且合理分布在一定范圍內(nèi)。變換關(guān)系建立后,只要攝像頭與C之間的相對(duì)位置沒(méi)有發(fā)生變化,得到的變換矩陣就可以一直使用。多個(gè)攝像頭將各自的點(diǎn)云存入隊(duì)列中,從中選取時(shí)間戳最接近的點(diǎn)云為PCk,分別使用變換矩陣變換,合在一起即可得到物體的完整點(diǎn)云PC:
(2)
其中:*表示根據(jù)變換矩陣對(duì)點(diǎn)云中的每個(gè)點(diǎn)的三維坐標(biāo)進(jìn)行變換,∑表示對(duì)點(diǎn)云進(jìn)行合并。該點(diǎn)云經(jīng)過(guò)處理后即可用于提取物體的立體特征。實(shí)際的攝像頭設(shè)置中,需要合理安排攝像頭位置,以盡可能在較小的誤差下得到物體的全貌。同一型號(hào)的多個(gè)攝像頭發(fā)出的紅外線(xiàn)之間可能會(huì)互相干擾,此時(shí)需要使用不同種類(lèi)的攝像頭加以解決。
本文使用點(diǎn)云庫(kù)(Point Cloud Library, PCL)處理點(diǎn)云信息[14]。從合并得到的點(diǎn)云PC可以計(jì)算出每個(gè)物體的中心點(diǎn)位置、尺寸、取向、含有的平面等立體特征,這些特征可被用于后續(xù)的物體操作過(guò)程當(dāng)中。
物體的取向采用主成分分析(Principal Component Analysis, PCA)方法進(jìn)行計(jì)算。對(duì)一含有N個(gè)點(diǎn){xi,yi,zi}的點(diǎn)云,計(jì)算其對(duì)應(yīng)的協(xié)方差矩陣Σ:
(3)
其中協(xié)方差項(xiàng)cov(X,Y)為點(diǎn)云在X和Y兩個(gè)維度上的協(xié)方差:
cov(X,Y)=E[(X-E(X))(Y-E(Y))]
(4)
其他各項(xiàng)依此類(lèi)推。計(jì)算Σ的三個(gè)特征向量,即代表了點(diǎn)云的三個(gè)主成分的方向,這三個(gè)方向代表了物體在三維空間中的主要取向。
采用隨機(jī)抽樣一致(RANdom SAmple Consensus,RANSAC)算法可以從點(diǎn)云中提取平面。使用三維平面模型對(duì)點(diǎn)云進(jìn)行擬合,在設(shè)置的誤差范圍內(nèi),采用迭代的方法找到含有最多點(diǎn)的平面模型為:
ax+by+cz+d=0
(5)
然后將此平面內(nèi)的點(diǎn)從點(diǎn)云中移除,對(duì)剩余點(diǎn)云繼續(xù)采用該方法提取平面,直到得到的平面中的點(diǎn)小于一定的下限為止。這樣就可以從點(diǎn)云中提取出所有大小符合要求的平面對(duì)應(yīng)的平面方程及其內(nèi)部的點(diǎn)。
1)點(diǎn)云中除了感興趣的物體外,還含有其他無(wú)關(guān)物體的點(diǎn)云。根據(jù)硬件系統(tǒng)的結(jié)構(gòu)和尺寸,設(shè)置物體可能出現(xiàn)的三維坐標(biāo)范圍,此范圍之外的點(diǎn)云屬于無(wú)關(guān)物體,將無(wú)關(guān)物體裁剪,得到PCcrop,該部分點(diǎn)云只含有待操作的物體。
2)不同的攝像頭分辨率不同,且同一個(gè)物體的不同位置在點(diǎn)云中點(diǎn)的密度不同,直接使用PCcrop進(jìn)行后續(xù)計(jì)算會(huì)導(dǎo)致立體特征發(fā)生偏差。為解決這一問(wèn)題,對(duì)PCcrop以采樣率S進(jìn)行三維重采樣得到點(diǎn)云PCsample,該點(diǎn)云中相鄰點(diǎn)間的距離基本為S。在點(diǎn)云中如有某個(gè)平面含有N個(gè)點(diǎn),則該平面的面積近似為A=S2N。
3)對(duì)PCsample中的點(diǎn)根據(jù)三維歐幾里得距離進(jìn)行聚類(lèi)。攝像頭給出的點(diǎn)云中存在一些并不屬于任何物體的噪點(diǎn),將只含有很少點(diǎn)的聚類(lèi)去掉即可去掉這些噪點(diǎn)。剩余的各個(gè)點(diǎn)聚類(lèi)即是代表每個(gè)獨(dú)立物體的點(diǎn)云{PCobject1,PCobject2,PCobject3,…}。
4)對(duì)任一個(gè)物體點(diǎn)云PCobjecti:
a)對(duì)所有點(diǎn)的三維坐標(biāo)計(jì)算平均值,得到物體的中心位置Centroidi。
上述算法使用點(diǎn)云中點(diǎn)之間的歐幾里得距離分割不同的物體,可以適用于物體間有一定程度的相互遮擋,但是不存在相互接觸的情況。在物流分揀場(chǎng)景中,這可以通過(guò)控制單位時(shí)間內(nèi)通過(guò)該系統(tǒng)的待分揀物體的數(shù)量來(lái)實(shí)現(xiàn)。
為了讓機(jī)械臂具有智能物體操作的能力,本文實(shí)驗(yàn)中使用MoveIt![15]對(duì)機(jī)械臂的運(yùn)動(dòng)進(jìn)行規(guī)劃。MoveIt! 是 ROS 中用于控制機(jī)械臂的軟件模塊,使用時(shí),根據(jù)機(jī)械臂各個(gè)部件的尺寸和形狀建立物理模型,即可建立各個(gè)關(guān)節(jié)的角度與手臂末端位置間的對(duì)應(yīng)關(guān)系。進(jìn)行運(yùn)動(dòng)規(guī)劃時(shí),通過(guò)控制每個(gè)關(guān)節(jié)的轉(zhuǎn)動(dòng)角度將手臂末端移動(dòng)到某個(gè)特定位置并調(diào)整為某個(gè)姿態(tài)。當(dāng)手臂的自由度足夠多時(shí),可以在一定范圍內(nèi)將手臂運(yùn)動(dòng)到直角坐標(biāo)系中任意位置(x,y,z)和任意歐拉角(pitch,yaw,roll)代表的方向。進(jìn)行運(yùn)動(dòng)規(guī)劃時(shí),考慮手臂和整個(gè)平臺(tái)上其他設(shè)備發(fā)生碰撞的可能性,需要將平臺(tái)的模型加入整體模型當(dāng)中。得到物體的相關(guān)立體特征后,結(jié)合機(jī)械臂部件的尺寸判斷是否可以進(jìn)行操作,如果可以操作,根據(jù)機(jī)械臂的規(guī)劃結(jié)果和形狀判斷最適合操作的方式。手臂控制使用了手臂坐標(biāo)系Carm,采用變換矩陣Tarm可將PC變換到手臂坐標(biāo)系當(dāng)中,手臂就可以對(duì)于C中的位置進(jìn)行操作
PCarm=Tarm*PC
(6)
本文在平臺(tái)的不同位置安裝兩個(gè)立體攝像頭,分別檢測(cè)物體在兩個(gè)相對(duì)方向的立體信息。由于Kinect采用結(jié)構(gòu)光(Structured Light, SL)信息重構(gòu)表面立體結(jié)構(gòu),如果將兩臺(tái) Kinect 指向同一個(gè)表面,它們發(fā)出的結(jié)構(gòu)光信息會(huì)互相干擾,使得重構(gòu)失敗。為了解決這一問(wèn)題,本文使用的攝像頭除一個(gè)Kinect攝像頭外,另一個(gè)攝像頭為Kinect 2.0。Kinect 2.0攝像頭使用了不同的飛行時(shí)間(Time-of-Flight, TOF)技術(shù)[16],可以和Kinect同時(shí)使用。安裝攝像頭之前,使用一個(gè)棋盤(pán)圖案的標(biāo)定板對(duì)它們的內(nèi)部參數(shù)進(jìn)行標(biāo)定。本平臺(tái)采用了機(jī)器人操作系統(tǒng)(Robot Operating System, ROS)[15]提供的軟件進(jìn)行攝像頭驅(qū)動(dòng)和平臺(tái)控制,攝像頭獨(dú)立供電,并以USB 3.0連接至計(jì)算機(jī)。每個(gè)攝像頭使用一個(gè)三自由度云臺(tái)固定在操作平臺(tái)的框架上,調(diào)整云臺(tái)的各個(gè)關(guān)節(jié),使得用于放置待操作物體的平面位于視野中心位置。后續(xù)的實(shí)驗(yàn)說(shuō)明了在一定范圍內(nèi)兩個(gè)攝像頭已經(jīng)足夠提供物體的三維全貌。
本文使用虛擬和增強(qiáng)現(xiàn)實(shí)庫(kù)(A Library for Virtual and Augmented Reality, ALVAR)提供的多標(biāo)簽自動(dòng)校準(zhǔn)法[18]來(lái)建立每個(gè)攝像頭的內(nèi)部坐標(biāo)系到統(tǒng)一的外部坐標(biāo)系之間的變換關(guān)系。實(shí)驗(yàn)平臺(tái)整體使用的右手坐標(biāo)系C的原點(diǎn)定義在放置待操作物體的平面上,Z軸指向上方,與平面垂直。在平面上放置一塊印有二維碼標(biāo)簽的標(biāo)定板,選取一個(gè)標(biāo)簽作為原點(diǎn)位置。圖2(a)是實(shí)驗(yàn)中使用的標(biāo)定板上印刷的標(biāo)簽圖案,坐標(biāo)系原點(diǎn)定義在04號(hào)標(biāo)簽的正中。典型的變換關(guān)系建立過(guò)程如圖2(b)所示,圖中標(biāo)記出了攝像頭內(nèi)部坐標(biāo)系C1以及外部坐標(biāo)系C。
圖2 立體攝像頭變換關(guān)系的建立
本文使用了Kinova Robotics公司開(kāi)發(fā)的六自由度手臂 MICO2,如圖3所示。該手臂由六個(gè)轉(zhuǎn)動(dòng)關(guān)節(jié)(J1~J6) 連接的七個(gè)部件(base, shoulder, arm, forearm, wrist1, wrist2, hand)構(gòu)成,第一個(gè)部件固定在基座上,關(guān)節(jié)的電機(jī)可以承受大約2.4 kg的末端重量。最末端的部件上安裝有兩個(gè)可獨(dú)立開(kāi)合的手指(finger1, finger2),這兩個(gè)手指可以對(duì)尺寸或一部分的尺寸在0.5~12 cm范圍內(nèi)的物體進(jìn)行有效的抓取操作。手臂每個(gè)關(guān)節(jié)具有角度和力矩傳感器,可以接收物體操作的反饋信息。手臂使用獨(dú)立供電,并以USB 2.0連接至計(jì)算機(jī)??刂剖直蹠r(shí)采用的手臂坐標(biāo)系Carm在圖3中標(biāo)出,其的原點(diǎn)位于手臂基座的正中。將手臂使用夾具固定安裝在平臺(tái)的一側(cè),基座略低于平面。使手臂坐標(biāo)軸Carm與平面上的坐標(biāo)系C的坐標(biāo)軸相互平行,通過(guò)簡(jiǎn)單測(cè)量就可以建立C到Carm的變換關(guān)系矩陣Tarm。
圖3 機(jī)械臂示意圖
根據(jù)機(jī)械臂的物理模型,可以通過(guò)每個(gè)關(guān)節(jié)的角度計(jì)算出機(jī)械臂的狀態(tài);從狀態(tài)中可以得到機(jī)械臂末端的位置,該位置信息可以用于評(píng)估機(jī)械臂進(jìn)行特定操作的精度;而物理模型本身的精度可以通過(guò)一些外部測(cè)量方法進(jìn)行評(píng)估。
本文通過(guò)實(shí)驗(yàn),系統(tǒng)測(cè)量了多攝像頭視覺(jué)系統(tǒng)給出的物體坐標(biāo)測(cè)量值與實(shí)際坐標(biāo)值之間的誤差;然后選取了一些常見(jiàn)的形狀、尺寸各異的物體進(jìn)行了特征提取實(shí)驗(yàn);之后對(duì)機(jī)械臂在實(shí)驗(yàn)平臺(tái)上的可操作的空間范圍進(jìn)行了測(cè)試;最后根據(jù)視覺(jué)系統(tǒng)提取的特征,使用手臂完成了高精度智能抓取。實(shí)驗(yàn)平臺(tái)整體設(shè)置如圖4(a)所示,主要包括了可移動(dòng)的整體框架、安裝在框架上的兩個(gè)攝像頭、用于放置物體的平面、安裝在平面下方的供電系統(tǒng)、在平面一側(cè)安裝的手臂、進(jìn)行計(jì)算和控制的計(jì)算機(jī)。
圖4 實(shí)驗(yàn)平臺(tái)及實(shí)驗(yàn)用物體
(7)
分析某項(xiàng)測(cè)量值的分布情況可以給出該測(cè)量誤差來(lái)源的信息,本文分析了物體在某個(gè)點(diǎn)的200個(gè)位置測(cè)量值的分布情況。根據(jù)實(shí)驗(yàn)中物體二放置在(-0.1,0.2)m處的測(cè)量值繪制二維直方圖如圖6所示,偏離均值較遠(yuǎn)的幾個(gè)測(cè)量結(jié)果并未顯示在圖中??梢钥吹綔y(cè)量值的分布基本成旋轉(zhuǎn)對(duì)稱(chēng)模式,偏差在σ、2σ、3σ內(nèi)的比例分別為 64.5%、96.0%、100.0%,基本符合二維正態(tài)分布的特征,其他位置的測(cè)量結(jié)果也具有類(lèi)似的特征。這說(shuō)明誤差來(lái)源基本為隨機(jī)測(cè)量誤差,可以通過(guò)一些統(tǒng)計(jì)學(xué)方法減小。實(shí)驗(yàn)中為提高精度,在時(shí)間可行的情況下,可以采用多次測(cè)量取均值的方法。因?yàn)槲矬w在Z方向的真實(shí)位置不容易測(cè)量,且定位中該方向的測(cè)量值的重要性低于X-Y方向,上述誤差分析沒(méi)有將Z方向的坐標(biāo)測(cè)量值計(jì)入其中。單獨(dú)分析物體在Z方向的測(cè)量值的分布,同樣符合正態(tài)分布的特征。
圖5 物體在XY平面中位置的測(cè)量結(jié)果
為測(cè)試多攝像頭立體視覺(jué)系統(tǒng)在不同條件下的表現(xiàn),本文選取了一些大小、形狀、取向各不相同的物體放置在平面上,如圖 7 左側(cè)所示。使用立體視覺(jué)系統(tǒng)計(jì)算它們的立體特征,在圖形界面中繪制物體的特征向量Vi與最小包圍盒OBBi,并和物體的點(diǎn)云一起顯示,如圖7右側(cè)所示。圖中標(biāo)出了操作平臺(tái)的坐標(biāo)系C,并用白色箭頭繪制計(jì)算得到的特征向量,箭頭起點(diǎn)位于物體中心點(diǎn),長(zhǎng)度為該特征向量對(duì)應(yīng)特征值的絕對(duì)值大小。OBBi使用實(shí)線(xiàn)標(biāo)出,并用白色字體在特征向量的箭頭末端標(biāo)注了各個(gè)方向的尺寸,單位為m。本操作平臺(tái)使用的計(jì)算機(jī)安裝有一塊 Intel Core i7 7700K 處理器,從攝像頭原始數(shù)據(jù)完成一次完整計(jì)算并進(jìn)行顯示的時(shí)間約為1 s。
圖6 測(cè)量值在XY平面中的分布
圖7 不同形狀物體的立體特征
圖7左側(cè)的圖片為普通攝像機(jī)拍攝,該攝像機(jī)的位置和視角與兩個(gè)立體攝像頭的其中一個(gè)基本一致??梢钥吹皆趫D7(b)的左側(cè)圖像中,物體之間存在一些互相遮擋,物體的圖像之間有一定的重疊,單個(gè)攝像頭無(wú)法得到物體的全貌。但是一個(gè)攝像頭無(wú)法看到的部分可以被另一個(gè)攝像頭捕捉,從而基本看到物體的全貌。旋轉(zhuǎn)對(duì)稱(chēng)物體的特征如圖7(a)所示,計(jì)算得到的物體中心位于旋轉(zhuǎn)軸上,且三個(gè)特征向量其中一個(gè)與物體的對(duì)稱(chēng)軸平行,另外兩個(gè)對(duì)應(yīng)的特征值大小基本相等。棱柱形物體的特征如圖7(b)所示,物體的中心點(diǎn)位于棱柱中心,三個(gè)特征向量方向與各條棱平行,包圍盒尺寸基本與其各條邊長(zhǎng)一致,由于存在一定的校準(zhǔn)誤差和噪點(diǎn),該尺寸略大于實(shí)際尺寸。兩個(gè)不規(guī)則物體的特征如圖7(c)所示,其特征向量基本符合人類(lèi)直覺(jué)認(rèn)為的物體取向,包圍盒尺寸與物體尺寸基本一致。實(shí)驗(yàn)結(jié)果表明,本文使用的算法可以有效地提取物體的立體特征,特征與物體的真實(shí)三維形狀一致,且符合人類(lèi)對(duì)物體的認(rèn)知。人類(lèi)操作物體時(shí)也參考了這些特征,如抓物體時(shí)選取最細(xì)的位置,根據(jù)物體的長(zhǎng)軸判斷物體姿態(tài)等,平臺(tái)安裝的機(jī)械臂同樣可以利用這些特征進(jìn)行更加有效和智能的物體操作。
與基于深度學(xué)習(xí)的方法相比,本文的算法不需要預(yù)先標(biāo)注的數(shù)據(jù)集進(jìn)行訓(xùn)練。本文的物體定位與特征提取基于點(diǎn)云中點(diǎn)的坐標(biāo)信息;與文獻(xiàn)[8]中的方法相比,不需要物體表面具有任何便于識(shí)別的顏色和紋理,只需要物體表面能夠被立體攝像頭精確成像即可;與文獻(xiàn)[9]中的方法相比,本文的方法使用立體視覺(jué)分割物體,不需要物體和背景的顏色具有較大的區(qū)別。另外,本文提取的物體取向信息是三維的,而不是限制在水平面內(nèi),也即抓取點(diǎn)具有6個(gè)自由度,分別是3個(gè)空間位置和3個(gè)取向角度,這為后續(xù)的抓取提供了更大的靈活性。但是由于立體攝像頭的精度低于傳統(tǒng)的二維相機(jī),本文在物體定位精度方面略有下降。處理速度方面,本文的方法與文獻(xiàn)[7]中不使用GPU加速神經(jīng)網(wǎng)絡(luò)計(jì)算的情況下接近,都為1 s/幀左右。
本文使用了OptiTrack公司開(kāi)發(fā)的多攝像頭動(dòng)作捕捉系統(tǒng)(Motion Capture System, MCS)精確測(cè)量手臂末端位置來(lái)評(píng)估機(jī)械臂運(yùn)動(dòng)到特定位置的精度。實(shí)驗(yàn)中在手臂最末端粘貼一個(gè)由3個(gè)動(dòng)作捕捉系統(tǒng)可以定位的標(biāo)記點(diǎn)構(gòu)成的標(biāo)記物,系統(tǒng)可以以亞毫米精度測(cè)量該標(biāo)記物的三維位置坐標(biāo)??刂剖直勰┒搜刂本€(xiàn)移動(dòng)一小段距離,并計(jì)算動(dòng)作捕捉系統(tǒng)中標(biāo)記物移動(dòng)的實(shí)際距離。實(shí)驗(yàn)發(fā)現(xiàn)手臂移動(dòng)的精度在2 mm以下。此精度已經(jīng)足夠完成物流分揀場(chǎng)景中的物體操作。
為測(cè)試機(jī)械臂在實(shí)驗(yàn)平臺(tái)上的可操作范圍,本文選取了物體操作的一個(gè)典型手臂末端姿態(tài),即手臂末節(jié)與水平面平行,在此姿態(tài)下測(cè)試了手臂末端可以精確到達(dá)的位置范圍。實(shí)驗(yàn)在手臂坐標(biāo)系中X=[-0.25,0.25]m,Y=[-0.65, -0.45]m,Z=[0.2,0.45]m的空間范圍內(nèi),每個(gè)坐標(biāo)軸方向以0.05m為間隔均勻選取測(cè)試點(diǎn),控制機(jī)械臂末端到達(dá)該點(diǎn),并根據(jù)關(guān)節(jié)最終角度計(jì)算實(shí)際到達(dá)的位置。實(shí)驗(yàn)結(jié)果表明,機(jī)械臂末端在選取的姿態(tài)下可以在X=[-0.25, 0.25]m,Y=[-0.6,-0.45]m,Z=[0.2,0.4]m 范圍內(nèi)以低于0.005 m的位置誤差到達(dá)目標(biāo)點(diǎn)。通過(guò)調(diào)整機(jī)械臂與物體放置平面的相對(duì)位置,可以讓此可精確到達(dá)的范圍與前述的攝像頭可以精確定位的范圍相互重合,此時(shí)可以讓機(jī)械臂與攝像頭系統(tǒng)以5 mm的精度協(xié)同運(yùn)行。
本文模擬物流分揀場(chǎng)景的實(shí)際需求,根據(jù)計(jì)算得到的物體的立體特征,根據(jù)機(jī)械臂的結(jié)構(gòu)和人類(lèi)進(jìn)行物體操作的經(jīng)驗(yàn),采用不同的策略控制手臂進(jìn)行抓取和其他操作。如果平面上有多個(gè)物體,優(yōu)先操作距離機(jī)械臂最近的物體以避免可能發(fā)生的碰撞。一次操作完成后,因?yàn)椴僮鬟^(guò)程中可能會(huì)碰到其他物體使得其位置和取向發(fā)生改變,所有立體特征需要重新計(jì)算。若物體的尺寸在可以被機(jī)械臂抓取的范圍內(nèi),控制手臂前端垂直于物體最長(zhǎng)軸,即最大的特征值對(duì)應(yīng)的特征向量方向,平行于尺寸適于抓取的方向,抓取物體的中心點(diǎn),如圖8(a)、(b)、(c)所示。如果物體的質(zhì)量分布均勻,這種方法可以實(shí)現(xiàn)最穩(wěn)定的抓握。如果抓取方向不同,可能由于物體在該方向的尺寸太大無(wú)法抓握。若抓取點(diǎn)偏向物體一側(cè),則可能導(dǎo)致抓取點(diǎn)兩側(cè)質(zhì)量分布不一致,使得抓取過(guò)程中物體發(fā)生旋轉(zhuǎn)甚至掉落。對(duì)于具有較大平面的物體,控制手指觸碰該平面的中心點(diǎn),模擬物流中機(jī)械臂為物體貼標(biāo)簽或識(shí)別標(biāo)簽的情況,如圖8 (d)所示。請(qǐng)?jiān)L問(wèn)http://t.cn/R8MIQWM觀(guān)看機(jī)械臂進(jìn)行連續(xù)物體操作過(guò)程的視頻。雖然計(jì)算得到的物體特征、手臂坐標(biāo)系的變換、手臂末端位置和姿態(tài)的控制都存在一定的誤差,在本文的實(shí)驗(yàn)條件下這些誤差并不會(huì)導(dǎo)致物體操作的失敗。本文的實(shí)驗(yàn)選取了各種不同的物體進(jìn)行了100次抓取,未出現(xiàn)抓取失敗的情況。
圖8 針對(duì)不同特征物體的操作
本文通過(guò)對(duì)多個(gè)深度攝像頭和機(jī)械臂進(jìn)行聯(lián)合校準(zhǔn),建立各個(gè)攝像頭坐標(biāo)系和手臂坐標(biāo)系到一個(gè)統(tǒng)一坐標(biāo)系間的變換關(guān)系,提出了一套適用于物流分揀場(chǎng)景的物體立體特征提取方法和機(jī)械臂操作,并搭建了實(shí)驗(yàn)平臺(tái)進(jìn)行了實(shí)驗(yàn)驗(yàn)證和物體操作測(cè)試。提前校準(zhǔn)的方法避免了對(duì)于每個(gè)新物體進(jìn)行調(diào)整。從物體立體全貌計(jì)算的立體特征則代表了物體的真實(shí)信息,提高了后續(xù)操作的成功率。本文選取了一些常見(jiàn)的典型物體進(jìn)行實(shí)驗(yàn),平臺(tái)可以在可接受的誤差范圍內(nèi)實(shí)時(shí)運(yùn)行,機(jī)械臂根據(jù)視覺(jué)系統(tǒng)給出的信息連續(xù)進(jìn)行了100次成功抓取。這套方法應(yīng)用在物流行業(yè)中,具有成本較低、搭建簡(jiǎn)單、無(wú)需預(yù)先收集數(shù)據(jù)進(jìn)行訓(xùn)練等優(yōu)勢(shì)。
本文的方法適用于尺度在分米級(jí)且形狀較為規(guī)則的物體,尺寸過(guò)大或者過(guò)小的物體都會(huì)使定位精度下降。由于定位和特征提取都基于物體的整體點(diǎn)云,如果物體形狀較為不規(guī)則,可能會(huì)出現(xiàn)計(jì)算出的抓取點(diǎn)不在物體上的情況,使得后續(xù)操作出現(xiàn)問(wèn)題。在物流分揀場(chǎng)景中,大部分包裹都是尺寸適中的方形物體或是柱形物體,它們的尺寸和形狀在本文提出方法的適用范圍內(nèi)。
本文方法對(duì)物體的尺寸要求較高,如果物體較大,很容易超出視覺(jué)系統(tǒng)的可見(jiàn)范圍。為了讓這套方法適用于更大尺度下的物流分揀應(yīng)用場(chǎng)景,后續(xù)工作中可以適當(dāng)增加立體攝像頭的數(shù)目和它們之間的距離,以在更大范圍內(nèi)實(shí)現(xiàn)物體定位和特征提取。本文基于點(diǎn)云之間的距離分割物體,為了實(shí)現(xiàn)緊密貼合物體的分割,可以采用基于圖像特征的視覺(jué)方法,這樣可以處理物體間存在更大面積內(nèi)互相遮擋的情況。為提高機(jī)械臂進(jìn)行物體操作的智能度,可以使用測(cè)量得到的物體立體模型結(jié)合機(jī)械臂和手爪模型進(jìn)行計(jì)算,從而實(shí)現(xiàn)更有效的操作;或者使用機(jī)器學(xué)習(xí)的方法,實(shí)現(xiàn)更加智能的物體操作。