黃 偉,閔柏成,張世超
(中國船舶集團有限公司第七二三研究所,江蘇 揚州 225101)
使用機器人替代一些傳統(tǒng)的制造產業(yè)是實現制造強國的必要途徑[1-3],機器人建模與仿真技術已成為研究機器人的一個不可或缺的途徑。目前機器人仿真軟件常見的有RobotStudio、RoboGuide等,但這些軟件需要昂貴的價格和后續(xù)使用價格。三維軟件如UG、PROE等雖然可以進行仿真,但是其擴展性差[4]。OpenGL圖形庫功能強大,但需大量軟件開發(fā)工作才能用于機器人建模和仿真。Matlab機器人工具箱的仿真顯示效果比較差,難以進行逼真的仿真。CoppeliaSim仿真軟件可以將三維軟件里面的精確模型導入其中進行仿真,還可以聯(lián)合Python、Matlab等軟件進行聯(lián)合仿真[5]。利用Matlab的矩陣計算優(yōu)勢,結合CoppeliaSim仿真軟件進行聯(lián)合仿真,可以建立多種機器人工作環(huán)境,并可以快速進行運動學解算[6]。
在CoppeliaSim仿真平臺中進行機器人的模型建立,先通過三維軟件(例如UG、PROE等)畫出機器人各個部件的三維信息,然后將其轉化成stl格式的文件;其次在CoppeliaSim仿真平臺中導入這些文件,即可以看到各個部件在CoppeliaSim軟件界面上;最后在CoppeliaSim軟件中添加相關關節(jié)的位置姿態(tài)信息,將各個導入的機器人部件附屬在各個關節(jié)上,建立好機器人各系統(tǒng)的樹形結構,附屬好關節(jié)的部件就會隨著機器人關節(jié)的旋轉進行相應的跟隨運動。圖1(a)為在CoppeliaSim中建立的UR5模型,圖1(b)為在CoppeliaSim中建立的樹形結構圖。整個流程如圖2所示。

圖1 CoppeliaSim中建立的UR5模型及其結構樹

圖2 CoppeliaSim中建立機器人模型的流程
UR5機器人為6自由度串聯(lián)機器人模型,可以用標準D-H建模法對UR5進行建模。圖3、圖4分別為UR5結構圖和其標準D-H參數坐標系圖。以UR5機器人為例,由表1的參數可以進行運動學方程的推導。坐標系從{i-1}到坐標系{i}的變換矩陣可以寫成:

表1 UR5型機器人的連桿參數表

圖3 UR5機器人結構圖

圖4 UR5機器人D-H坐標系
(1)
代入表1中參數,最終變換矩陣為:
(2)
就完成了正運動學的求解。
逆運動學求解是已知變換矩陣T,求6個關節(jié)角度。逆運動學求解有解析法、迭代法,這里采用解析法求解。逆運動學算法求解的角度范圍為θ∈[-π,π],因為標準的反正切arctan的值域是[-π/2,π/2],所以不能使用。使用一個改進的反正切的函數Atan2(y,x)(Matlab里有這個函數),這個反正切的求法值域也滿足要求。已知最終變換矩陣:
(3)
左右變換逆乘得到:
(4)
式(4)左右側第3行第4列對應相等,求得關節(jié)角θ1為:
(5)

式(4)左右2側第3行第3列對應相等,求得關節(jié)角θ5為:
θ5=±arccos(axs1-ayc1)
(6)
式中:axs1-ayc1≤1。
式(4)左右側第3行第1列對應相等,求得關節(jié)角θ6為:
θ6=Atan2(m,n)-Atan2(s5,0)=
Atan2(m/s5,n/s5),s5≠0
(7)
左右變換逆乘得到右側等式:
(8)
式(8)左右第1行第4列對應相等,第2行第4列對應相等,求得關節(jié)角θ3為:
(9)
式中:m2+n2≤(a2+a3)2,并有:
(10)
為了簡化縮寫,約定c23=cos(θ2+θ3),s23=sin(θ2+θ3)。
將式(10)展開,將θ3代入式(10),求得關節(jié)角θ2為:
θ2=Atan2(s2,c2)
(11)
約定s6=sinθ6,c6=cosθ6,式(8)左右第1行第2列對應相等,第2行第2列對應相等,求得關節(jié)角:
θ4=Atan2(-s6(nxc1+nys1)-c6(oxc1+oys1),
ozc6+nzs6)-θ2-θ3
(12)
假設6個關節(jié)角都取1°,經Matlab編程驗證得出末端位置姿態(tài)矩陣T。將得出的末端位置姿態(tài)矩陣在Matlab中代入逆運動學求解,得出8組逆解,其中一組為6個關節(jié)角,都是1°,從而驗證了運動學公式的正確性。
機器人完成碼垛作業(yè)需要知道搬運起始點和最終點的機器人末端位置和姿態(tài)。以UR5機器人為例,搬運長方體如圖5所示,UR5機器人搬運過程中,用末端手爪工具從傳送帶抓取物件,然后放置在指定的位置。

