劉 虹,張得軍
(1.合肥工業(yè)大學(xué) 機(jī)械工程學(xué)院,合肥 230009;2.合肥工業(yè)大學(xué)智能制造技術(shù)研究院,合肥 230009)
近年來,世界主要大國都在工業(yè)生產(chǎn)中大規(guī)模應(yīng)用各類工業(yè)機(jī)器人,在工業(yè)機(jī)器人技術(shù)飛速發(fā)展的同時,工業(yè)機(jī)器人開發(fā)過程中也面臨著一些問題:例如機(jī)器人控制系統(tǒng)的封閉性[1];工業(yè)機(jī)器人智能化程度低;模塊化和系統(tǒng)化不足;編程效率低下[2];機(jī)器人開發(fā)時間長、成本高等。為了解決機(jī)器人研究工作量大、耗時長,難以在現(xiàn)代社會普遍應(yīng)用的問題,機(jī)器人研究者開發(fā)了大量的機(jī)器人軟件平臺,在這些開發(fā)平臺中,機(jī)器人操作系統(tǒng)ROS受到了廣泛關(guān)注,為解決當(dāng)前機(jī)器人開發(fā)面臨的問題提供了新的方法。ROS是機(jī)器人系統(tǒng)設(shè)計的軟件框架,具有跨平臺、多語言支持、代碼復(fù)用等多個優(yōu)點(diǎn),為各種機(jī)器人開發(fā)提供了極大的便利[3]。ROS-I在復(fù)用ROS已有的框架和功能上,對工業(yè)領(lǐng)域進(jìn)行了針對性的擴(kuò)展,極大的降低了工業(yè)機(jī)器人的開發(fā)的難度。
本文首先簡單介紹了ROS-I項目并基于ROS-I搭建了埃夫特弧焊機(jī)器人仿真平臺,然后通過Descartes運(yùn)動規(guī)劃庫完成了弧焊機(jī)器人笛卡爾空間運(yùn)動規(guī)劃仿真,最后通過機(jī)械動力學(xué)軟件ADAMS對規(guī)劃的結(jié)果進(jìn)行驗證。
ROS是一個面向機(jī)器人的開源操作系統(tǒng)[4],其中包含了大量的用于機(jī)器人開發(fā)的工具和庫,提供了統(tǒng)一的機(jī)器人開發(fā)框架和標(biāo)準(zhǔn)的接口[5]。在2011年,為了將ROS軟件的強(qiáng)大功能擴(kuò)展到工業(yè)領(lǐng)域,美國西南研究所(SwRI)和Willow Garage公司以及安川機(jī)器人公司率先將ROS引入工業(yè)自動化領(lǐng)域,發(fā)起了ROS-Industrial項目。
在ROS中,MoveIt!是一個功能非常強(qiáng)大的機(jī)器人運(yùn)動規(guī)劃工具。它集成了很多已經(jīng)被廣泛使用的第三方庫,包括運(yùn)動學(xué)和動力學(xué)庫KDL、開放運(yùn)動規(guī)劃庫OMPL和快速碰撞檢查庫FCL等。MoveIt! 能夠自動實現(xiàn)碰撞檢查,由隨機(jī)采樣的運(yùn)動規(guī)劃算法庫OMPL規(guī)劃的軌跡會避開障礙物和自身干涉等碰撞狀態(tài)[6]。在默認(rèn)情況下,ROS中機(jī)器人的正、逆運(yùn)動學(xué)的計算是使用KDL庫完成的,為了提高運(yùn)算的效率,用戶可以利用OpenRave的IKFast模塊生成解析器插件,從而可以將運(yùn)動規(guī)劃求解的速度提高三個數(shù)量級。ROS-Industrial的體系結(jié)構(gòu)框圖如圖1所示。
圖1 ROS-Industrial的體系結(jié)構(gòu)框圖
MoveIt! 目前主要專注于機(jī)器人抓握和取放操作方面的應(yīng)用,但是在實際的工業(yè)應(yīng)用中,比如弧焊機(jī)器人執(zhí)行焊接作業(yè)任務(wù),既要指定機(jī)器人末端執(zhí)行器的起始位姿和目標(biāo)位姿,還要插補(bǔ)出其中間點(diǎn)的位姿。為了解決約束條件下的笛卡爾軌跡規(guī)劃問題,ROS-Industrial項目開發(fā)了Descartes規(guī)劃庫。
Descartes規(guī)劃庫主要用于規(guī)劃具有笛卡爾路徑的機(jī)器人動作軌跡,它能夠快速規(guī)劃出性能優(yōu)異的規(guī)劃軌跡并將規(guī)劃的結(jié)果保存在內(nèi)存中,即使當(dāng)機(jī)器人路徑發(fā)生變化,Descartes庫也能夠快速規(guī)劃新的關(guān)節(jié)軌跡。
在ROS中要對工業(yè)機(jī)器人進(jìn)行仿真,首先必須創(chuàng)建能夠描述機(jī)器人結(jié)構(gòu)的URDF(Unified Robot Description Format)文件[7]。URDF是一種用于描述機(jī)器人連桿件和關(guān)節(jié)的XML格式文件,不僅能夠抽象描述一個機(jī)器人的硬件,還可以描述整個機(jī)器人的工作空間。
本文研究的工業(yè)機(jī)器人三維模型來自埃夫特公司官網(wǎng)。通過SolidWorks處理后的機(jī)器人模型如圖2所示。
圖2 弧焊機(jī)器人三維模型
為了快速將機(jī)器人三維模型轉(zhuǎn)換為相應(yīng)的URDF文件,在SolidWorks中通過SW2URDF插件創(chuàng)建包含機(jī)器人URDF文件的功能包,然后即可通過Rviz[8]顯示出機(jī)器人的仿真模型。
為了幫助機(jī)器人開發(fā)者快速配置MoveIt!,其提供了一個具有用戶界面的設(shè)置助手(MoveIt! Setup Assistant)[9],它可以幫助機(jī)器人開發(fā)者定制機(jī)器人和運(yùn)動規(guī)劃框架的初始配置,簡化了設(shè)計編譯工作。這些配置包括自碰撞矩陣、虛擬關(guān)節(jié)列表、規(guī)劃組定義、機(jī)器人姿勢、末端執(zhí)行器設(shè)置以及被動關(guān)節(jié)列表[10]。
弧焊機(jī)器人在執(zhí)行焊接作業(yè)時,其末端執(zhí)行器沿著給定的路徑運(yùn)動,那么就需要在笛卡爾空間進(jìn)行軌跡規(guī)劃[11]。所謂笛卡爾軌跡規(guī)劃就是在已知機(jī)器人末端的初始狀態(tài)和終止?fàn)顟B(tài)的條件下,通過插補(bǔ)算法求解出運(yùn)動軌跡的中間軌跡點(diǎn)的狀態(tài),然后使用逆運(yùn)動學(xué)求解出各中間軌跡點(diǎn)狀態(tài)所對應(yīng)的關(guān)節(jié)角度值[12]。本文主要針對弧焊機(jī)器人的笛卡爾空間軌跡規(guī)劃問題進(jìn)行討論。
已知弧焊機(jī)器人末端執(zhí)行器的起點(diǎn)A(xA,yA,zA)和終點(diǎn)B(xB,yB,zB),機(jī)器人末端執(zhí)行器按照直線運(yùn)動從起點(diǎn)運(yùn)動到終點(diǎn),則起點(diǎn)和終點(diǎn)之間的插補(bǔ)點(diǎn)坐標(biāo)為:
xi=(1-t)xA+txB
yi=(1-t)yA+tyB
(1)
zi=(1-t)zA+tzB
假設(shè)機(jī)器人末端從起點(diǎn)P1(x1,y1,z1)經(jīng)過中間點(diǎn)P2(x2,y2,z2)到達(dá)終點(diǎn)P3(x3,y3,z3),則圓弧軌跡規(guī)劃的步驟如下:
步驟1:求圓心坐標(biāo)P0(x0,y0,z0)和半徑R。已知在空間中三個不共線的點(diǎn)可以構(gòu)成一個平面,則相鄰兩點(diǎn)構(gòu)成的線段的垂直平分線的交點(diǎn)即為圓弧的圓心,而圓弧的半徑為:
(2)
步驟2:建立坐標(biāo)系o-uvw。取圓心Po為坐標(biāo)原點(diǎn),設(shè)POP1方向為u軸的方向,則POP2和POP1的叉乘所得向量方向就是w軸的方向,v軸方向可由w軸和u軸方向向量叉乘得到。
(3)
步驟4:在新坐標(biāo)系上對圓弧進(jìn)行插補(bǔ)。設(shè)圓弧上有一點(diǎn)P,在坐標(biāo)系o-uvw的坐標(biāo)為(u,v,w),相應(yīng)的歸一化時間算子為λ,POP和POP1的夾角為θ,POP1和POP2的夾角為θ0,則:
θ=λθ0
(4)
(5)
步驟5:將插補(bǔ)結(jié)果變換到基坐標(biāo)系。設(shè)點(diǎn)P在機(jī)器人基坐標(biāo)系的坐標(biāo)為(x,y,z),則有:
(6)
即為基坐標(biāo)系下圓弧位置插補(bǔ)點(diǎn)的坐標(biāo)值。
對于直線運(yùn)動軌跡規(guī)劃,以角焊接為例,取直線焊縫的起點(diǎn)A的位置坐標(biāo)為(1.2,-0.4,0.26) ,終點(diǎn)B位置坐標(biāo)為(1.2,0.4,0.26),然后采用前面的直線軌跡規(guī)劃算法進(jìn)行插補(bǔ)運(yùn)算,如圖3所示。
圖3 直線軌跡規(guī)劃
rqt_plot 是ROS 下的一個繪圖插件,可以實時繪制出機(jī)器人關(guān)節(jié)角度的變化曲線[13]。弧焊機(jī)器人末端執(zhí)行器沿著直線軌跡時,機(jī)器人各個關(guān)節(jié)角度變化如圖4所示。
圖4 機(jī)器人6個關(guān)節(jié)的角度變化
對于圓弧軌跡規(guī)劃,以管-板相貫線焊接為例,相貫線焊縫的半徑為0.2,圓心的坐標(biāo)為(1.0,0,0.26),焊縫的起始點(diǎn)為(1.2,0,0.26),運(yùn)動一周之后再次回到焊縫起始點(diǎn)。采用前面的圓弧軌跡規(guī)劃算法進(jìn)行插補(bǔ)運(yùn)算,總共插值40個點(diǎn),如圖5所示。
圖5 圓弧軌跡規(guī)劃
弧焊機(jī)器人末端執(zhí)行器沿著圓形軌跡運(yùn)動時,各個關(guān)節(jié)角度變換如圖6所示。
圖6 機(jī)器人6個關(guān)節(jié)的角度變化
為了對Descartes庫的規(guī)劃結(jié)果進(jìn)行驗證,將上面的機(jī)器人6個關(guān)節(jié)的角度數(shù)據(jù)進(jìn)行處理并導(dǎo)入到機(jī)械動力學(xué)軟件ADAMS中進(jìn)行仿真,得到弧焊機(jī)器人執(zhí)行直線焊接時,焊槍末端的位移、速度和加速度曲線如圖7~圖9所示。
圖7 焊槍末端的位移
圖8 焊槍末端的速度
圖9 焊槍末端的加速度
從弧焊機(jī)器人焊槍端點(diǎn)的位移、速度和加速度曲線圖中可以看出:弧焊機(jī)器人焊槍末端的位移非常平穩(wěn),速度和加速度也沒有出現(xiàn)較大的突變?;『笝C(jī)器人的焊槍末端在X軸和Z軸方向的位移始終分別保持在1.2m和0.26m,在Y軸方向從-0.4m勻速增加到+0.4m。說明弧焊機(jī)器人的焊槍沿著機(jī)器人的基座Y軸方向幾乎做水平勻速運(yùn)動,符合實際的運(yùn)動情況。
弧焊機(jī)器人執(zhí)行圓形焊接時,焊槍端點(diǎn)的位移、速度和加速度數(shù)曲線如圖10~圖12所示。
圖10 焊槍端點(diǎn)的位移
圖11 焊槍端點(diǎn)的速度曲線
(a)X方向的加速度
(b)Y方向的加速度
(c)Z方向的加速度圖12 焊槍端點(diǎn)的加速度曲線
從弧焊機(jī)器人焊槍末端的位移、速度和加速度曲線中可以看出:焊槍末端在機(jī)器人基座的X方向為余弦運(yùn)動,在Y軸方向為正弦運(yùn)動,在Z軸方向始終保持0.26m,與實際情況相符,弧焊機(jī)器人焊槍末端的位移和速度曲線較平穩(wěn),說明弧焊機(jī)器人在執(zhí)行焊接時沒有出現(xiàn)較大的沖擊,能夠很好的完成焊接任務(wù)。
本文基于ROS-I搭建了弧焊機(jī)器人仿真平臺,完成了機(jī)器人笛卡爾空間的直線和圓弧軌跡的構(gòu)建并通過Descartes庫對弧焊機(jī)器人的直線和圓弧軌跡規(guī)劃進(jìn)行了運(yùn)動仿真,在軌跡規(guī)劃的基礎(chǔ)上,通過機(jī)械動力學(xué)軟件ADAMS得到了機(jī)器人在這兩種情況下焊槍末端的位移、速度和加速度曲線。研究結(jié)果表明,ROS-I平臺的Descartes庫不僅能夠提高機(jī)器人笛卡爾運(yùn)動規(guī)劃的效率,降低機(jī)器人笛卡爾運(yùn)動規(guī)劃的難度,而且其規(guī)劃的結(jié)果具有較高的精度和可靠性,為弧焊機(jī)器人在復(fù)雜環(huán)境中的軌跡規(guī)劃提供了一個可供參考的方案。