鄒 洵 張 帆 張國勝 馬保平 張召穎
(上海工程技術大學機械與汽車工程學院 上海 200072)
在生產過程中,對于識別出來的殘次零件需要抓取剔除,由于殘次品的識別與迅速抓取難以使用人力進行操作并且成本過高[1]。需要使用專業的攝像頭識別殘次品并用機器人代替人工抓取[2]。經過幾年的發展,證明了機器人具有極高的代替人力工作的能力,雖然目前市面上的部分機器人擁有此功能,如安川機器人,具有極高的安全性[3];新松機器人,是市面上極少數的具有七自由度的協作機器人[4]。但是成本太高,并且入門難,購買的企業難以實現二次開發,最終難以推廣[5]。因此我們需要開發出一套操作簡單,成本較低,未來有升級潛力,并且對于絕大數中小企業都能夠使用的控制系統。
綜上,為實現以上既定目標,通過后期調研,本研究最終選擇了基于開源機器人操作系統ROS(Robot Operating System),以生產線上對于目標物品的抓取為應用背景,搭建了控制系統平臺[6],進行控制系統設計并作了相應的仿真及實物控制實驗。
機器人的運動學正逆解求解是對抓取機器人進行位置和姿態分析的第一步[7]。由于不同機器人的正逆解不同,本研究對象的機器人為三個相鄰關節軸相互平行的六自由度機器人[8]。其運動學正解是在電機轉動角度和幾何參數已知的基礎上,推算出機器人抓取的位置和姿態等參數。逆解則與正解恰恰相反[9]。在實際生產中,我們已知末端抓手的最終位置,通過運動學逆解推算出每個關節對應的三維坐標以及各個電機的絕對位置,使得每個關節運動到唯一的指定位置,從而完成每個末端抓手的定位。如表1所示,本研究采用D-H法建立連桿坐標系[10],在6個連桿上分別建立各個連桿的坐標系,通過各個坐標系之間的齊次變換矩陣的多次運算,最終得到機器人末端抓手相對于基坐標系的位姿矩陣[11]。

表1 機器人D-H參數表
其中參數如下:1)i:連桿;2)di:連桿偏置;3)ai:連桿長度;4)αi:連桿扭曲;5)θi:關節角度。
抓取機器人可看做是由末端抓手和各個連桿串聯而組成的。為此,若根據機械手的連桿建立坐標系,首先需要為每個連桿均建立一個小坐標系,則這些不同連桿坐標系間的相對關系可以采用齊次坐標變換矩陣表示[12]。本研究中將這類矩陣統稱為矩陣A,定義順序為從基坐標到末端抓手的坐標系齊次變換矩陣分別為A1,A2……。則二號連桿相對于基坐標的位置和位姿可由A1和A2的乘積表示,即:

同上,若A3表示三號連桿相對于二號連桿的位置和位姿,即:

6個連桿坐標系屬于依次相連,它們之間的坐標變換關系可以通過變換矩陣來描述A1A2A3A4A5
A6。這樣機械手末端位姿可表示為

式中:nx,ny,nz分別表示機器人抓手的坐標軸X6相對于初始坐標系在X,Y,Z軸的方向余弦;ox,oy,oz分別表示機器人抓手的坐標軸Y6相對于初始坐標系在X,Y,Z軸的方向余弦;ax,ay,az分別表示機器人抓手的坐標軸Z6相對于初始坐標系在X,Y,Z軸的方向余弦;px,py,pz表示機器人抓手的坐標軸相對于初始坐標系的位置坐標。
其中,連桿i相對于連桿i-1的變換矩陣為

式(4)中:θn為關節角,由于一個關節中包含兩條公垂線,因而在一個平面上產生投影,投影間的夾角即為θn;αn為連桿扭轉角,即第n+1個關節軸線與第n個關節軸線和公垂線構成的平面的夾角;dn為連桿偏移量,即一個關節的兩條公垂線之間的偏移距離;C和S為縮寫的cos和sin;n為關節數,本課題為六自由度機器人,故而n為6。
將表1中的參數代入式(1),式(2),即可求出運動學正解。
通過機器人抓手末端的位姿,逆向求解出各個關節的位姿,但是可能存在多解的情況,即部分關節可能出現多種符合要求的位置和姿態,因此計算量較大。為了方便計算,我們引入了逆變換法[13],通過已知矩陣逆推出各個關節的參數,用此法求解需要注意各個關節的參數求解順序,并不是按照從后往前依次進行,即求逆解的過程中先求θ1,θ5,θ6,后求θ2,θ3,θ4。求θ2,θ3,θ4時,先求θ2,θ3,θ4這3個平行關節的一個角度θ2,然后求θ23,通過(θ23-θ2)求得θ3,再求θ234,用(θ234-θ23)求解θ4。其中θ23=θ2+θ3,θ234=θ2+θ3+θ4。通過此法可求出運動學逆解的各個關節參數。
在如圖1所示的工作環境中,在識別區域上方安裝攝像頭,當裝有物品的收納盒放置到指定位置后,攝像頭進行殘次品識別,若識別到殘次品,則將殘次品的位置發送給工控機。工控機控制抓取機器人運動到指定位置,抓取殘次品并放置回收箱。若沒有識別到殘次品,則發送消息,告訴上位機,準備下一個物品的識別。