圖5 UR機器人碼垛及其坐標系之間的關系
圖5中{Ba}代表UR5基座坐標系;{6}代表UR5機器人末端坐標系;{M}代表UR5手爪工具坐標系;{0}代表起始抓取點坐標系;{1}代表搬運結束點的坐標系;{N}代表搬運過程中點的坐標系。各個坐標系關系組成一個閉環(huán)鏈如圖5(b),各個坐標系關系如下:
(13)
等式兩邊同乘以逆矩陣得:
(14)
式(14)給出了UR5機器人末端夾持工具沿給定軌跡運動時,機器人的運動學方程。除了{6}系相對于{Ba}系的位置和姿態(tài)在變動中不確定之外,其余的位姿都是預先規(guī)定好的,求出UR5碼垛運動軌跡上各個目標軌跡點處{6}系相對于{B}系的位姿,就完成了工件坐標系到機器人坐標系的轉換。
完成工件坐標系到機器人坐標系的轉換后,根據機器人運動學解算就可以求出機器人碼垛運動到各個軌跡點處所對應的機器人的各個關節(jié)角。
首先每組解對應關節(jié)角度值應該符合機器人手冊里規(guī)定的關節(jié)角取值范圍。其次從滿足關節(jié)角運動范圍的解集中選擇關節(jié)角絕對值之和最小的解,最小的解即是波動范圍最低的解,也是最合適的解。
求得的運動學反解往往不唯一,須根據機器人的各項參數和工作環(huán)境,從中選擇最合適的解[7]。
此關節(jié)角數據是在Matlab中計算生成的,并以弧度值的形式保存成文本格式,此文本可以用來提供給CoppeliaSim進行仿真。
CoppeliaSim軟件的運動仿真可以在建立好模型和場景的基礎上,通過對模型添加相應的腳本語言進行運動學和動力學控制,但是其不能進行位置姿態(tài)計算,也不能進行復雜的矩陣計算。機器人運動學動力學涉及到很多矩陣方面的知識,所以需要結合C、MATLAB、Python等語言進行矩陣運算,然后將運算結果提供給CoppeliaSim軟件進行仿真。本文的UR5機器人需要將4個長方體運送到指定位置,初始和最終長方體碼垛結束后的位置如圖6所示。

圖6 初始和最終長方體碼垛結束后的位置
本文用Matlab解算逆運動學生成UR5機器人進行碼垛運動所需的關節(jié)角,然后將關節(jié)角參數傳給CoppeliaSim軟件控制機器人進行運動。在CoppeliaSim軟件中添加腳本程序調用相應函數來控制機器人關節(jié)、傳送帶、手爪,具體參考CoppeliaSim中菜單欄的使用說明。當傳送帶將長方體傳送到指定位置時自動停止傳動,相同的長方體都傳送到相同的位置停止。長方體被送到傳送帶上指定的位置后,機器人通過控制各個關節(jié)的轉角讓手爪到指定位置進行抓取,靠近長方體時通過腳本程序設定夾住物塊,然后將長方體搬移至指定的位置上。重復上述操作,將所有長方體放置在相應的位置上,就完成了碼垛作業(yè)。
整個過程如圖7所示:(1)傳送帶送到指定位置;(2)UR5機器人移動到手爪夾取位置;(3)機器人進行裝夾;(4)機器人搬運到指定位置;(5)機器人夾具松開,機器人移動回原點;(6)重復上述5個步驟,將不同的長方體物塊放置在指定位置。

圖7 機器人碼垛過程
采用本文方法對UR5機器人碼垛過程進行了仿真。在CoppeliaSim中建立了機器人及碼垛作業(yè)環(huán)境的三維模型,對UR5機器人進行運動學分析并在Matlab中計算獲取了碼垛過程中的機器人各個關節(jié)的轉角軌跡,將Matlab生成的轉角信息傳遞給CoppeliaSim,在CoppeliaSim軟件仿真平臺中對碼垛作業(yè)過程進行了運動仿真。仿真結果表明,所提方法能夠生成無干涉碼垛運動軌跡和正確的機器人在運動中的各個轉角參數。本文方法可以運用到其它機器人仿真中。