趙寶樂,姬五勝,2,陳建敏
(1.天津職業(yè)技術(shù)師范大學(xué) 電子工程學(xué)院,天津 300222;2.天津市現(xiàn)場總線控制技術(shù)工程中心,天津 300222)
自20世紀(jì)50年代以來,人類對機(jī)器視覺的研究取得了重大突破,視覺檢測技術(shù)為科學(xué)技術(shù)的發(fā)展提供了新的思路,它不僅是高級視覺處理和分析任務(wù)的基礎(chǔ),也是未來發(fā)展的重要動力[1-3]。Marr 教授領(lǐng)導(dǎo)的研究團(tuán)隊首次提出了一種全新的視覺計算理論(Vision Computational Theory)。北美、歐洲和日本等地區(qū)相繼成為國際機(jī)器視覺的重要產(chǎn)業(yè)基地。在“十四五”時期,中國積極推動機(jī)器視覺技術(shù)的發(fā)展,制定了一系列有助于推動智能工廠建設(shè)的政策,大力推廣智能機(jī)器人的大規(guī)模應(yīng)用,從而促進(jìn)了機(jī)器視覺技術(shù)的普及和應(yīng)用[4]?;赗OS 技術(shù)機(jī)器人能夠?qū)崿F(xiàn)基于雙目視覺的自動抓取。首先,機(jī)器人需要經(jīng)過相機(jī)標(biāo)定[5];然后,機(jī)器人需要進(jìn)行手眼標(biāo)定[6],從而獲取物體的基本位置信息。此外,ROS 還能夠利用其獨(dú)特的消息傳輸機(jī)制,構(gòu)建機(jī)械臂和相機(jī)之間的三維空間模型,從而實現(xiàn)機(jī)器人的自動抓取,并且能夠?qū)崿F(xiàn)基于視覺的機(jī)械臂抓取系統(tǒng)的研究[7-9]。
隨著技術(shù)的發(fā)展,單目測繪的地圖軌跡與實際情況存在較大的不同,而且只依靠圖片也不能準(zhǔn)確反映出物體的真實尺寸和深度。因此,為了更準(zhǔn)確地測量物體的位置,人們普遍采用雙目測繪技術(shù)[10]。深度相機(jī)[11]可以獲得外界環(huán)境信息,將尺度信息和彩色圖像特征信息結(jié)合起來建立外界環(huán)境,但處理信息并不能像雙目視覺一樣通過軟件計算來實現(xiàn)。采用一種結(jié)構(gòu)已知、精度較高的參照物,根據(jù)參照物在圖像和空間坐標(biāo)系的位姿約束關(guān)系,建立攝像機(jī)參數(shù)標(biāo)定的方程組,基于視差理論的雙目立體視覺[12]利用兩個相同攝像機(jī)對同一場景不同位置進(jìn)行成像,從而獲得場景立體圖像[13]。
本文基于雙目視覺機(jī)器人的手眼標(biāo)定,采用“眼”(相機(jī))在“手”(機(jī)械臂)上的方法,相機(jī)探測像素在目標(biāo)圖像上的位置,標(biāo)定坐標(biāo)變換矩陣實現(xiàn)像素坐標(biāo)到空間坐標(biāo)的變換,并基于機(jī)械手坐標(biāo)解算機(jī)器運(yùn)動方式;根據(jù)機(jī)械手坐標(biāo)計算所述機(jī)器的運(yùn)動方式,以控制所述機(jī)械手到指定地點(diǎn)對物體進(jìn)行抓取操作。通過將多種先進(jìn)的技術(shù)融合到一起,如視覺檢測、深度學(xué)習(xí)、運(yùn)動規(guī)劃和物體抓取,最終實現(xiàn)一個基于雙目視覺的高效物體抓取實驗。
機(jī)器人抓取目標(biāo)系統(tǒng)結(jié)構(gòu)如圖1所示。根據(jù)研究任務(wù)和實驗背景,將相機(jī)固定在機(jī)械臂上,采用“眼”在“手”上的方法,在機(jī)械臂末端安裝夾爪,機(jī)器人在收到指令后通過相機(jī)采集圖像,對目標(biāo)物體進(jìn)行檢測;雙目相機(jī)經(jīng)過相機(jī)標(biāo)定后,將采集到的圖像傳送到機(jī)械手的空間坐標(biāo)系中,根據(jù)檢測的手眼標(biāo)定和圖像分析結(jié)果進(jìn)行姿態(tài)估計,通過相機(jī)和機(jī)器人末端坐標(biāo)系位姿關(guān)系,獲得連續(xù)的關(guān)節(jié)位置坐標(biāo)進(jìn)行運(yùn)動規(guī)劃,最后控制機(jī)械臂對目標(biāo)物進(jìn)行抓取任務(wù)。
圖1 系統(tǒng)結(jié)構(gòu)
根據(jù)實驗場景選取合適的硬件,主要包括:(1)Realsense D435:librealsense sdk、realsense-ros 功能包;(2)Marker 標(biāo)記識別:Aruco 功能包;(3)手眼標(biāo)定:easy_handeye 功能包;(4)機(jī)械臂:輕型6 自由度協(xié)作機(jī)器人;(5)電腦主機(jī):負(fù)責(zé)通過ROS 控制相機(jī)采集圖像信息,經(jīng)過數(shù)據(jù)處理后將物體的坐標(biāo)位置發(fā)送給機(jī)械臂,實現(xiàn)抓取任務(wù);(6)夾爪:具有力控制和位置控制的功能。
根據(jù)相位測量原理,相機(jī)可以準(zhǔn)確地測量物體的高度。當(dāng)光柵投射到物體表面時,相位會受到物體高度的影響,獲取相位變化值,從而準(zhǔn)確地反映出物體的高度信息。相機(jī)標(biāo)定的主要目的在于獲得相機(jī)的內(nèi)外參數(shù),當(dāng)獲得的相機(jī)的內(nèi)外參數(shù)都正確時,圖像失真比較小,描述數(shù)字圖像中物體成像的像點(diǎn)坐標(biāo)并從相機(jī)坐標(biāo)系中讀出信息,坐標(biāo)為(u,v),單位為pixels(像素數(shù)目)。
通過相機(jī)標(biāo)定,在三維世界和成像平面內(nèi)建立物體的一一對應(yīng)關(guān)系,這種一一對應(yīng)關(guān)系可以通過世界坐標(biāo)系、相機(jī)坐標(biāo)系、圖像坐標(biāo)系和像素坐標(biāo)系的變換來實現(xiàn),如圖2所示,原點(diǎn)通常位于左右相機(jī)之間,或者X軸方向的中點(diǎn)。當(dāng)Z軸與光軸完全重疊時,它們將沿著一條水平線穿過,并與圖像坐標(biāo)系完全垂直;而像素坐標(biāo)系的u-v與圖像坐標(biāo)系的x-y將完全重疊,兩者之間的距離被稱為焦距f。通過將旋轉(zhuǎn)矩陣R與平移向量T結(jié)合在一起,可以將世界坐標(biāo)系和相機(jī)坐標(biāo)系的位置轉(zhuǎn)換為一個新的坐標(biāo)系,相機(jī)坐標(biāo)系與圖像坐標(biāo)系相連接就是透視投影。如圖3所示,在圖像坐標(biāo)系中,原點(diǎn)與像素點(diǎn)之間并不重合,在這種情況下原點(diǎn)在像素坐標(biāo)系中的坐標(biāo)為(u0,v0),而像素點(diǎn)在x軸和y軸方向的尺寸分別為dx和dy,實際像點(diǎn)p在圖像坐標(biāo)系中的坐標(biāo)為(x,y),因此得到了它的坐標(biāo)(u,v)。
圖2 坐標(biāo)系關(guān)系轉(zhuǎn)換
圖3 相機(jī)標(biāo)定原理
通過手眼標(biāo)定,機(jī)器人可以實現(xiàn)基坐標(biāo)系和相機(jī)坐標(biāo)系之間的精確轉(zhuǎn)換。第一種方法是通過eye-in-hand來實現(xiàn)手眼標(biāo)定,即將相機(jī)固定在機(jī)器臂的末端,并讓它與機(jī)械臂運(yùn)動;第二種方法被稱為eye-to-hand,它將相機(jī)與機(jī)器人的基座完全隔絕,使得機(jī)器臂的移動不會受到相機(jī)的影響,從而實現(xiàn)了更加高效的操作。通過機(jī)械手臂與相機(jī)的協(xié)同作用,可以實現(xiàn)對機(jī)器人標(biāo)定板的精確測量,并且保持基礎(chǔ)與底座之間的關(guān)系不變,從而確保末端坐標(biāo)系的準(zhǔn)確性,如圖4(a)所示。
圖4 真實場景和標(biāo)定示意圖
手眼標(biāo)定eye-in-hand 示意圖如圖4(b)所示,底座與末端關(guān)系為底座與相機(jī)關(guān)系為相機(jī)與標(biāo)定板的關(guān)系為在eye-in-hand 的配置方式中對機(jī)器人移動過程中的任意兩個位姿有以下公式成立:
標(biāo)定板和機(jī)器人底座間兩次運(yùn)動保持不變。對式(1)進(jìn)行移項后可得:
求解相機(jī)和機(jī)器人末端之間的關(guān)系X,機(jī)械臂末端的坐標(biāo)變換關(guān)系設(shè)為A,相機(jī)的坐標(biāo)變換關(guān)系設(shè)為B,最終轉(zhuǎn)化成求解方程為:
使用三維重建函數(shù)能夠精確地測量和校準(zhǔn)相機(jī)和投影儀的內(nèi)部和外部參數(shù),并重建這些測量值在相機(jī)坐標(biāo)系中的三維位置。根據(jù)設(shè)計值可以確定標(biāo)定板上特征點(diǎn)的位置,并利用這些信息來構(gòu)建一個相應(yīng)的坐標(biāo)系,從而實現(xiàn)對其進(jìn)行轉(zhuǎn)換。
通過卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN),可以根據(jù)目標(biāo)的位置、尺寸和長寬比等因素進(jìn)行綜合抽樣,從而實現(xiàn)快速、準(zhǔn)確的特征提取與回收。
(1)SSD 使用了基于VGG16 的雙框檢測器,可以檢測出大量的特征圖,而且可以根據(jù)不同的尺寸來實現(xiàn)檢測。
(2)SSD 利用卷積從測試結(jié)果中抽取不同特征進(jìn)行映射,其形狀為m×n×p圖形,圖形特征讀數(shù)可利用3×3×p從更小卷積核中獲取。
(3)SSD 每個單元都有不同配比的先驗框,在一定程度上降低了訓(xùn)練難度。
在ROS 環(huán)境中啟動Moveit 框架中的相關(guān)節(jié)點(diǎn)程序,開啟抓取程序后,相機(jī)固定到機(jī)械臂末端,通過網(wǎng)線連接到主機(jī),相機(jī)識別到目標(biāo)位置信息進(jìn)行抓取任務(wù)。
啟動Realsense 節(jié)點(diǎn),相機(jī)通過Type-C 數(shù)據(jù)線與USB3.0接口相連,啟動aruco 節(jié)點(diǎn)識別 Marker 標(biāo)簽,執(zhí)行命令啟動image_view顯示圖像;運(yùn)行成功后在 rviz 中可以看到機(jī)器人模型與真實機(jī)械臂的狀態(tài)保持一致,真實機(jī)械臂會按照 rviz中Moveit!規(guī)劃的路徑運(yùn)動;在啟動標(biāo)定程序前,先在 rviz中通過Moveit 或手動調(diào)節(jié)機(jī)械臂到一個合適的姿態(tài),然后將aruco 二維碼移動至相機(jī)視野中心附近。目標(biāo)物體位姿識別如圖5所示。
圖5 目標(biāo)物體位姿識別
標(biāo)定步驟如下:
(1)當(dāng)Check starting pose 被激活時,“Ready to start”將會顯示,但是若檢測結(jié)果顯示 0/17,則表明當(dāng)前機(jī)械臂的姿勢與預(yù)期的設(shè)計相差較遠(yuǎn)。解決方法:關(guān)閉標(biāo)定節(jié)點(diǎn)然后調(diào)節(jié)機(jī)械臂到一個合適姿態(tài)并將aruco 碼移動至相機(jī)視野中心附近,再重啟標(biāo)定節(jié)點(diǎn)繼續(xù)標(biāo)定。
(2)機(jī)械臂移動至新位姿,二維碼在相機(jī)檢測范圍內(nèi)檢測成功,則進(jìn)行下一步。若aruco 碼不在相機(jī)視野范圍內(nèi)或部分在視野外,檢測不到,則一直等到aruco 碼完全在相機(jī)視野范圍內(nèi)且能檢測成功,再進(jìn)行下一步。
(3)如果Samples 對話框中顯示了有用的信息,則表明第一個點(diǎn)已經(jīng)被標(biāo)定。
(4)重復(fù)執(zhí)行步驟(2)和步驟(3),直至 17 個點(diǎn)全部標(biāo)定完畢。
(5)界面2 中Result 對話框中會出現(xiàn)結(jié)果。
相機(jī)相對于目標(biāo)物體的TF 坐標(biāo)轉(zhuǎn)換關(guān)系為:camera_color_optical_frame到aroce_marker_frame。在抓取節(jié)點(diǎn)應(yīng)用中,通過TF 轉(zhuǎn)換可以獲得機(jī)械臂的坐標(biāo)系相對于目標(biāo)物體的轉(zhuǎn)換關(guān)系:base_link到aroce_marker_frame。相機(jī)與機(jī)械臂基坐標(biāo)系的TF 轉(zhuǎn)換見表1 所列,marker 在相機(jī)坐標(biāo)系下的位姿終端打印信息如圖6所示。
表1 位姿信息
圖6 終端打印信息
在實驗平臺進(jìn)行抓取測試,驗證抓取實驗的可行性。在測試前,通過ROS 系統(tǒng)的Moveit!軟件實現(xiàn)機(jī)械臂的運(yùn)動規(guī)劃和運(yùn)動空間限制。首先對機(jī)械臂正逆運(yùn)動學(xué)進(jìn)行分析,完成機(jī)械臂的運(yùn)動規(guī)劃并為運(yùn)動空間限制提供基礎(chǔ),通過在move_group中設(shè)置逆解算法進(jìn)行機(jī)械臂末端夾爪到目標(biāo)物體的路點(diǎn)軌跡規(guī)劃。抓取目標(biāo)物體過程如圖7所示。實驗測試機(jī)械臂對水瓶的檢測、抓取以及放置,機(jī)械臂在固定區(qū)域內(nèi)完成50 次抓取測試,從目標(biāo)檢測成功到水瓶被抓取再到放置算一次成功抓取。整個抓取過程為開環(huán)抓取,得到目標(biāo)物體位置之后,進(jìn)行抓取操作,機(jī)械臂從初始姿態(tài)到抓到目標(biāo)物體平均用時 12 s,放置用時 6 s,機(jī)械臂回到初始位姿等待下一次檢測,用時 8 s,整體抓取時間較長,但不影響實驗?zāi)康摹Wト〗Y(jié)果見表2 所列。
圖7 抓取目標(biāo)物體過程
表2 抓取結(jié)果
本實驗對特定的物體水瓶共抓取了50 次,抓取成功率為82%,抓取失敗的原因有:機(jī)械手抓取目標(biāo)物體表面呈現(xiàn)摩擦力較小,沒有更好的適應(yīng)力;水瓶位置放置偏或不能到達(dá)機(jī)械臂可操作范圍,機(jī)械臂無法規(guī)劃出運(yùn)動軌跡。
標(biāo)定過程可能會受相關(guān)硬件及環(huán)境等條件因素的影響,所以標(biāo)定結(jié)果可能存在一定的誤差,標(biāo)定完成后可以通過獲取物體在相機(jī)坐標(biāo)下的位姿,然后轉(zhuǎn)換到機(jī)械臂下的位姿進(jìn)行調(diào)試,存在誤差可以后續(xù)在程序中進(jìn)行補(bǔ)償計算。
本文設(shè)計的基于雙目視覺抓取實驗基本上實現(xiàn)了預(yù)期的效果,完成了手眼標(biāo)定、物體識別定位抓取等操作,通過在ROS 操作系統(tǒng)平臺實現(xiàn)相機(jī)和機(jī)械臂的坐標(biāo)轉(zhuǎn)換,結(jié)合目標(biāo)檢測以及路徑規(guī)劃相關(guān)算法,最終實現(xiàn)目標(biāo)物體的抓取。未來將進(jìn)一步探索人類視覺的三維融合及其產(chǎn)生的機(jī)理,為特定場景設(shè)置一些限制條件和匹配模式,以此來提升基于視覺的目標(biāo)識別的準(zhǔn)確性、及時性,同時拓寬匹配規(guī)范和算法架構(gòu)。