圖1 抓取機器人整體
本控制過程分為三個部分:圖像識別、機器人運動、抓手控制。對于抓取機器人的控制,實質上是對于各個關節處電機轉動角度、速度、開關時間的控制以及末端抓手位置和位姿的控制。故而本控制系統具體控制步驟如下。
1)調用攝像頭,進行圖像識別,識別出殘次品,發送數據給控制總站,總站分析后發送信息給機器人控制系統,準備抓取目標物品。
2)機器人接收數據后,通過攝像頭反饋信息定位目標物品,規劃運動路徑,驅動機器人運動到目標位置。
3)當機器人運動到指定位置時,調整抓手的位置和位姿,并啟動抓手,抓取殘次零件,并放置回收箱中。
4)機器人歸位,準備下一次抓取。
總體控制過程如圖2所示。

圖2 控制過程流程圖
ROS是一款機器人控制開發系統。它包含了三維重建、動態仿真、實時場景仿真、實物控制等多種功能,能夠最大化地提供機器人開發的各種需求[14]。其為建立在Ubuntu[15]系統下的一款內置操作系統,但與系統的進程管理沒有關系。它提供各種功能包,然后通過點對點機制建立功能包之間的通訊,搭建控制平臺,實現機器人的仿真和實物控制。
1)Urdf文件的搭建
編寫urdf文件[16],包含機器人模型及其內部結構、關節、自由度、色彩等參數。這是ROS可識別的XML文件,為后續工作做準備。
2)MoveIt!配置功能包
ROS的MoveIt!是專門為可移動操作平臺而開發出的ROS軟件包[17]。它集成了路徑規劃、立體感知、運動學、運動控制和導航領域的集成軟件,提供一個開發高級機器人應用的易用軟件平臺。圖3展示了ROS MoveIt!的高層框架。其中,Move_Group節點處于核心地位。其作為樞紐,連接了各個獨立的構件,提供完成的服務。整體框架如下。

圖3 ROS MoveIt!高層框架
3)機器人仿真
將配置好的機器人導入至ROS內置的3D可視化工具(以下簡稱rviz)中,可以進行規劃不同目標、在場景中添加和移除對象等操作。對于本研究而言,將抓取機器人模型導入至rviz中,并在其中添加抓取對象,控制機器人抓取目標對象,進行仿真實驗。
本研究調用ROS模塊,以其內置的算法為核心,結合本研究目標,計算出各關節的必要參數,最后下發給各電機。具體步驟如下。
1)在solidworks里繪制機器人三維圖,然后調用SW2URDF插件轉換為ROS可識別的文件,最后進行ROS下的Setup配置,設定末端執行器的初始位置。
2)進行控制系統編程設計。Rviz界面打開配置好的仿真機器人,接收上位機發送的末端坐標,即可調用路徑規劃算法計算出每個關節運動到目標位置所需要的轉動角度、速度、加速度、位置等參數,并且依次將每部分的計算結果發送出去。
3)以控制器局域網通訊(Controller Area Network,CAN通訊)的方式建立上下位機的通訊,將計算出的每個關節的轉動角度及其他必要參數,通過通信接口發送給下位機。
4)下位機芯片接收數據,轉換為電機可識別的參數發送給電機,進而控制機器人運動。
實物抓取機器人基于UR協作機器人,在末端執行器上安裝抓手。上位機接收殘次品位置信息并發送給機器人,通過通訊發送給機器人內置芯片,芯片通過分析接收的數據,轉換為電機可識別的參數,進而控制電機的轉速、轉動時間等。其次,抓手運動到指定位置,再細調抓手的位置和位姿,最終實現抓手的抓取并放置殘次品至回收箱內。機器人實驗過程如圖4所示。圖4(a)為機器人移動初試位置,隨后接收指令,移動至圖4(b),并抓取目標,隨后通過路徑規劃,其過程如圖4(c)所示,移動至目標位置,如圖4(d)所示。

圖4 實物機器人控制實驗
為實現對于抓取機器人控制系統設計,本研究基于Ubuntu系統下結合ROS實現了對于抓取機器人的控制系統設計。開發了一套基于ROS的控制系統,并改進了ROS中上下位機的通訊方式,達到了在保證原有實時性和魯棒性前提下適用性廣、操作簡單的通訊方式,并搭建了仿真實驗和實物控制實驗。由實驗可知,控制系統能夠實現殘次品的抓取,有實際的應用背景和經濟價值。未來,可將收納盒放置在流水線上,形成全自動化生產線,大力提高生產效率。