李慧敏
(大同煤礦集團(tuán)機(jī)電裝備公司中央機(jī)廠, 山西 大同 037001)
機(jī)器人逆運動的求解一般有解析法與數(shù)值法。PIEPER[1]給出了六自由度機(jī)器人存在解析解的情況,然而對于不存在解析解以及解析解很難得到的情況下,只能利用數(shù)值迭代的方法求解機(jī)器人運動方程。
數(shù)值迭代法的求解速度雖然比解析解要慢得多,但其具有更加廣泛的適用性。常用的數(shù)值迭代法有牛頓迭代法[2]、共軛梯度法[3]等。這些求解方法的缺點在于收斂速度較慢,同時,合適的迭代初始值很難獲得。文獻(xiàn)[4]中提出基于雅可比逆矩陣求解方法[4],通過不斷修正機(jī)器人各個關(guān)節(jié)位置,最終使得機(jī)器人位姿與目標(biāo)位姿之間的誤差在預(yù)定的范圍內(nèi)。Matlab Robotics Toolbox[5]包含了豐富的機(jī)器人運動學(xué)庫函數(shù),其逆運動學(xué)求解函數(shù)正是基于雅可比偽逆矩陣的原理,同時在雅可比矩陣奇異的情況下,工具箱又轉(zhuǎn)而采用雅可比轉(zhuǎn)置的方法。本文即是以Puma560六軸機(jī)器人為例,對其求解的準(zhǔn)確性予以驗證。
機(jī)器人各個關(guān)節(jié)實際運動曲線與經(jīng)過線性化處理后,其關(guān)節(jié)矢量增量與機(jī)器人末端位姿變化關(guān)系可以表示為:
機(jī)器人末端執(zhí)行器在基坐標(biāo)下的位移Δx可以通過關(guān)節(jié)矢量Δq來得到。Δx越小,其線性關(guān)系越準(zhǔn)確。通過數(shù)值迭代計算的過程越接近真實運動曲線。同時在線性逼近的過程中,機(jī)器人末端位姿與目標(biāo)位姿之間的誤差要在預(yù)定的目標(biāo)之內(nèi)。
假設(shè)機(jī)器人末端執(zhí)行器目標(biāo)姿態(tài)分別表示為[Rf,Pf],當(dāng)前的位姿[Rc,Pc],因此位姿誤差可以表示為:
誤差 Δx=[ΔP,ΔW],||Δx||=||ΔP||+||ΔW||,其中 ΔP,ΔW分別為:
修正后的機(jī)器人關(guān)節(jié)適量增量為dq,因此迭代后得到的新的關(guān)節(jié)矢量q"=q+dq,當(dāng)計算得到的誤差Δx在設(shè)定的誤差范圍之內(nèi)時,q"即為逆運動學(xué)的解,當(dāng)誤差大于設(shè)定值時,則返回重新計算。
遇到雅克比矩陣為奇異矩陣時,直接計算雅克比的逆往往行不通,將式(1)展開,得到線性方程組的形式,并給出了其近似解:
式中:Jij為雅克比矩陣的第i行第j列元素。
針對雅克比矩陣奇異的情況,Matlab Robotics Toolbox也給出了其解決辦法,使用雅克比轉(zhuǎn)置來代替雅克比偽逆矩陣。
雅克比轉(zhuǎn)置的原理是給機(jī)器人每個關(guān)節(jié)上一組驅(qū)動力矩,從而驅(qū)動機(jī)械臂各關(guān)節(jié)運動向目標(biāo)靠近,最終機(jī)器人末端執(zhí)行器能夠收斂到目標(biāo)點的位置。同時為加快迭代速度,將求解步長增大α倍的處理方式,于是式(1)與式(7)變更為:
雅克比偽逆與雅克比轉(zhuǎn)置法都存在一定的弊端。偽逆雅克比法雖然迭代速度相對較快,但是無法解決矩陣奇異問題。雅克比轉(zhuǎn)置迭代法每次都需要沿迭代點的負(fù)梯度方向進(jìn)行搜索,故其收斂速度相較雅克比偽逆法而言較為緩慢。同時應(yīng)當(dāng)注意的是,使用數(shù)值方法求機(jī)器人運動學(xué)逆解最后只能限制計算結(jié)果的誤差大小,得到一組解。對于機(jī)器人運動學(xué)中存在的多重解問題,數(shù)值解法存在著一定的局限性。
Matlab Robotics Toolbox中包含了Puma560機(jī)器人模型,庫文件中對Puma560的運動與動力參數(shù)都予以定義,工具箱的機(jī)器人逆運動學(xué)求解函數(shù)ikine:式中
:q為求解得到的機(jī)器人關(guān)節(jié)角矢量,R為用戶定義的機(jī)器人模型,T為機(jī)器人基座標(biāo)系到末端坐標(biāo)系的齊次轉(zhuǎn)換矩陣。這里任意選取Puma560機(jī)器人的一個狀態(tài)來進(jìn)行驗證,如圖1所示。
圖1 Puma560機(jī)器人
圖1中所示的Puma560末端在基座標(biāo)系下的位置矢量為[0.294,0.014,0.659],對應(yīng)的 RPY 姿態(tài)角為[34.283,-50.523,-39.809],機(jī)器人關(guān)節(jié)角矢量為[33.3,33.8,-16.9,-10.8,41.7,-77.6],因此末端在基座標(biāo)下的齊次變換矩陣為:
利用ikine函數(shù),反解得到的關(guān)節(jié)角度矢量為:[33.3766,33.7471,-16.8847,-162.0685,-31.332 7,59.359 9],如圖2所示,繪制了其數(shù)值迭代狀態(tài)與時間的關(guān)系。橫軸表示的是迭代時間,為1 000 ms,q表示關(guān)節(jié)角度矢量,e表示迭代誤差,α表示求解步長放大倍數(shù)。
圖2 迭代狀態(tài)與時間的關(guān)系
由圖2可以看出ikine在求解過程中,關(guān)節(jié)角θ4,θ6值會出現(xiàn)較大的波動,但最終會收斂到某個值,ikine函數(shù)求解步長沒有做放大處理。
在驗證ikine求解效果時我們發(fā)現(xiàn),機(jī)器人末端的位置矢量是符合初始位置要求的,但姿態(tài)角并不能匹配機(jī)器人初始設(shè)定狀態(tài),ikine不能很好的處理6軸機(jī)器人逆運動學(xué)解問題,針對這種情況,Matlab Robotic Toolbox提供新的處理六自由度以上的機(jī)器人逆運動學(xué)方程求解函數(shù)ikine6s,利用ikine6s重新求解后我們得到一組新的關(guān)節(jié)角度矢量:
利用機(jī)器人正運動學(xué)可以推導(dǎo)其末端在在基座下的位姿變換矩陣:
式(13)與式(11)是完全吻合的,可以看出ikine6s的求解結(jié)果具有較高的精度,但是只得到一組解,ikine6s無法處理機(jī)器人運動學(xué)中存在的多重解問題。
1)機(jī)器人運動學(xué)方程的數(shù)值解法有廣泛的適用性,雅克比偽逆與雅克比轉(zhuǎn)置的求解方法都可以在線性逼近的過程中,限定機(jī)器人末端位姿與目標(biāo)位姿之間的誤差。雅克比偽逆法雖然迭代速度相對較快,但是無法解決矩陣奇異問題。
2)Matlab Robotic Toolbox中的機(jī)器人逆運動學(xué)求解是基于雅克比偽逆與雅克比轉(zhuǎn)置法的,其庫函數(shù)ikine的迭代結(jié)果僅能滿足末端位置需求,不能很好的解決復(fù)雜自由度機(jī)器人逆運動學(xué)方程問題,而專門針對六軸或六軸以上機(jī)器人的求解函數(shù)ikine6s求解結(jié)果具有較高的精度,因此利用Matlab Robotic Toolbox可以快速計算出機(jī)器人目標(biāo)軌跡的離散點角度矢量信息,無需得到其解析解,其缺點在于只能得到一組解,無法解決多重解的問題。