吳佳鴻,胡雪菲,郭俊豪,武泱光,吳德欣,胡安正
(湖北文理學院 物理與電子工程學院,湖北襄陽, 441053)
該分揀機主要由主控制器、單目攝像頭、機械臂、定位框組成。其中,攝像頭采集圖像輸入jetson主控制器;主控利用OpenCV找出方框輪廓并進行透視變換;運用HSV模型原理識別出方框中物體的顏色,再計算物體在底座坐標系下的坐標;再由夾爪投影及物體坐標算出末端坐標系的定位;再根據機械臂逆運動學求出末端到達該定位的各個關節角度;最后,主控驅動關節轉動相應角度,夾取物體并投放至對應容器、機械臂復位。系統總體方案框圖如圖1所示。

圖1 系統總體方案框圖
選用帶有吸盤的底盤,既可以牢牢吸附在如桌面的光滑材質表面,保證抓取過程中的穩定性,同時又方便拆卸和移動。
本設計采用六自由度機械臂,機身由6個關節和7個連桿級聯組成,關節采用舵機構成。關節編號從1到6,連桿編號從0到6[1]。連桿0固定在底座上,連桿6上帶有機械夾爪。關節與連桿如圖2所示。

圖2 關節與連桿
本設計僅用于抓取生活中的小件物品,選用一般的二指金屬夾爪。如圖3所示。

圖3 金屬夾爪
分類常見有PWM舵機,總線舵機。前者精度差,接線多,易損耗,無位姿反饋,均無法達到關節對舵機的要求,總線舵機則避免了上述情況。本設計選用STS3215舵機,該舵機齒輪采用1:345的銅齒組合,扭矩大;機身設計采用雙軸結構,圓襯立體的結構特性,配合金屬主副舵盤和雙出線的布線方式,適于運用在機械臂。
由于分揀工作需要運行一系列諸如OpenCV,ROS(Robot Operating System)的庫,以及進行如透視變換、逆運動學求解的計算和IO控制,可選兩種方案。
方案一:將PC機作為上位機,單片機作為下位機;上位機通過通訊協議把圖像信息的處理結果發送給下位機,下位機控制接在IO口上的總線舵機;同時下位機把舵機位姿信息傳回上位機。優點是除了用戶原有的PC機以外,僅另需一塊單片機即可完成控制操作,節省成本。缺點是增加了復雜度,除一般PC機的Windows系統不易安裝ROS外,還需額外設計與下位機的通訊協議,以及單片機的編程下載操作等。
方案二是選用Linux嵌入式系統,運算力強,ROS安裝方便,可對IO進行操作。一個模塊就能完成上述所有操作,大大降低復雜度。
由于我手里擁有一塊jetson_nano,故采用方案二。
IMX219攝像頭。808萬像素、83度視場角,22%畸變和180幀/s的幀率,微小的體積使得它在窄邊框結構的機械臂上也能安裝。
觀察機械臂的運動范圍,以底座為基坐標,攝像頭正前方為Y軸正半軸,向右為X軸正半軸;在X=0cm,Y=25cm處畫一個圓心,以該圓心為中間點畫一個15cm×15cm的矩形框用于后面的定位計算。定位框如圖4所示。

圖4 定位框
設計主要包括:①找方框邊緣,把其四邊進行透視變換后作為圖像的四邊。②圖像中,根據HSV原理找到物體并求物體中心點。③實際中,由物體中心點的位置轉換得到物體的坐標。④結合物體坐標及夾爪投影算得末端坐標系的定位。⑤服務端把定位通過ROS server通訊發送出去,客戶端獲得定位后用機械臂逆運動學解出各關節角度。⑥驅動舵機轉動,進行抓取、投放、復位。
為達到視野最廣,調整機械臂關節使相機與地面形成斜視45°,此時視野下的方框呈像類似梯形。首先我們找出方框輪廓:運用OpenCV(Open Source Computer Vision Library,機器視覺庫),把RGB圖像轉灰度之后,進行高斯濾波、二值化、腐蝕、膨脹、提取輪廓點集。再根據左上,左下,右下,右上四點將輪廓進行透視變換矯正后作為圖像(640×480)的四邊。然后將物體放入視野進行顏色識別。透視變換效果示意圖如圖5所示。

