叢 明,宋宏祥,劉 冬,杜 宇,潘德華
(1.大連理工大學(xué)機(jī)械工程學(xué)院,大連 116024;2.大連交通大學(xué)機(jī)械工程學(xué)院,大連 116028)
冗余機(jī)械臂在逆運(yùn)動(dòng)學(xué)求解時(shí)其構(gòu)型可能會(huì)導(dǎo)致求解失敗,啟發(fā)式算法能很好的避免此問題,因此近年來被廣泛的應(yīng)用在逆運(yùn)動(dòng)學(xué)求解中。YUAN等[1]基于BP和RBF神經(jīng)網(wǎng)絡(luò)算法提出的并行神經(jīng)網(wǎng)絡(luò)逆運(yùn)動(dòng)學(xué)算法,將逆運(yùn)動(dòng)學(xué)求解問題轉(zhuǎn)化為神經(jīng)網(wǎng)絡(luò)的訓(xùn)練問題,為保證求解精度需進(jìn)行大量訓(xùn)練。ANTONIO-GOPAR等[2]使用DE算法對(duì)逆運(yùn)動(dòng)學(xué)問題進(jìn)行求解,并在一定程度上對(duì)最小位移解進(jìn)行了篩選,而最小位移目標(biāo)的引入會(huì)導(dǎo)致位姿求解精度的下降。REYES等[3]在傳統(tǒng)的PSO算法基礎(chǔ)上提出一種具有自適應(yīng)探索性的逆運(yùn)動(dòng)學(xué)求解算法,通過進(jìn)化過程中不斷調(diào)整粒子的慣性權(quán)重和加速度系數(shù)來實(shí)現(xiàn)自適應(yīng)探索的目的。STARKE等[4]提出一種混合遺傳群算法(HGSA),將PSO算法加入遺傳算法的進(jìn)化過程,使后代與種群最優(yōu)個(gè)體產(chǎn)生新的子代,提高了算法魯棒性,并設(shè)計(jì)了一種引入隨機(jī)權(quán)重的多目標(biāo)適應(yīng)度函數(shù),使得子代個(gè)體更具適應(yīng)性,而隨機(jī)性的引入難以兼顧位置和姿態(tài)求解精度。謝習(xí)華等[5]結(jié)合DE/rand/1/bin和DE/best/1/bin兩種進(jìn)化模式提出了改進(jìn)自適應(yīng)變異差分進(jìn)化(SAMDE)算法,并采用對(duì)稱映射法對(duì)超出關(guān)節(jié)限制范圍的個(gè)體進(jìn)行處理,與基本DE算法對(duì)比,提高了算法的收斂精度和收斂速度。以上算法求解實(shí)時(shí)性差、收斂速度過慢,且由于迭代次數(shù)過多導(dǎo)致無法難以滿足實(shí)際應(yīng)用需求。由于珊瑚礁優(yōu)化(CRO)算法[6-9]全局搜索能力強(qiáng)的特點(diǎn),應(yīng)用其進(jìn)行逆運(yùn)動(dòng)學(xué)求解時(shí)可提高求解質(zhì)量。因此,本文提出一種基于改進(jìn)CRO算法的機(jī)械臂快速逆解分析算法。
本文首先基于MDH法建立了機(jī)械臂的運(yùn)動(dòng)學(xué)模型及求解逆運(yùn)動(dòng)學(xué)問題的優(yōu)化模型,然后介紹了珊瑚礁優(yōu)化算法的改進(jìn)方法,其次使用標(biāo)準(zhǔn)測(cè)試函數(shù)對(duì)改進(jìn)算法進(jìn)行了驗(yàn)證,并與其他常見優(yōu)化算法形成對(duì)比,最后針對(duì)給定軌跡進(jìn)行逆運(yùn)動(dòng)學(xué)求解實(shí)驗(yàn),驗(yàn)證本文所提方法可以滿足機(jī)械臂逆運(yùn)動(dòng)學(xué)求解的實(shí)際需求。
如圖1所示,機(jī)械臂有7個(gè)自由度,包括3個(gè)俯仰關(guān)節(jié)和4個(gè)轉(zhuǎn)動(dòng)關(guān)節(jié),采用典型的SRS構(gòu)型,由關(guān)節(jié)變量θ=[θ1,θ2,θ3,…,θ7]T描述其關(guān)節(jié)工作空間。本文基于MDH法建立機(jī)械臂的運(yùn)動(dòng)學(xué)模型,表1給出了所述機(jī)械臂模型的D-H參數(shù)。
圖1 機(jī)械臂DH模型
表1 機(jī)械臂D-H參數(shù)
已知各關(guān)節(jié)變量θ=[θ1,θ2,θ3,…,θ7]T,末端執(zhí)行器位姿在基坐標(biāo)系{0}下的描述由0Tt描述:
(1)
式中,7Tt描述末端執(zhí)行器坐標(biāo)系{t}與機(jī)械臂末端關(guān)節(jié)坐標(biāo)系{7}之間的變換關(guān)系。
(2)
(3)
式中,Rt為給定目標(biāo)姿態(tài)矩陣;Pt為給定目標(biāo)位置坐標(biāo);Rr為隨機(jī)可行解θr所對(duì)應(yīng)的姿態(tài)矩陣;Pr為隨機(jī)可行解θr所對(duì)應(yīng)的位置坐標(biāo)。
根據(jù)求解目標(biāo),建立優(yōu)化模型如下:
minf(θ)=ω1Pe+ω2Re
s.t.θ∈Rn|θk,min≤θk≤θk,max,k=1,2,…,7
(4)
式中,Pe、Re分別為位置誤差、姿態(tài)誤差。
位置誤差Pe可用給定目標(biāo)位置和隨機(jī)可行解θr對(duì)應(yīng)位置之間的歐氏距離表示[13]:
(5)
姿態(tài)矩陣描述的是兩個(gè)坐標(biāo)系之間的姿態(tài)變換關(guān)系,通過兩者間姿態(tài)逆變換運(yùn)算[5]可定義Re為:
(6)
式中,l為當(dāng)前姿態(tài)機(jī)械臂末端與基座之間的長度。
目標(biāo)函數(shù)可表示為:
(7)
式中,ω1、ω2分別描述位置誤差、姿態(tài)誤差對(duì)目標(biāo)函數(shù)值的貢獻(xiàn)度??紤]要同時(shí)保證位置與姿態(tài)的求解精度,本文取ω1=ω2=1。
應(yīng)用改進(jìn)的CRO算法進(jìn)行逆運(yùn)動(dòng)學(xué)求解時(shí),解的質(zhì)量使用均方根誤差RMSE和平均絕對(duì)誤差MAE來評(píng)價(jià):
(8)
(9)
傳統(tǒng)CRO算法在進(jìn)化中后期由于親本多樣性的不足會(huì)導(dǎo)致算法停滯搜索。針對(duì)該問題,本文對(duì)珊瑚蟲種群的初始化方式、外部有性繁殖方式及毀滅機(jī)制進(jìn)行了改進(jìn),并引進(jìn)種群入侵策略,提出基于經(jīng)驗(yàn)進(jìn)化的珊瑚礁優(yōu)化(EECRO)算法。
為提高算法的收斂速度,將這種經(jīng)驗(yàn)向?qū)Р呗砸隒RO算法,在珊瑚蟲個(gè)體原有基因?qū)傩缘幕A(chǔ)上增加個(gè)體進(jìn)化速度屬性,種群初始化的具體操作如式(10)所示。
(10)
式中,Ξi為珊瑚礁位置為i上的珊瑚蟲個(gè)體;Ξmax為個(gè)體最大值;Ξmin為個(gè)體最小值;r為0和1之間的隨機(jī)數(shù);vi為珊瑚蟲個(gè)體初始進(jìn)化速度;vmax為個(gè)體最大進(jìn)化速度。
對(duì)于外部有性繁殖的改進(jìn),將原有的交叉變異進(jìn)化改為基于經(jīng)驗(yàn)學(xué)習(xí)的變異進(jìn)化。珊瑚礁i位置上的所有歷代個(gè)體組成一個(gè)家族,家族中的最優(yōu)個(gè)體為Ξit,珊瑚礁上的所有家族構(gòu)成種群,種群中的最優(yōu)個(gè)體為Ξgt。
每個(gè)家族中個(gè)體子代的產(chǎn)生,通過Ξit和Ξgt已有的經(jīng)驗(yàn)引導(dǎo)來完成。即個(gè)體以種群的最優(yōu)個(gè)體和家族最優(yōu)個(gè)體為學(xué)習(xí)目標(biāo),通過對(duì)兩者經(jīng)驗(yàn)的加權(quán)以及原有進(jìn)化經(jīng)驗(yàn)得到新的進(jìn)化經(jīng)驗(yàn),從而變異產(chǎn)生新子代。具體操作如下:
(11)
ω=ωstart-(ωstart-ωend)(k/Tmax)2
(12)
式中,Tmax為最大迭代次數(shù);ωstart、ωend分別表示進(jìn)化開始與進(jìn)化結(jié)束時(shí)的經(jīng)驗(yàn)遺忘程度。
子代的安置與CRO算法相同,采用隨機(jī)安置的方式,被安置的個(gè)體與珊瑚礁上的個(gè)體進(jìn)行位置競(jìng)爭(zhēng),每個(gè)子代具有一定的競(jìng)爭(zhēng)機(jī)會(huì),適者生存。
為保證進(jìn)化后期的種群多樣性,引入種群入侵策略,參與種群入侵環(huán)節(jié)的群體cin由當(dāng)前種群中比例為Fin的較優(yōu)群體進(jìn)行變異操作產(chǎn)生,具體操作如式(13)所示,產(chǎn)生的變異群體與珊瑚種群個(gè)體進(jìn)行位置競(jìng)爭(zhēng)。
(13)
為適應(yīng)不同進(jìn)化階段所需的搜索步長,采用高斯-柯西變異算子進(jìn)行變異操作,如式(14)所示。
(14)
式中,h為高斯-柯西變異算子;rn、rc分別為高斯隨機(jī)數(shù)和柯西隨機(jī)數(shù)。
為保證進(jìn)化過程中的種群多樣性不遭受破壞,使用條件毀滅機(jī)制代替原有的概率毀滅機(jī)制。
當(dāng)?shù)竭_(dá)最大迭代次數(shù)時(shí),若潛在解個(gè)體依然未到達(dá)要求精度ε,則保留種群中比例為Fd的最優(yōu)個(gè)體,對(duì)珊瑚礁剩余個(gè)體進(jìn)行全面毀滅,并重置珊瑚礁體上被毀滅的珊瑚蟲個(gè)體,重置操作同式(10),算法流程如表2所示。
表2 EECRO算法偽代碼算法
續(xù)表
本文提出的EECRO算法與傳統(tǒng)CRO算法相比,有以下不同:(1)在原有種群初始化基礎(chǔ)上增加個(gè)體進(jìn)化速度屬性,種群協(xié)同進(jìn)化;(2)增加種群入侵策略保證進(jìn)化后期種群多樣性;(3)原有概率毀滅機(jī)制改為條件毀滅機(jī)制,以保護(hù)種群多樣性,并可提高問題求解的成功率。
為驗(yàn)證EECRO算法的有效性,使用GA、DE、HS、ABC、PSO、CRO等算法對(duì)表3中的基準(zhǔn)測(cè)試函數(shù)進(jìn)行測(cè)試,測(cè)試結(jié)果與EECRO算法求解結(jié)果進(jìn)行對(duì)比。表3中f1~f5為具有多局部極值的多峰函數(shù),其中f4、f5為低維度測(cè)試函數(shù);f6、f7是具有唯一最值的低谷型單峰函數(shù)。
表3 基準(zhǔn)測(cè)試函數(shù)
為公平起見,EECRO算法取消條件毀滅環(huán)節(jié),所有算法種群大小為100,最大迭代次數(shù)為100次,每種算法重復(fù)獨(dú)立運(yùn)行200次,并記錄算法最佳適應(yīng)度的最差值(Worst)、平均值(Mean)和標(biāo)準(zhǔn)方差(SD)。
部分標(biāo)準(zhǔn)測(cè)試函數(shù)的收斂曲線如圖2所示,由此可知,在相同迭代次數(shù)下EECRO的收斂速度明顯快于其他算法。由表4數(shù)據(jù)可得,在給定迭代次數(shù)為100次時(shí),EECRO算法收斂性能高于傳統(tǒng)CRO算法。在多峰函數(shù)上,由于種群入侵策略的作用使得算法進(jìn)化過程中能夠保證充足的種群多樣性,EECRO具有良好的局部最優(yōu)逃逸能力,而其他算法更易陷入局部最優(yōu)值,由此可見EECRO的深度搜索能力更強(qiáng);在單峰函數(shù)上,外部有性繁殖方式的改變,使得算法具有良好的局部探索能力,因此其收斂到真值的能力更強(qiáng)。無論是單峰函數(shù)還是多峰函數(shù),與其他算法相比EECRO在大部分測(cè)試函數(shù)中標(biāo)準(zhǔn)偏差明顯偏小,說明算法的魯棒性更好、收斂更穩(wěn)定。綜上所述,改進(jìn)的EECRO算法具有較好的收斂精度和收斂速度。
(a) f1收斂曲線 (b) f2收斂曲線
表4 7種算法獨(dú)立計(jì)算200次后的測(cè)試結(jié)果
機(jī)械臂的桿長分別為l1=100 mm、l2=400 mm、l3=400 mm、l4=100 mm;各關(guān)節(jié)角范圍分別為(-3.14,3.14) rad、(-1.83,1.83) rad、(-3.14,3.14) rad、(-2.01,2.01) rad、(-3.14,3.14) rad、(-1.92,1.92) rad、(-3.14,3.14) rad;給定位置求解誤差精度為10-4mm;姿態(tài)求解誤差精度為10-6rad。
假設(shè)任務(wù)要求機(jī)械臂末端從初始位姿(P0,R0)運(yùn)動(dòng)到目標(biāo)位姿(Pr,Rt),初始位姿所對(duì)應(yīng)關(guān)節(jié)角θ0=[0,π/3,0,π/3,0,π/3,0]T,目標(biāo)位姿對(duì)應(yīng)關(guān)節(jié)角θt=[1.383 4,-0.468 2,0.341 6,-0.108 5,-1.021 0,-0.817 1,-1.383 4]T,由式(1)可得:
n0=[-1,0,0]T
o0=[0,1,0]T
a0=[0,0,-1]T
p0=[-692.8203,0.00,-100.00]T
同理可得目標(biāo)位姿所對(duì)應(yīng)的位姿數(shù)據(jù)為:
nt=[0.7409,-0.6435,0.1922]T
ot=[0.3285,0.0977,-0.9395]T
at=[0.5858,0.7592,0.2837]T
pt=[118.1677,468.0655,721.7624]T
在初始位姿和目標(biāo)位姿之間進(jìn)行五次多項(xiàng)式插值,得到的20組軌跡點(diǎn)。接下來針對(duì)經(jīng)過插值得到的軌跡數(shù)據(jù)使用EECRO算法進(jìn)行逆運(yùn)動(dòng)學(xué)求解,并同CRO、PSO算法的求解結(jié)果作對(duì)比。為保證求解結(jié)果為最小位移解,在進(jìn)行逆運(yùn)動(dòng)學(xué)求解時(shí),應(yīng)使用上一次求解結(jié)果進(jìn)行種群初始化操作。
在對(duì)比實(shí)驗(yàn)中,設(shè)置CRO算法參數(shù)為Fb=0.9,F(xiàn)a=0.01,F(xiàn)d=0.01,Pd=0.1,k=3;PSO算法參數(shù)為ωstart=0.9,ωend=0.4,μ1=1.494 5,μ2=1.494 5;EECRO算法參數(shù)設(shè)置為Fb=0.9,F(xiàn)a=0.1,F(xiàn)in=0.1,μ1=1.494 5,μ2=1.494 5,ωstart=0.9,ωend=0.4。其中種群規(guī)模為30,最大迭代次數(shù)為30。實(shí)驗(yàn)平臺(tái)為MATLAB R2019b,DRAM為8 GB,英特爾酷睿i5處理器頻率為2.4 GHz。
EECRO算法所對(duì)應(yīng)的求解過程如圖3所示,求解的各軌跡點(diǎn)連線非常平滑。由此可見,使用上一次求解結(jié)果進(jìn)行種群初始化的策略,能夠有效解決多解的篩選問題。
圖3 EECRO算法求解的軌跡
在軌跡求解過程中,3種算法各個(gè)關(guān)節(jié)所對(duì)應(yīng)的求解誤差曲線分別如圖4所示,20個(gè)軌跡點(diǎn)的逆運(yùn)動(dòng)學(xué)求解過程中,CRO算法求解結(jié)果的關(guān)節(jié)最大絕對(duì)誤差可達(dá)0.2 rad,且求解結(jié)果不穩(wěn)定,很難滿足實(shí)際應(yīng)用需求;PSO算法結(jié)果穩(wěn)定性好但精度比EECRO略遜一籌;EECRO算法的誤差曲線更加平穩(wěn),由圖4可知EECRO穩(wěn)定性和精度明顯優(yōu)于PSO和CRO算法。
將3種算法求解結(jié)果的關(guān)節(jié)角度誤差代入式(9)和式(10),得到的誤差評(píng)估結(jié)果如表5所示。
表5 算法誤差評(píng)估結(jié)果
由表5可知,應(yīng)用EECRO算法求解結(jié)果的均方根誤差和平均絕對(duì)誤差,與PSO和CRO兩種方法相比誤差更小,可達(dá)10-15rad。與CRO算法的求解結(jié)果相比,求解精度至少提高了10個(gè)數(shù)量級(jí),由此可知求解精度完全可以滿足在機(jī)械臂逆運(yùn)動(dòng)學(xué)求解問題中的使用要求。
綜上所述,改進(jìn)的EECRO算法在逆運(yùn)動(dòng)學(xué)求解方面具有實(shí)際應(yīng)用價(jià)值。算法曲線如圖4所示。
(a) CRO求解各軌跡點(diǎn)的誤差曲線 (b) PSO求解各軌跡點(diǎn)的誤差曲線
本文提出的一種基于經(jīng)驗(yàn)進(jìn)化的珊瑚礁優(yōu)化算法(EECRO),在保證全局搜索能力的前提下提高了算法的收斂精度和速度。實(shí)驗(yàn)結(jié)果表明:在給定迭代次數(shù)較小情況下,EECRO算法能更快收斂到要求精度。應(yīng)用EECRO算法求解逆運(yùn)動(dòng)學(xué)的結(jié)果與對(duì)比算法相比,求解誤差明顯減小,且收斂速度快,因此滿足在逆運(yùn)動(dòng)學(xué)求解問題上的應(yīng)用。本文未對(duì)所提算法進(jìn)行更高維度的測(cè)試,在未來工作中將通過對(duì)更高維度的測(cè)試以拓展EECRO算法在其他工程問題中的應(yīng)用。