吳佳鴻,胡雪菲,郭俊豪,武泱光,吳德欣,胡安正
(湖北文理學(xué)院 物理與電子工程學(xué)院,湖北襄陽, 441053)
該分揀機主要由主控制器、單目攝像頭、機械臂、定位框組成。其中,攝像頭采集圖像輸入jetson主控制器;主控利用OpenCV找出方框輪廓并進行透視變換;運用HSV模型原理識別出方框中物體的顏色,再計算物體在底座坐標(biāo)系下的坐標(biāo);再由夾爪投影及物體坐標(biāo)算出末端坐標(biāo)系的定位;再根據(jù)機械臂逆運動學(xué)求出末端到達該定位的各個關(guān)節(jié)角度;最后,主控驅(qū)動關(guān)節(jié)轉(zhuǎn)動相應(yīng)角度,夾取物體并投放至對應(yīng)容器、機械臂復(fù)位。系統(tǒng)總體方案框圖如圖1所示。
圖1 系統(tǒng)總體方案框圖
選用帶有吸盤的底盤,既可以牢牢吸附在如桌面的光滑材質(zhì)表面,保證抓取過程中的穩(wěn)定性,同時又方便拆卸和移動。
本設(shè)計采用六自由度機械臂,機身由6個關(guān)節(jié)和7個連桿級聯(lián)組成,關(guān)節(jié)采用舵機構(gòu)成。關(guān)節(jié)編號從1到6,連桿編號從0到6[1]。連桿0固定在底座上,連桿6上帶有機械夾爪。關(guān)節(jié)與連桿如圖2所示。
圖2 關(guān)節(jié)與連桿
本設(shè)計僅用于抓取生活中的小件物品,選用一般的二指金屬夾爪。如圖3所示。
圖3 金屬夾爪
分類常見有PWM舵機,總線舵機。前者精度差,接線多,易損耗,無位姿反饋,均無法達到關(guān)節(jié)對舵機的要求,總線舵機則避免了上述情況。本設(shè)計選用STS3215舵機,該舵機齒輪采用1:345的銅齒組合,扭矩大;機身設(shè)計采用雙軸結(jié)構(gòu),圓襯立體的結(jié)構(gòu)特性,配合金屬主副舵盤和雙出線的布線方式,適于運用在機械臂。
由于分揀工作需要運行一系列諸如OpenCV,ROS(Robot Operating System)的庫,以及進行如透視變換、逆運動學(xué)求解的計算和IO控制,可選兩種方案。
方案一:將PC機作為上位機,單片機作為下位機;上位機通過通訊協(xié)議把圖像信息的處理結(jié)果發(fā)送給下位機,下位機控制接在IO口上的總線舵機;同時下位機把舵機位姿信息傳回上位機。優(yōu)點是除了用戶原有的PC機以外,僅另需一塊單片機即可完成控制操作,節(jié)省成本。缺點是增加了復(fù)雜度,除一般PC機的Windows系統(tǒng)不易安裝ROS外,還需額外設(shè)計與下位機的通訊協(xié)議,以及單片機的編程下載操作等。
方案二是選用Linux嵌入式系統(tǒng),運算力強,ROS安裝方便,可對IO進行操作。一個模塊就能完成上述所有操作,大大降低復(fù)雜度。
由于我手里擁有一塊jetson_nano,故采用方案二。
IMX219攝像頭。808萬像素、83度視場角,22%畸變和180幀/s的幀率,微小的體積使得它在窄邊框結(jié)構(gòu)的機械臂上也能安裝。
觀察機械臂的運動范圍,以底座為基坐標(biāo),攝像頭正前方為Y軸正半軸,向右為X軸正半軸;在X=0cm,Y=25cm處畫一個圓心,以該圓心為中間點畫一個15cm×15cm的矩形框用于后面的定位計算。定位框如圖4所示。
圖4 定位框
設(shè)計主要包括:①找方框邊緣,把其四邊進行透視變換后作為圖像的四邊。②圖像中,根據(jù)HSV原理找到物體并求物體中心點。③實際中,由物體中心點的位置轉(zhuǎn)換得到物體的坐標(biāo)。④結(jié)合物體坐標(biāo)及夾爪投影算得末端坐標(biāo)系的定位。⑤服務(wù)端把定位通過ROS server通訊發(fā)送出去,客戶端獲得定位后用機械臂逆運動學(xué)解出各關(guān)節(jié)角度。⑥驅(qū)動舵機轉(zhuǎn)動,進行抓取、投放、復(fù)位。
為達到視野最廣,調(diào)整機械臂關(guān)節(jié)使相機與地面形成斜視45°,此時視野下的方框呈像類似梯形。首先我們找出方框輪廓:運用OpenCV(Open Source Computer Vision Library,機器視覺庫),把RGB圖像轉(zhuǎn)灰度之后,進行高斯濾波、二值化、腐蝕、膨脹、提取輪廓點集。再根據(jù)左上,左下,右下,右上四點將輪廓進行透視變換矯正后作為圖像(640×480)的四邊。然后將物體放入視野進行顏色識別。透視變換效果示意圖如圖5所示。
圖5 透視變換效果示意圖
HSV(Hue, Saturation, Value)六面椎體模型如圖6所示,其中H表示色調(diào),S表示飽和度,V表示亮度。HSV格式的圖像比RGB格式的圖像能夠明顯的顯示出顏色差異程度[2],對于顏色識別來說更方便,提高識別率。
圖6 HSV六面椎體模型
運用OpenCV庫,主控制器先讀取到RGB格式的圖像,經(jīng)濾波處理后轉(zhuǎn)換到HSV格式,把每一個像素點的HSV值與目標(biāo)顏色的HSV值進行比對,濾除掉范圍值之外的像素,剩下相對集中的像素即為目標(biāo)物體;提取其輪廓點集,用方框框出,方框中心點即圖像中物體中心點。常見顏色對應(yīng)的HSV范圍見表1。
表1 常見顏色對應(yīng)的HSV范圍
X坐標(biāo)計算:由公式(point_x-image_x)/640=(object_x-x)/150計算。其中object_x是待求量;point_x代表圖像中物體中心點橫向坐標(biāo);image_x代表圖像中心點坐標(biāo);x是基坐標(biāo)系的X坐標(biāo),即為0;640是圖像的像素點寬度,150是方框?qū)嶋H寬度,單位mm。
Y坐標(biāo)=機械臂底座距方框最近邊的距離+方框?qū)挾?2+物體對于方框中心點的縱向坐標(biāo)。而物體對于方框中心點的縱向坐標(biāo)計算方法與物體X坐標(biāo)計算類似。
我們知道,運動學(xué)逆解求得的是末端坐標(biāo)系到達的位置[3],不是夾爪夾取的位置,因此要想由末端坐標(biāo)系的定位來做逆解運算,還需要先利用三角函數(shù)求夾爪在坐標(biāo)系的投影長度。
X,Y坐標(biāo)求解:實際測得夾爪的長度為0.12m。對夾爪進行x,y方向上的投影,如圖7所示。末端坐標(biāo)系的X,Y坐標(biāo)=物體的X,Y坐標(biāo)-投影長度。
圖7 夾爪的x,y軸投影
Z坐標(biāo)求解:如圖8所示,Z坐標(biāo)=物體的Z坐標(biāo)+投影長度。因為夾取的是生活中的小件物品,其自身高度可忽略不計,即物體的Z坐標(biāo)為0。
圖8 夾爪的z軸投影
接下來創(chuàng)建ROS服務(wù)端節(jié)點,當(dāng)收到客戶端請求時把末端坐標(biāo)系的定位通過ROS server通訊發(fā)送給客戶端。
機械臂的正運動學(xué)是指已知每個關(guān)節(jié)角度,求解末端坐標(biāo)系相對于底座坐標(biāo)系的變換方矩陣。求解步驟如圖9所示。
圖9 機械臂正運動學(xué)求解
其中的DH參數(shù)法[4]是一種用于描述串聯(lián)式鏈路上連桿和關(guān)節(jié)幾何關(guān)系的系統(tǒng)方法,簡單來說描述的就是連桿坐標(biāo)系之間的關(guān)系。本文中的機械臂的DH參數(shù)如表2所示,其中各個參數(shù)的含義如下:
表2 DH參數(shù)
(1)連桿長度αi-1:沿xi-1方向zi-1到zi的距離。(2)連桿轉(zhuǎn)角αi-1:沿xi-1方向zi-1旋轉(zhuǎn)到zi的角度。(3)連桿偏距di:沿zi方向,到xi-1到xi的距離。(4)關(guān)節(jié)角θi:沿zi方向,xi-1旋轉(zhuǎn)到xi的角度。
DH表中的參數(shù)通常由URDF文件讀出,URDF是一種使用xml格式描述的機器人模型文件。
機械臂的逆運動學(xué)是指已知機械臂的末端坐標(biāo)系的坐標(biāo),即已知齊次變換矩陣,求解各關(guān)節(jié)的角度。因此機械臂的逆運動學(xué)問題,可以理解為通過上述正運動學(xué)方程求解關(guān)節(jié)的θ1、θ2、θ3、θ4、θ5。
客戶端得到末端坐標(biāo)系的坐標(biāo)后,逆解出關(guān)節(jié)角度,依據(jù)關(guān)節(jié)的運動范圍對其做出適當(dāng)調(diào)節(jié)。繼而主控制器控制舵機轉(zhuǎn)動相應(yīng)角度并夾取,然后讓機械臂運動不同的軌跡到對應(yīng)的容器上方進行投放,最后機械臂復(fù)位等待下一次抓取。
本次設(shè)計的分揀機采用機械臂作為機身,jetson_nano為控制核心,使用單目攝像頭進行圖像采集,以Python作為語言,調(diào)用一系列如OpenCV等工具,以物理原理、數(shù)學(xué)運算作為支撐,實現(xiàn)了對生活中常見物品如鵝卵石等的顏色識別并分揀投放,如圖10所示。隨著我國工業(yè)化程度不斷提高,可將分揀機進一步推廣到其他應(yīng)用當(dāng)中,比如依據(jù)顏色對水果的品質(zhì)挑選、中藥挑選等,該分揀機將會有更大的應(yīng)用價值。
圖10 分揀機對鵝卵石顏色分揀