文/王磊 歐陽世波 鄭宇 陳海軍 全英玉
在工業(yè)制造和物流領域,各種工業(yè)機器人可用于優(yōu)化貨物的流轉,其中物料的拆垛是常見應用之一?!皺C器人拆垛”通常指利用機械臂將物料按順序從托盤上卸載的過程,可以用于替代簡單但繁重的體力勞動。在物流領域中,存在將不同品規(guī)的貨物(即不同尺寸、重量或紋理的商品)裝在箱子內(nèi)進行交付的場景,如圖1所示。
圖1 由不同形狀的產(chǎn)品組成的混合托盤示例
然而,早期的機器人拆垛系統(tǒng)主要通過人工控制來完成機器人抓取,只適用于單一貨物的卸載,且要求貨物按照固定順序排列,機器人并不具備感知能力,無法對外界的變化做出反應。然而,多品規(guī)物料拆垛系統(tǒng)的待卸載物體尺寸多變,且碼放不規(guī)整,因而要求機器人具備實時的環(huán)境感知能力以引導抓取動作。
隨著各類光學傳感器的發(fā)展,人們逐漸將計算機視覺技術引入機器人抓取任務中,以提高機器人獲取外界信息的能力。基于視覺引導的機器人拆垛系統(tǒng)通常包含五個模塊,分別為視覺信息獲取模塊、物體定位與分析模塊、抓取位置計算模塊、手眼坐標轉換模塊和運動規(guī)劃模塊,如圖2所示。其中,前三個模塊為視覺系統(tǒng)的主體部分,負責獲取、處理視覺信息,提供物體位姿。后兩個模塊主要用于向機器人提供控制信息,完成抓取功能。下面我們將對每個模塊、常用方法及實施案例進行介紹。
圖2 物流拆垛機器人視覺系統(tǒng)總體結構示意圖
視覺信息獲取模塊的作用是捕獲視覺信息,為后續(xù)步驟提供輸入。目前較為常用的視覺輸入包括2D RGB圖像、3D點云圖像和2D與3D組合的RGB-D圖像等。其中,基于2D RGB圖像的視覺輔助機械臂抓取是目前工業(yè)上比較成熟的方案,其將機器人抓取的問題轉化為對RGB圖像做物體的目標檢測或圖像分割的問題。然而,2D視覺缺乏物體的絕對尺度信息,只能在特定的條件下使用,如垛型固定、物料尺寸已知的場景。對于物料品規(guī)未知的場景,要求視覺模塊為機器人提供準確的待抓取物體的絕對尺寸信息,因此只能使用3D點云圖像或2D與3D組合的RGB-D圖像。相比于RGB信息,RGB-D信息包含了相機到物體的空間距離信息;相比于3D點云圖像,RGB-D信息則包含豐富的彩色紋理信息。因此,可以采用RGB-D圖像作為多品規(guī)物料拆垛系統(tǒng)的視覺信息輸入。
物體定位與分析模塊接收視覺信息獲取模塊輸入的數(shù)據(jù),分析出場景中存在的物料,并獲取其位置、姿態(tài)等關鍵信息,之后再將這些關鍵信息輸入抓取位姿計算模塊。通常來說,機器人拆垛系統(tǒng)中的物料定位問題可以轉化為視覺領域的目標檢測或圖像分割問題?;赗GB-D視覺的機器人抓取方案,可以先在RGB圖像上對物料進行二維目標檢測或二維圖像分割,然后融合深度圖輸出物體的絕對尺寸與抓取位姿;或者直接對三維點云圖做目標檢測或分割。下面將對相關工作進行簡單介紹。
二維目標檢測的輸入是場景的RGB圖像,輸出為圖像中物體的類別和位置,位置以邊框或中心的形式給出。目標檢測的方法可以分為傳統(tǒng)方法和基于深度學習的方法。傳統(tǒng)的目標檢測方法一般使用滑動窗口的方式遍歷整張圖片,每個窗口成為一個候選區(qū)域。對于每個候選區(qū)域,首先使用SIFT、HOG等方法進行特征提取,然后訓練一個分類器來對提取的特征進行分類。比如經(jīng)典的DPM算法就是使用SVM對改良后的HOG特征進行分類,從而達到目標檢測的效果。傳統(tǒng)方法有兩個明顯的缺陷:首先是用滑動窗口來遍歷整張圖片十分耗時,使得算法的時間復雜度很高,難以應用于大規(guī)?;蛴袑崟r性要求的場景;其次,所使用的特征往往需要人工設計,使得此類算法較為依賴經(jīng)驗,魯棒性較差。
圖像分割可以看作像素級別的圖像分類任務。根據(jù)分割結果含義的不同,又可以將圖像分割分為語義分割(semantic segmentation)和實例分割(instance segmentation)。語義分割對圖像中的每個像素都劃分出對應的類別;而實例分割不但要進行像素級別的分類,還需要在具體類別基礎上區(qū)別開不同的實例。相對目標檢測的邊界框,實例分割可精確到物體的邊緣;相對語義分割,實例分割需要標注出圖上同類物體的不同個體。在拆垛應用中,我們需要精確提取物料的邊緣以計算抓取位置,因此需要采用實例分割技術?,F(xiàn)有的圖像分割技術可以分為傳統(tǒng)方法和基于深度學習的方法。
傳統(tǒng)的圖像分割方法大多基于圖片中灰度值的相似或突變來判斷像素是否屬于同一類別。常用的方法包括基于圖論的方法、基于聚類的方法和基于邊緣檢測的方法。
基于深度學習的方法相比于傳統(tǒng)方法大幅度提高了二維圖像分割的準確性。典型的深度神經(jīng)網(wǎng)絡框架,如AlexNet、VGGNet、GoogleNet等在網(wǎng)絡的最后加入全連接層進行特征整合,隨后通過softmax來判斷整張圖片的類別。為了解決圖像分割問題,F(xiàn)CN框架將這些全連接層替換成了反卷積層,使得網(wǎng)絡的輸出結果從一個一維概率變成了一個和輸入分辨率相同的矩陣,是將深度學習應用于語義分割的開山之作。
三維目標檢測通過直接計算物體的3D位置,使機器人可以準確地預判和規(guī)劃自己的行為和路徑,避免碰撞和違規(guī)。三維目標檢測按照傳感器類型分為單目相機、雙目相機、多目相機、線面激光雷達掃描、深度相機和紅外相機目標檢測。一般而言,由多目相機組成的立體/多目視覺系統(tǒng)或者激光雷達可以實現(xiàn)更準確地3D點云測量,其中基于多視圖的方法可以使用從不同視圖的圖像中得到的視差來獲得深度圖;基于點云的方法從點云獲取目標信息。相比較而言,由于點的深度數(shù)據(jù)可以直接測量,基于點云的三維目標檢測本質上是三維點的劃分問題,因此更為直觀和準確。
抓取位姿計算模塊利用第二個模塊輸出的目標物體的位置姿態(tài)信息來計算機器人的抓取位姿。由于在多品規(guī)物料拆垛系統(tǒng)中經(jīng)常同時存在多個可抓取目標,因此該模塊應解決“抓哪個”和“怎么抓”兩個問題。
第一步解決“抓哪個”的問題。該問題的目標是在眾多抓取目標中選取一個最佳的抓取目標,這里的“最佳”往往需要通過實際需求來定義。具體地,可以根據(jù)實際情況量化一些對抓取判斷有影響的指標,然后對這些指標進行優(yōu)先級調度。
第二步解決“怎么抓”的問題。我們可以選擇通過力學分析的方式解析計算出抓取的位姿,也可以通過學習的方法先對物體進行分類,再根據(jù)分類選擇抓取點,或者直接回歸出抓取位姿。
通過第三個模塊,我們已經(jīng)獲得了一個可行的抓取位姿。然而,該抓取位姿是基于相機坐標系下的位姿,在進行運動規(guī)劃之前,還需要將抓取位姿轉化到機器人坐標系下。在拆垛系統(tǒng)中,通常使用手眼標定來解決這個問題。根據(jù)相機固定位置不同,手眼標定方法可以分為兩種情況。一種是相機固定在機械臂上,相機隨著機械臂一起移動,稱為“眼在手”(Eye-in-hand),如圖 3所示。在這種關系下,機械臂的兩次運動中,機器人底座和標定板的位姿關系始終不變,求解的量為相機和機器人末端坐標系的位姿關系。另一種是相機固定在獨立支架上,稱為“眼在外”(Eyeto-hand),如圖 4所示。這種關系下,機械臂的兩次運動中,機器人末端和標定板的位姿關系始終不變,求解的量為相機和機器人底座坐標系之間的位姿關系。兩種情況最終都轉化為一個AX=XB的求解問題,可以利用李群和李代數(shù)將該方程轉化為線性方程以分別求解旋轉量和平移量。
圖3 “眼在手”(Eye-in-hand)標定系統(tǒng)示意圖
圖4 “眼在外”(Eye-to-hand)標定系統(tǒng)示意圖
該模塊主要考慮機器人的運動學、動力學、力學分析、運動規(guī)劃等,規(guī)劃出一條與環(huán)境不碰撞的可行運動路徑。通過將抓取位姿計算模塊獲得的相機坐標系下的抓取位姿乘以手眼坐標轉換模塊標定的轉換矩陣,我們可以得到機械臂坐標系下的抓取位姿。根據(jù)這個位姿可以進行運動規(guī)劃,最終引導機械臂完成拆碼垛任務。因此,運動規(guī)劃模塊的輸入為機械臂運動的起始位姿和目標位姿,輸出為機械臂的運動路徑。
完整的運動規(guī)劃算法可以拆分成以下三個步驟:
步驟一:逆運動學求解。為避免出現(xiàn)奇異點等問題,機械臂運動規(guī)劃一般在關節(jié)空間下進行。所以我們首先應根據(jù)輸入的位姿進行逆運動學求解,得到位姿對應的關節(jié)值。
步驟二:路徑規(guī)劃。通過路徑規(guī)劃算法,我們可以得到機械臂的運動路徑。該步驟的目標有兩點:一是避障,保證機械臂在運動過程中不與場景中的其他物體發(fā)生碰撞;二是提升運行速度,以提高系統(tǒng)的運行效率。通過規(guī)劃合理的運動路徑,可以讓機械臂單次抓取的運行時間更短,從而提升效率。
步驟三:時間插值。盡管通過路徑規(guī)劃我們已經(jīng)可以得到一條可行的運動路徑,然而這條路徑是由一個個位置點構成的。機械臂在沿著這條路徑運行時,需要不停加減速,因此會對運行速度造成影響。為此,我們需要進行時間插值,對路徑上的每個點求取機械臂運動到該點時的速度、加速度、時間信息等。這樣,機械臂便可以連續(xù)、平滑地運行,從而提升效率。
基于上述研究,在件箱物料識別場景中,可采用由3D深度相機、光照系統(tǒng)、計算機、以及視覺處理軟件組成的一個完整的視覺系統(tǒng),獲得現(xiàn)實物體的一些特殊信息,而通過這套系統(tǒng)獲得的信息,可以被用于完成一些特殊的任務,例如通過視覺系統(tǒng)獲得箱子位置,可以引導機器人抓取,獲得箱子數(shù)量信息,作為任務的校驗。這套系統(tǒng)的主要組成部分,如圖5所示。
圖5 視覺系統(tǒng)組成
3D相機和光照系統(tǒng)主要用于拍照成像,其中3D相機可以獲得一定范圍內(nèi)的深度數(shù)據(jù)。而數(shù)字圖像成像與光照系統(tǒng)相關。計算機則包括通用計算與存儲設備,用于保存圖像,通過專門的視覺軟件處理圖像,同時還要與其他系統(tǒng)進行網(wǎng)絡通訊。圖像顯示器可以方便操作者操作視覺處理軟件,監(jiān)測系統(tǒng)運行情況。大容量儲存用于永久或暫時存放圖像或其他數(shù)據(jù)。而專門的視覺軟件則包括數(shù)字圖像處理,圖像數(shù)據(jù)分析,以及一些特殊功能。
一般來說,一臺3D深度相機幀率為1到30幀,RGB圖像分辨率有640×480,1280×960,特殊的有1920×1080,2592×1944,深度范圍為500mm左右到5000mm左右。
而根據(jù)價格不同,有不同的精度和范圍。下面以某品牌的一款3D相機為例,參數(shù)如圖6所示,精度如圖7所示。
圖6 某3D相機參數(shù)
圖7 某3D相機精度
使用3D相機,可以獲得特殊場景的RGB圖像和深度圖像,根據(jù)對這些圖像(見圖8)的處理和分析,可以獲得一些關于場景里物體的位置、數(shù)量、信息。
圖8 原拍攝圖像
圖9的矩形框就是處理后識別出來的箱子抓取位置圖。按左上、左下、右上、右下的順序分別為“2、3、3、2”,即機器手會根據(jù)圖像識別系統(tǒng)給的位置信息按左上兩個箱子、左下三個箱子、右上三個箱子、右下兩個箱子的順序去抓取。
圖9 經(jīng)過圖像識別系統(tǒng)處理后識別出來的框圖
在本文中,我們對3D視覺引導的多品規(guī)物料機器人拆垛系統(tǒng)框架及常用方法進行了介紹,并定義了該框架需要具備的幾個基本模塊,即視覺信息獲取模塊、物體定位與分析模塊、抓取位姿計算模塊、手眼坐標轉換模塊、運動規(guī)劃模塊,并且對每個模塊的主要任務和常用方法進行了說明。在實際應用中,可以根據(jù)需要使用不同的方法來實現(xiàn)這些模塊,而不影響其他模塊和系統(tǒng)整體的功能。