周文輝,賈振堂,王 磊
(上海電力大學(xué)電子與信息工程學(xué)院,上海 200120)
機(jī)器人運(yùn)動(dòng)學(xué)有正逆兩部分,是關(guān)于機(jī)械臂關(guān)節(jié)角與末端位姿轉(zhuǎn)換的關(guān)系。根據(jù)給定的各個(gè)關(guān)節(jié)的角度確定機(jī)械臂末端的位置姿態(tài)是機(jī)械臂正運(yùn)動(dòng)學(xué),結(jié)果是唯一確定的;根據(jù)機(jī)械臂末端的位姿反過(guò)來(lái)求解機(jī)械臂對(duì)應(yīng)的關(guān)節(jié)角是機(jī)械臂逆運(yùn)動(dòng)學(xué),其解通常不唯一。目前常見(jiàn)的方法有幾何法[1]、解析法[2]、數(shù)值法[3]和人工智能方法[4]等。
冗余機(jī)械臂在運(yùn)行的過(guò)程中能夠躲避奇異位形,防止運(yùn)動(dòng)關(guān)節(jié)超限,有很好的避障能力,同時(shí)具備很高的靈活性,但與此同時(shí)冗余機(jī)械臂的逆運(yùn)動(dòng)學(xué)求解也變得更加復(fù)雜。因?yàn)槿哂鄼C(jī)械臂的機(jī)械結(jié)構(gòu)不符合Pieper準(zhǔn)則,所以傳統(tǒng)意義上的解析法與幾何法無(wú)法求得冗余機(jī)械臂對(duì)應(yīng)的封閉逆解,而數(shù)值法的雅可比矩陣迭代法,求解過(guò)程比較復(fù)雜,過(guò)于依賴種子的設(shè)置,求解質(zhì)量難以得到保證[5]。冗余機(jī)械臂的逆運(yùn)動(dòng)學(xué)方程是強(qiáng)耦合性的,非線性的方程組,因此可以將機(jī)械臂求逆解問(wèn)題轉(zhuǎn)化為群智能優(yōu)化問(wèn)題[6]。這類算法包括粒子群算法[7]、遺傳算法[8]、麻雀搜索算法[9]以及神經(jīng)網(wǎng)絡(luò)算法[10]等。
呂鑫等[11]提出改進(jìn)麻雀搜索算法,受鳥(niǎo)群算法中飛行行為的啟發(fā),對(duì)鳥(niǎo)群中發(fā)現(xiàn)者的位置進(jìn)行更新;張偉康等[12]提出的自適應(yīng)t分布與黃金正弦改進(jìn)的麻雀搜索算法,通過(guò)黃金正弦算法改進(jìn)發(fā)現(xiàn)者的位置更新方式。段玉先等[13]提出基于sobol序列和縱橫交叉策略的麻雀搜索算法。上述文獻(xiàn)從多個(gè)方面對(duì)麻雀搜索算法進(jìn)行改進(jìn),雖然在函數(shù)初始化過(guò)程中增加了種群的多樣性,在一定程度上防止尋優(yōu)函數(shù)過(guò)早陷入局部最優(yōu),但是收斂效果不明顯,全局與局部搜索不協(xié)調(diào)的問(wèn)題仍舊沒(méi)有明顯改善。
本文針對(duì)傳統(tǒng)麻雀搜索算法的特性與不足之處,提出了一種結(jié)合改進(jìn)Tent混沌擾動(dòng)初始化策略,自適應(yīng)參數(shù)調(diào)整策略,柯西-Tent擾動(dòng)策略的綜合改進(jìn)麻雀搜索算法,最后利用MATLAB軟件對(duì)算法進(jìn)行仿真實(shí)驗(yàn),驗(yàn)證CISSA算法在冗余機(jī)械臂運(yùn)動(dòng)學(xué)求逆解的有效性。
麻雀搜索算法(SSA)是受麻雀作為群居動(dòng)物進(jìn)行覓食并對(duì)捕食者作出反捕食行為得到啟發(fā)而提出的群智能算法[14]。群體在覓食過(guò)程中有探索者、跟隨者和預(yù)警者3種角色;探索者擔(dān)任覓食和導(dǎo)向的職責(zé);跟隨者采取跟隨策略來(lái)獲取食物;預(yù)警者負(fù)責(zé)警戒。
(1)探索者的位置更新公式為:
(1)
式中,常數(shù)量有itermax、L與ST;itermax為最大迭代次數(shù);L為一個(gè)d維的單位矩陣;ST∈[0.5,1]為探索者在野外探索的安全閾值;隨機(jī)變量有α、Q;α∈(0,1]增加探索者在探索過(guò)程中的隨機(jī)性與遍歷性;Q服從正態(tài)分布;t為當(dāng)前迭代數(shù);Xi,j為種群中第j維,第i只麻雀的狀態(tài)信息。當(dāng)R2 (2)追隨者的位置更新公式為: (2) 式中,常量N為種群總數(shù);變量有A,是一個(gè)d維的矩陣,矩陣中的元素隨機(jī)取1、-1,A滿足A+=AT(AAT)-1;Xp、Xworst分別為探索者當(dāng)前能探索的最優(yōu)位與最差位置。當(dāng)i>N/2時(shí)表示種群中第i只追隨者獲取食物不足,它要盡可能遠(yuǎn)離位置最差的那只麻雀;其他麻雀依然是在最優(yōu)位置的麻雀附近尋找食物。 (3)預(yù)警者的位置更新公式為: (3) 式中,常數(shù)量有ε,設(shè)置它是為了避免分母為0;隨機(jī)變量有β和K,β為一個(gè)服從正態(tài)分布的步長(zhǎng)控制參數(shù);K∈[-1,1],調(diào)節(jié)預(yù)警者的位置信息;Xbest與Xworst分別為種群的最優(yōu)位置和最差位置;fi為第i只麻雀的適應(yīng)度值;fg、fw分別為最高與最低的適應(yīng)度值。當(dāng)fi≠fg表示該麻雀離群,易被偷襲,當(dāng)fi=fg表示處于種群中間的麻雀意識(shí)到了危險(xiǎn),需要向身邊伙伴靠近以避免偷襲。 (1)基于混沌Tent映射的種群初始化。在群體智能算法尋優(yōu)性能指標(biāo)中,尋優(yōu)性能與初始種群相關(guān)緊密。若初始化種群均勻地分布在解空間中,這有利于快速地鎖定全局最優(yōu)解[15]。麻雀搜索算法采用隨機(jī)策略生成初始化種群,這種策略生成的種群滿足隨機(jī)性,但存在分布不均,遍歷性不夠的缺點(diǎn),在算法初期不能保證搜索范圍的廣度?;诖?,在種群初始化過(guò)程中引用改進(jìn)的混沌模型替代隨機(jī)生成策略,利用Tent映射[16]遍歷性,隨機(jī)性的特點(diǎn)初始化種群,減弱隨機(jī)種群遍歷性不夠的影響,進(jìn)而提高SSA算法的全局搜索性能。 改進(jìn)Tent映射的數(shù)學(xué)表達(dá)式為: (4) 式中,i為種群規(guī)模,i=1,2,3,…N;j對(duì)應(yīng)于個(gè)體空間維度;μn為混沌參數(shù);N為種群總數(shù),確定混沌參數(shù)并對(duì)式(4)中X取相應(yīng)值后,可得到初始種群,然后映射至搜索空間。對(duì)麻雀種群進(jìn)行混沌初始化與隨機(jī)初始化的對(duì)比如圖1所示。由圖1可以看出,改進(jìn)后的Tent映射分布更加均勻。 圖1 混沌映射與隨機(jī)映射直方圖對(duì)比 (2)改進(jìn)探索者位置更新公式。群智能算法在進(jìn)化過(guò)程中可分為兩部分,全局定位搜索與局部細(xì)化。在算法的初始化階段,主要依靠全局搜索來(lái)定位最優(yōu)解的大致范圍,但同時(shí)也極易陷入局部最優(yōu),為了杜絕這種情況的發(fā)生,可以讓種群中的探索者,參考上一代的最優(yōu)解。由于在算法運(yùn)算過(guò)程中探索者引導(dǎo)著整個(gè)麻雀群體的流動(dòng),所以對(duì)群體中探索者位置的改進(jìn)具有重要的意義。因此引入了動(dòng)態(tài)權(quán)重W1、W2,這兩個(gè)動(dòng)態(tài)參數(shù)隨著種群搜索發(fā)生相應(yīng)的變化,在全局搜索時(shí)保持較大的值,增強(qiáng)全局搜索能力,在局部搜索時(shí),下降到相應(yīng)較小的值,加大局部搜索能力。 (5) 式中,p∈[0,1],q∈[-0.5,0.5]服從均勻分布,d=(Wmax-Wmin)。 (a) 權(quán)重W1 (b) 權(quán)重W2圖2 麻雀搜索算法與綜合改進(jìn)麻雀搜索算法權(quán)重變化對(duì)比 改進(jìn)后探索者的位置更新公式為: (6) (3)種群探索者數(shù)量自適應(yīng)調(diào)整。在SSA算法中,在算法最初就確定了探索者與跟隨著在種群中的比例。探索者在種群中的比例過(guò)大導(dǎo)致算法在迭代后期無(wú)法快速收斂,不能進(jìn)行精確的局部搜索;相對(duì)地,探索者在種群中比例過(guò)低會(huì)使得算法在迭代的前期無(wú)法對(duì)全局進(jìn)行徹底的搜索[17],降低了函數(shù)寬范圍全局搜索的能力。所以為了能夠讓算法在迭代初期能夠充分進(jìn)行探索,迭代后期能夠快速地收斂。提出了探索者數(shù)量自適應(yīng)調(diào)整策略:該策略在算法迭代初期,探索者占種群的大多數(shù),隨著算法迭代次數(shù)的增加,種群中探索者相應(yīng)地減少,直至到一個(gè)臨界值。這種策略能夠很好地兼顧全局搜索與局部搜索的優(yōu)點(diǎn),在算法的初期,不注重收斂精度,能很快地鎖定全局最優(yōu)解的范圍,使得算法快速收斂;在算法的中后期,在前期限定的范圍內(nèi),強(qiáng)化局部搜索,提高算法的收斂精度。種群中探索者數(shù)目地調(diào)整公式為: (7) 式中,r為探索者在群體中的比例;Nmax為探索者在種群中設(shè)置的最大數(shù)量;Nmin為探索者在種群中設(shè)置的最小數(shù)量,相應(yīng)地PNum,PNum=r×N。PNum為種群中探索者的數(shù)量。 (4)柯西變異和Tent擾動(dòng)??挛髯儺怺18]來(lái)源于柯西分布??挛鞣植继卣鳛椋簝啥司哂休^長(zhǎng)尾翼,這種分布使得個(gè)體具有更高的概率跳躍至更好位置,脫離局部最優(yōu)。將柯西算子引入當(dāng)前最優(yōu)解的位置更新中,利用柯西算子的調(diào)節(jié)功能,避免算法陷入局部最優(yōu)。具體表示為: Xnew=cauchy×Xbest (8) 式中,cauchy為服從柯西分布的柯西算子;Xbest為當(dāng)前適應(yīng)度最優(yōu)的個(gè)體;Xnew為經(jīng)過(guò)柯西變異的最優(yōu)個(gè)體。 Tent擾動(dòng)基于Tent混沌映射,在種群中的麻雀適應(yīng)度都較高,且有向適應(yīng)度低的方向發(fā)散的趨勢(shì)的時(shí)候,此時(shí)要對(duì)種群中的個(gè)體進(jìn)行Tent擾動(dòng)。利用式(4)對(duì)個(gè)體進(jìn)行混沌擾動(dòng)。 柯西變異與Tent擾動(dòng)針對(duì)于兩種情況,對(duì)低適應(yīng)度的個(gè)體進(jìn)行柯西變異,對(duì)高適應(yīng)度的個(gè)體在原有位置的基礎(chǔ)上進(jìn)行擾動(dòng),使得算法不至于陷入局部最優(yōu),并且在算法的后期能不斷提升收斂精度。 (5)越界處理。對(duì)于越界的個(gè)體,通常的做法是讓他的值等于邊界值,這種做法降低了算法的搜索能力。為了避免這種情況發(fā)生,將越界的種群個(gè)體按式(4)再次放回種群中,通過(guò)對(duì)越界量的彈性處理,解決了算法在迭代過(guò)程中種群豐富度降低的問(wèn)題,加快了算法的尋優(yōu)效率。 基于CISSA的算法的運(yùn)行步驟如下: 步驟1:對(duì)麻雀搜索算法中麻雀種群的初始數(shù)量,種群中探索者和跟隨者的比例,預(yù)警值,安全值,隨機(jī)值等參數(shù)變量進(jìn)行初始化賦值; 步驟2:利用改進(jìn)的Tent混沌映射生成初始化種群,確定種群中成員的初始位置; 步驟3:計(jì)算個(gè)體的適應(yīng)度,然后獲得最高適應(yīng)度與最低適應(yīng)度麻雀的位置信息; 步驟4:確定種群中發(fā)現(xiàn)者的數(shù)量,然后根據(jù)式(6)確定探索者更新之后的位置信息; 步驟5:確定麻雀種群中跟隨者的數(shù)量,根據(jù)式(2)計(jì)算其更新過(guò)后的位置; 步驟6:根據(jù)式(7),隨著迭代次數(shù)的增加,更新發(fā)現(xiàn)者與跟隨者的數(shù)量隨之更新; 步驟7:確定種群中預(yù)警者的數(shù)量,然后根據(jù)式(3)確定預(yù)警者在更新之后的位置信息; 步驟8:對(duì)于越界的麻雀?jìng)€(gè)體,根據(jù)式(4)重新放入種群中; 步驟9:計(jì)算每只麻雀的適應(yīng)度值,并將之和種群的平均適應(yīng)度值進(jìn)行比較。若適應(yīng)度值比平均值低,則進(jìn)行柯西變異,變異后個(gè)體更優(yōu)則更新;反之,利用Tent混沌映射對(duì)種群中的個(gè)體進(jìn)行擾動(dòng),擾動(dòng)后個(gè)體更優(yōu)則更新; 步驟10:在更新之后,確定種群中適應(yīng)度值最高和最低的麻雀的位置信息; 步驟11:當(dāng)算法迭代次數(shù)達(dá)到設(shè)定的最大值時(shí),便輸出適應(yīng)度最高的個(gè)體的位置信息;否則接著從第4步開(kāi)始繼續(xù)執(zhí)行。 圖3 算法流程圖 仿真硬件設(shè)備:CPU處理器:Intel?CoreTMi5-8300H 2.3 GHz;RAM內(nèi)存:8 G ddr3 1600;硬盤:1 TB;軟件平臺(tái):MATLAB 2016b。 仿真測(cè)試中用3個(gè)標(biāo)準(zhǔn)測(cè)試函數(shù)對(duì)CISSA與SSA進(jìn)行對(duì)比分析,這3個(gè)標(biāo)準(zhǔn)測(cè)試函數(shù)的定義為: (1)Sphere函數(shù) (9) (2)Rosebrock函數(shù) (10) (3)Step函數(shù) (11) 改進(jìn)麻雀搜索算法(CISSA)和標(biāo)準(zhǔn)麻雀搜索算法(SSA)算法測(cè)試結(jié)果,如圖4所示。 (a) Sphere函數(shù) (b) Rosenbrock函數(shù) 從圖4的3個(gè)測(cè)試函數(shù)可以看出,在收斂速度與收斂精度這兩方面來(lái)說(shuō),CISSA的表現(xiàn)優(yōu)于SSA,這主要是因?yàn)镃ISSA在迭代過(guò)程中探索者的位置更新公式會(huì)自適應(yīng)調(diào)整,探索者的數(shù)量也會(huì)根據(jù)迭代次數(shù)進(jìn)行調(diào)整,在算法初始階段對(duì)全局進(jìn)行充分的搜索,在算法的后期加強(qiáng)局部精確搜索,使得到的最優(yōu)解精確度更高,并加快收斂的速度。 為了進(jìn)一步證明CISSA的性能,在之前3個(gè)標(biāo)準(zhǔn)測(cè)試函數(shù)的基礎(chǔ)上,增加了3個(gè)測(cè)試函數(shù)。同時(shí)為了證明CISSA的優(yōu)越性,選取傳統(tǒng)的群智能算法進(jìn)行對(duì)比,對(duì)比算法選取粒子群算法(PSO)[19]、鯨魚(yú)優(yōu)化算法(WOA)[20]以及灰狼優(yōu)化算法(GWO)[21]。 測(cè)試函數(shù)如下: (1)Ackley函數(shù) (12) (2)Salomon函數(shù) (13) (3)Griewangk函數(shù) (14) 上述群智能算法在測(cè)試函數(shù)上獨(dú)立運(yùn)行60次,選取最優(yōu)收斂精度,平均收斂精度與平均收斂時(shí)間作為性能指標(biāo),算法內(nèi)部設(shè)置的最大進(jìn)化次數(shù)為1000,對(duì)比數(shù)據(jù)如表1所示。 表1 算法對(duì)比數(shù)據(jù) 表1數(shù)據(jù)顯示,在最優(yōu)收斂精度與平均收斂精度方面,CISSA的性能明顯優(yōu)于傳統(tǒng)群智能算法。比精度最高的灰狼優(yōu)化算法高4~5個(gè)數(shù)量級(jí);但在平均計(jì)算時(shí)間指標(biāo)上,CISSA算法稍落后于其他對(duì)比算法,因?yàn)樗啾扔趥鹘y(tǒng)算法在進(jìn)化過(guò)程中多了一些處理步驟。上述實(shí)驗(yàn)表明,CISSA算法明顯優(yōu)于其他常用的群智能算法。 圖5為1類7自由度冗余機(jī)械臂的結(jié)構(gòu)簡(jiǎn)圖,利用標(biāo)準(zhǔn)D-H法[22]進(jìn)行正運(yùn)動(dòng)學(xué)建模,機(jī)械臂各關(guān)節(jié)D-H參數(shù)如表2所示。 圖5 七自由度機(jī)械臂結(jié)構(gòu)簡(jiǎn)圖 表2 冗余機(jī)械臂各關(guān)節(jié)D-H參數(shù) 機(jī)械臂相鄰兩個(gè)連桿的坐標(biāo)系齊次變換矩陣如下: (15) 式中,sθ是sinθ的簡(jiǎn)寫;cθ是cosθ的簡(jiǎn)寫。根據(jù)式(15)和表1的DH參數(shù),將機(jī)械臂7個(gè)齊次變換矩陣依次順序相乘便可得到最終機(jī)械臂末端位姿矩陣: (16) P=(α,β,γ,PxPy,Pz) (17) 式中,R3×3為姿勢(shì)矩陣;p為位置矢量。 為了減少輸入變量的個(gè)數(shù),本文采用歐拉角表示機(jī)械臂末端的位姿,按照式(16)將機(jī)械臂的姿態(tài)矩陣進(jìn)行歐拉變換得到α、β、γ三個(gè)對(duì)應(yīng)的歐拉角。歐拉變化將之前機(jī)械臂末端位姿矩陣的12個(gè)變量轉(zhuǎn)換為6個(gè)獨(dú)立變量。變換公式如下: (18) P=(α,β,γ,PxPy,Pz) (19) 式中,P為位姿矢量。 將機(jī)械臂的目標(biāo)位姿與當(dāng)前位姿的作差值并求出平方和來(lái)構(gòu)建最終的適應(yīng)度函數(shù),α1=(α-α0)2,β1=(β-β0)2,γ1=(γ-γ0)2,P1=(Px-Px0)2,P2=(Py-Py0)2,P3=(Pz-Pz0)2。 f1=(α,β,γ,P1,P2,P3)=α1+β1+γ1+P1+P2+P3 (20) 冗余機(jī)械臂在實(shí)際求逆解的過(guò)程中存在著不止以一組解。每次式(18)只是求得了一組符合條件的解,要想機(jī)械臂能夠在空間中平滑柔順地運(yùn)行,可以定義如下函數(shù): (21) 式中,是機(jī)械臂第i個(gè)關(guān)節(jié)角當(dāng)前時(shí)刻與該關(guān)節(jié)角前一時(shí)刻關(guān)節(jié)角的差值。 f3=min(f1+ρf2) (22) 式中,f1為逆運(yùn)動(dòng)其中一組解;f2為關(guān)節(jié)運(yùn)動(dòng)最小變化量;f3為最終的適應(yīng)度函數(shù)。 為檢驗(yàn)CISSA在求冗余機(jī)械臂逆運(yùn)動(dòng)學(xué)解中 的可行性與有效性,通過(guò)計(jì)算機(jī)建立仿真實(shí)驗(yàn)將CISSA、SSA、GWO、WOA、PSO分別應(yīng)用于空間點(diǎn)到點(diǎn)運(yùn)動(dòng)的工況展開(kāi)對(duì)比驗(yàn)證。 本文選取基本麻雀搜索算法(SSA)、鯨魚(yú)算法(WOA)、灰狼算法(GWO)、粒子群算法(PSO)作為對(duì)照,為保證實(shí)驗(yàn)的公平性,4種算法的種群規(guī)模設(shè)置為30,最大迭代次數(shù)為200,其他參數(shù)設(shè)置如表3所示。 表3 算法參數(shù) 給定一組關(guān)節(jié)角θ(rad)=[1,1,1,1,1,1,1],代入式(15)求得正運(yùn)動(dòng)矩陣T。 (23) 針對(duì)末端位姿,5種算法分別在工作空間內(nèi)對(duì)冗余機(jī)械臂求逆解,結(jié)果如表4所示。 表4 5種算法各自求得一組機(jī)械臂逆解 圖6為5種算法位姿求解曲線對(duì)比圖,結(jié)果表明:CISSA明顯優(yōu)于其他算法。CISSA達(dá)到收斂條件時(shí)的速度比SSA提高了40%左右,CISSA最終收斂的精度也明顯高于其他算法。為了驗(yàn)證算法的穩(wěn)定性,同時(shí)避免結(jié)果的偶然性,將5種算法獨(dú)立對(duì)位姿求解200次,結(jié)果如圖7所示。 圖6 5種算法位姿求解曲線圖對(duì)比 (a) WOA算法 (b) PSO算法 可以看出,CISSA的算法精度是高于其他算法,從收斂曲線來(lái)看,CISSA的曲線波動(dòng)比較小,最終的位姿誤差維持在10-7數(shù)量級(jí)。 針對(duì)冗余機(jī)械臂求逆解問(wèn)題,本文提出了一種綜合改進(jìn)麻雀搜索算法。在算法初期,利用改進(jìn)Tent混沌序列,增加種群遍歷性,增強(qiáng)了算法整體尋優(yōu)定位的能力;在算法迭代的過(guò)程中,又引入了柯西變異與Tent擾動(dòng)增強(qiáng)了算法的抗停滯能力;在算法的中后期,對(duì)SSA的位置更新公式進(jìn)行了優(yōu)化,對(duì)種群中探索者數(shù)量進(jìn)行自適應(yīng)調(diào)整,大大提升了算法的精準(zhǔn)度與收斂速度?;鶞?zhǔn)測(cè)試函數(shù)的結(jié)果表明CISSA相比于SSA與其他傳統(tǒng)算法在求解穩(wěn)定性與求解準(zhǔn)確度上有顯著的進(jìn)步,驗(yàn)證了改進(jìn)算法的有效性。運(yùn)用 CISSA對(duì)冗余機(jī)械臂求逆解,相比于PSO、WOA 、GWO等傳統(tǒng)算法在平均值與標(biāo)準(zhǔn)差上有明顯的提高。SSA算法的提出時(shí)間雖然較短,但是相比于其他傳統(tǒng)算法有一定的優(yōu)越性,后繼可以繼續(xù)融合其他算法的優(yōu)點(diǎn)對(duì)SSA算法進(jìn)行繼續(xù)改進(jìn),并更廣泛地運(yùn)用到實(shí)踐中來(lái)。1.2 改進(jìn)麻雀搜索算法(CISSA)
1.3 改進(jìn)麻雀搜索算法執(zhí)行步驟
1.4 有效性測(cè)試
2 CISSA求解機(jī)械臂逆解
2.1 建立機(jī)械臂坐標(biāo)系
2.2 運(yùn)動(dòng)學(xué)分析
2.3 歐拉變換
2.4 構(gòu)建適應(yīng)度函數(shù)
3 仿真實(shí)驗(yàn)
3.1 參數(shù)設(shè)置
3.2 實(shí)驗(yàn)結(jié)果分析
4 結(jié)論