圖5 透視變換效果示意圖
HSV(Hue, Saturation, Value)六面椎體模型如圖6所示,其中H表示色調,S表示飽和度,V表示亮度。HSV格式的圖像比RGB格式的圖像能夠明顯的顯示出顏色差異程度[2],對于顏色識別來說更方便,提高識別率。

圖6 HSV六面椎體模型
運用OpenCV庫,主控制器先讀取到RGB格式的圖像,經濾波處理后轉換到HSV格式,把每一個像素點的HSV值與目標顏色的HSV值進行比對,濾除掉范圍值之外的像素,剩下相對集中的像素即為目標物體;提取其輪廓點集,用方框框出,方框中心點即圖像中物體中心點。常見顏色對應的HSV范圍見表1。

表1 常見顏色對應的HSV范圍
X坐標計算:由公式(point_x-image_x)/640=(object_x-x)/150計算。其中object_x是待求量;point_x代表圖像中物體中心點橫向坐標;image_x代表圖像中心點坐標;x是基坐標系的X坐標,即為0;640是圖像的像素點寬度,150是方框實際寬度,單位mm。
Y坐標=機械臂底座距方框最近邊的距離+方框寬度/2+物體對于方框中心點的縱向坐標。而物體對于方框中心點的縱向坐標計算方法與物體X坐標計算類似。
我們知道,運動學逆解求得的是末端坐標系到達的位置[3],不是夾爪夾取的位置,因此要想由末端坐標系的定位來做逆解運算,還需要先利用三角函數求夾爪在坐標系的投影長度。
X,Y坐標求解:實際測得夾爪的長度為0.12m。對夾爪進行x,y方向上的投影,如圖7所示。末端坐標系的X,Y坐標=物體的X,Y坐標-投影長度。

圖7 夾爪的x,y軸投影
Z坐標求解:如圖8所示,Z坐標=物體的Z坐標+投影長度。因為夾取的是生活中的小件物品,其自身高度可忽略不計,即物體的Z坐標為0。

圖8 夾爪的z軸投影
接下來創建ROS服務端節點,當收到客戶端請求時把末端坐標系的定位通過ROS server通訊發送給客戶端。
機械臂的正運動學是指已知每個關節角度,求解末端坐標系相對于底座坐標系的變換方矩陣。求解步驟如圖9所示。

圖9 機械臂正運動學求解
其中的DH參數法[4]是一種用于描述串聯式鏈路上連桿和關節幾何關系的系統方法,簡單來說描述的就是連桿坐標系之間的關系。本文中的機械臂的DH參數如表2所示,其中各個參數的含義如下:

表2 DH參數
(1)連桿長度αi-1:沿xi-1方向zi-1到zi的距離。(2)連桿轉角αi-1:沿xi-1方向zi-1旋轉到zi的角度。(3)連桿偏距di:沿zi方向,到xi-1到xi的距離。(4)關節角θi:沿zi方向,xi-1旋轉到xi的角度。
DH表中的參數通常由URDF文件讀出,URDF是一種使用xml格式描述的機器人模型文件。
機械臂的逆運動學是指已知機械臂的末端坐標系的坐標,即已知齊次變換矩陣,求解各關節的角度。因此機械臂的逆運動學問題,可以理解為通過上述正運動學方程求解關節的θ1、θ2、θ3、θ4、θ5。
客戶端得到末端坐標系的坐標后,逆解出關節角度,依據關節的運動范圍對其做出適當調節。繼而主控制器控制舵機轉動相應角度并夾取,然后讓機械臂運動不同的軌跡到對應的容器上方進行投放,最后機械臂復位等待下一次抓取。
本次設計的分揀機采用機械臂作為機身,jetson_nano為控制核心,使用單目攝像頭進行圖像采集,以Python作為語言,調用一系列如OpenCV等工具,以物理原理、數學運算作為支撐,實現了對生活中常見物品如鵝卵石等的顏色識別并分揀投放,如圖10所示。隨著我國工業化程度不斷提高,可將分揀機進一步推廣到其他應用當中,比如依據顏色對水果的品質挑選、中藥挑選等,該分揀機將會有更大的應用價值。

圖10 分揀機對鵝卵石顏色分揀