趙鐵軍,楊偉林
(沈陽工業(yè)大學 機械工程學院,遼寧 沈陽 110870)
機器人運動學建模常采用D-H(Denavit&Hartenberg)法[1];誤差辨識常將智能算法應(yīng)用在該領(lǐng)域,其中遺傳算法[2]、粒子群算法[3]較為常用。以上方法都被驗證可行,但算法都較為復(fù)雜。人工魚群常用作雷達參數(shù)與電機參數(shù)的參數(shù)估計,且算法參數(shù)較少,將其應(yīng)用于機器人參數(shù)辨識可降低算法復(fù)雜度。張宏偉[4]利用傳統(tǒng)人工魚群算法進行參數(shù)辨識,但只能進行粗辨識。陳淑英等[5]采用傳統(tǒng)人工魚群與相關(guān)向量機結(jié)合的方法對機器人進行參數(shù)辨識,辨識效果好,但算法復(fù)雜度偏高。本文結(jié)合以上分析,就機器人標定問題修改了目標函數(shù),將其轉(zhuǎn)化為關(guān)于機器人幾何誤差的高維非線性方程,將位姿誤差和的最小值作為目標函數(shù),根據(jù)朱旭輝等的研究[6],結(jié)合本文確定的目標函數(shù),對參數(shù)誤差尋優(yōu)。通過實際仿真驗證,證明了該方法應(yīng)用在此領(lǐng)域有效。
在建立機器人理論運動學模型時,常用D-H的建模方法,但由于實際上機器人相鄰兩關(guān)節(jié)軸間存在平行度誤差而又不完全平行,就會導致關(guān)節(jié)參數(shù)突變。故為了更好地表示實際機器人模型,Hayati等提出了MD-H(modified D-H)方法,該方法的相鄰兩桿矩陣表示形式[7]為:
(1)
其中:θi為坐標變換過程中繞z軸的關(guān)節(jié)轉(zhuǎn)角;di為連桿偏移量;ai為桿長;αi為連桿扭轉(zhuǎn)角;βi為關(guān)節(jié)坐標系繞y軸旋轉(zhuǎn)的轉(zhuǎn)角。另外,cθi=cosθi,sθi=sinθi,限于篇幅,其余符號表達式同理可得。
由式(1)可知,相鄰兩桿間幾何參數(shù)為5個,即(θi,di,ai,αi,βi),則n自由度的機器人名義位姿為:
(2)
其中:Pn為平移矩陣;Rn為姿態(tài)旋轉(zhuǎn)矩陣。假設(shè)實際測得的機器人位姿為:
(3)
令ΔP=Pr-Pn,其中ΔP=(ΔPx,ΔPy,ΔPz),表示機器人位置誤差。利用誤差模型,將ΔP改寫為:
ΔP=A·ΔX.
(4)
其中:A為辨識雅各比矩陣;ΔX為機器人幾何誤差參數(shù)(Δθi,Δdi,Δai,Δαi,Δβi)(i=1~n)。當采用六自由度機器人進行計算時,n=6。于是基于此,理論上就有30個幾何參數(shù)(θi,di,ai,αi,βi)(i=1~6)。又因為IRB-120機器人的結(jié)構(gòu)特性,根據(jù)MD-H建模之后的βi只考慮β2,故剩下25個機器人幾何參數(shù),從而待辨識的幾何誤差參數(shù)的數(shù)目為25。利用QR分解進行參數(shù)冗余剔除,剩余20個待辨識參數(shù)為Δθ1~Δθ5,Δd1,Δd3~Δd6,Δa1~Δa4,Δa6,Δα1~Δα4,Δβ2。
目標函數(shù)定義為:
(5)
其中:N為機器人標定實驗中測量位姿數(shù);f為(Δθi,Δdi,Δai,Δαi,Δβi)的幾何參數(shù)誤差函數(shù)。根據(jù)1.1節(jié)的分析可將此問題轉(zhuǎn)化為求解20維的高維非線性問題。
求解機器人幾何誤差參數(shù)的標定流程如下:
(1)初始化:概率因子為α,隨機數(shù)Rand()設(shè)置為0~1之間的任意值,自設(shè)常系數(shù)為C,擁擠度因子為δ,魚群數(shù)目N=100,步長為Step,最大迭代次數(shù)為MaxIter,視野范圍為Vision,最大嘗試次數(shù)為Trynum,初始迭代次數(shù)iter=0。將魚群設(shè)置為N×20的狀態(tài)X,每條魚為1×20的一維向量Xi,其中20表示的是待辨識的機器人幾何誤差參數(shù)維數(shù)。計算該N條魚的f,將最小的值記錄在公告牌上。接著執(zhí)行下列行為:
(2)追尾行為:定義人工魚的狀態(tài)為Xa,設(shè)其視野范圍內(nèi)存在最優(yōu)的狀態(tài)Xbest,相對應(yīng)的有適應(yīng)度函數(shù)Ya與Ybest,且當前Xbest的領(lǐng)域內(nèi)不擁擠,即滿足Dij
(6)
其中:Step=Rand*‖Xbest-Xa‖;nf的數(shù)值是當前視野范圍內(nèi)的魚群數(shù)量;Dij為當前魚與其他魚之間的距離。
(3)聚群行為:同樣定義人工魚的狀態(tài)為Xa,定義魚群中心為Xc,若Xc處不擁擠且滿足食物濃度條件的話,則往Xc前進一步,即:
(7)
其中:Step=Rand*‖Xc-Xa‖;Xc=當前視野范圍內(nèi)所有魚的狀態(tài)求和/nf。否則跳轉(zhuǎn)到覓食行為。
(4)覓食行為:在覓食行為中改進了接受新解的判斷標準,其定義ΔY=Ya-Yb,ΔY為當前魚的狀態(tài)Xa所求的適應(yīng)度函數(shù)Ya與鄰域內(nèi)隨機魚Xb的適應(yīng)度函數(shù)Yb之間的差。若ΔY>0或者滿足式(8),則接受新解。
ΔY<0&&exp(C*k*ΔY)>α.
(8)
其中:k為迭代次數(shù)。
選擇當前人工魚的狀態(tài)視野范圍內(nèi)的一個隨機狀態(tài)Xb與當前人工魚的狀態(tài)Xa的適應(yīng)度函數(shù)作比較,其中:
Xb=Xa+Vision·Rand().
(9)
利用上述覓食行為接受新解的分析作為判斷標準,若食物濃度滿足式(8),則向此方向前進一步,下一個狀態(tài)為:
(10)
其中:Step=Rand*‖Xb-Xa‖。否則在Trynum次數(shù)范圍內(nèi)重新隨機選擇狀態(tài)Xb,重新進行上述行為。若仍不滿足食物濃度的判斷條件,則執(zhí)行下列隨機移動行為:
(11)
每次迭代結(jié)果記錄在公告板上,且Iter=Iter+1,若Iter≥maxIter,則停止迭代,將公告牌信息輸出。上述描述可表示為如圖1所示的流程。
圖1 改進魚群算法標定流程
為驗證算法的可行性,采用IRB-120機器人進行驗證。建立MD-H誤差模型時,理論參數(shù)與D-H模型的方法一致,都為24個參數(shù)。由第1節(jié)分析可知,最后剩下20個參數(shù),而該20個參數(shù)表示的是誤差參數(shù),故在最后得到的20個參數(shù)的結(jié)果是將其修正到原機器人D-H參數(shù)中,原機器人D-H參數(shù)如表1所示。魚群初始化參數(shù)設(shè)置如表2所示。設(shè)置機器人桿長等距離誤差在[-0.25,0.25](mm)波動,角度范圍為[-0.05,0.05](rad)。
表1 機器人D-H參數(shù)
表2 魚群初始化參數(shù)
表1中,若直接考慮D-H建模過程中的坐標變化量時,關(guān)節(jié)轉(zhuǎn)角為(0,-90,0,0,0,180)(°),但由實際可知機器人關(guān)節(jié)轉(zhuǎn)角非常量而是變量,故用θi加上關(guān)節(jié)轉(zhuǎn)角來表示實際D-H參數(shù)。
采用以上算法計算得到迭代200次的迭代曲線,如圖2所示。
圖2 適應(yīng)度函數(shù)值變化
辨識所得參數(shù)如表3所示,表中“—”表示無需辨識參數(shù)。
表3 機器人幾何誤差參數(shù)
將以上參數(shù)修正到機器人D-H參數(shù)上,得到修正前后誤差對比結(jié)果,如圖3所示。
圖3 標定前后位置誤差
就傳統(tǒng)人工魚群與自適應(yīng)步長人工魚群從辨識結(jié)果(標定前后誤差平均值、標準差以及最大值)進行對比,可以得到算法對比結(jié)果,見表4。
表4 AFSA與SA-IAFSA標定前后比較
實驗中,采用傳統(tǒng)人工魚群算法時,最小適應(yīng)度值一直未改變,魚群雖進行游動,但無新值產(chǎn)生,從而無法進行尋優(yōu)。而采用改進魚群算法,可使參數(shù)辨識過程收斂,同時提升機器人精度。
(1)本文提出了采用變步長自適應(yīng)人工魚群算法用于機器人參數(shù)辨識,并與傳統(tǒng)人工魚群算法作比較,結(jié)果表明該算法較于傳統(tǒng)方法可使參數(shù)辨識過程收斂,同時參數(shù)辨識效果穩(wěn)定。
(2)采用該算法可使機器人平均絕對定位精度提升38.96%。