馬 龍,李長(zhǎng)勇,司 慶
(新疆大學(xué)機(jī)械工程學(xué)院,烏魯木齊 830017)
隨著工業(yè)的發(fā)展,機(jī)械臂在工業(yè)領(lǐng)域應(yīng)用的越來越廣泛[1]。機(jī)械臂的軌跡規(guī)劃是機(jī)械臂控制領(lǐng)域的研究重點(diǎn),機(jī)械臂軌跡規(guī)劃分為笛卡爾空間軌跡規(guī)劃和關(guān)節(jié)空間規(guī)劃,笛卡爾空間軌跡規(guī)劃是對(duì)機(jī)械臂末端執(zhí)行器的軌跡規(guī)劃,而關(guān)節(jié)空間軌跡規(guī)劃是對(duì)各個(gè)關(guān)節(jié)角度進(jìn)行規(guī)劃。目前進(jìn)行軌跡優(yōu)化的主要是對(duì)關(guān)節(jié)空間進(jìn)行軌跡規(guī)劃,目的包括以下4種:縮短運(yùn)動(dòng)時(shí)間,降低運(yùn)動(dòng)能量,減少關(guān)節(jié)的運(yùn)動(dòng)沖擊,以及綜合考慮多目的[2]。
當(dāng)前諸多學(xué)者對(duì)機(jī)械臂的軌跡規(guī)劃進(jìn)行了研究,劉貝貝等[3]為了減少?zèng)_擊和振動(dòng)對(duì)機(jī)械臂造成的損害,采用一種5次多項(xiàng)式結(jié)合均勻5次B樣條的來進(jìn)行軌跡規(guī)劃,得到了較為光滑的關(guān)節(jié)角度、角速度、角加速度關(guān)于時(shí)間的變化曲線,減少了運(yùn)動(dòng)的沖擊,但是對(duì)時(shí)間沒有優(yōu)化,無法提升機(jī)械臂工作效率;郝晗等[4]進(jìn)行了遺傳算法的初始種群生成方式、變異算子和交叉算子的構(gòu)造優(yōu)化研究,使用3次B樣條曲線進(jìn)行軌跡插值,將改善后的遺傳算法運(yùn)用到軌跡優(yōu)化中,仿真結(jié)果證明該方法有效的縮短了機(jī)械臂運(yùn)行時(shí)間,但未考慮機(jī)械臂運(yùn)動(dòng)中沖擊造成振動(dòng)與磨損的問題;袁旭華等[5]通過增加控制點(diǎn)對(duì)三次B樣條曲線進(jìn)行完善,并給出了優(yōu)化搜索策略蜂群算法的解決途徑,提高了曲線擬合準(zhǔn)確性,并減少了規(guī)劃時(shí)間,但是機(jī)械臂在軌跡起點(diǎn)的初始加加速度不是零且曲線不平滑,會(huì)造成機(jī)械臂機(jī)運(yùn)動(dòng)沖擊過大;孫颙琰等[6]在傳統(tǒng)蝙蝠算法中的局部搜索中加入動(dòng)態(tài)干擾系數(shù),并改進(jìn)局部搜索和全局搜索策略,使用5次多項(xiàng)式進(jìn)行軌跡插值,將時(shí)間、能耗和沖擊設(shè)為優(yōu)化目標(biāo),使用改進(jìn)算法對(duì)機(jī)械臂運(yùn)動(dòng)進(jìn)行軌跡優(yōu)化,有效的提高了機(jī)械臂的運(yùn)行效率,但是求解過程復(fù)雜,計(jì)算耗時(shí)長(zhǎng)。
目前,機(jī)械臂的軌跡優(yōu)化主要把時(shí)間最優(yōu)或沖擊最優(yōu)作為單一優(yōu)化目標(biāo),機(jī)械臂在工廠工作中,要長(zhǎng)時(shí)間搬運(yùn)重物,為了提高工作效率、減少關(guān)節(jié)磨損,綜合考慮機(jī)械臂運(yùn)動(dòng)時(shí)間和沖擊,進(jìn)行六自由度機(jī)械臂軌跡優(yōu)化研究。利用5次B樣條在關(guān)節(jié)空間構(gòu)造插值曲線,并加入雞群優(yōu)化算法。將鯨魚算法與蜉蝣算法融入到雞群優(yōu)化算法中,提高算法收斂速度;引入萊維飛行策略,進(jìn)而提升算法全局搜索能力;引入變異操作,防止陷入局部最優(yōu)。通過改進(jìn)的雞群優(yōu)化算法對(duì)時(shí)間和沖擊進(jìn)行優(yōu)化,規(guī)劃出關(guān)節(jié)軌跡,達(dá)到縮短時(shí)間減小沖擊的目標(biāo)。
為了研究機(jī)械臂軌跡規(guī)劃,對(duì)機(jī)械臂進(jìn)行運(yùn)動(dòng)學(xué)分析必不可少,本文中以埃夫特ER3A-C60型機(jī)械臂為研究對(duì)象,如圖1所示,其擁有6個(gè)關(guān)節(jié)并均為旋轉(zhuǎn)副,能承受較大載荷,可以搬運(yùn)較重的零件。對(duì)機(jī)械臂關(guān)節(jié)建立連桿固連坐標(biāo)系,如圖2所示。
用標(biāo)準(zhǔn)D-H參數(shù)法對(duì)該機(jī)械臂進(jìn)行模型建立,該機(jī)械機(jī)器臂D-H參數(shù)如表1所示。
表1 D-H參數(shù)
使用MATLAB機(jī)器人工具箱建立模型,世界坐標(biāo)系與機(jī)械臂的基坐標(biāo)系相互重合,減少計(jì)算量,機(jī)械臂在零位時(shí)的模型如圖3所示,借助搭建的模型,可以驗(yàn)證機(jī)械臂正、逆運(yùn)動(dòng)學(xué)正確性。
圖3 ER3A-C60型機(jī)器人模型
(1)
式中:c為cos,s為sin。
(2)
(3)
式中:[n,o,a]3×3表示機(jī)械臂末端相對(duì)于基坐標(biāo)的姿態(tài)矩陣,[Px,Py,Pz]T表示機(jī)械臂末端相對(duì)于基坐標(biāo)的位置矩陣。
機(jī)械臂在工作過程中執(zhí)行器末端在笛卡爾空間會(huì)通過一系列軌跡點(diǎn),{oi},i=0,1,…,m,其中o0代表機(jī)械臂末端起始軌跡點(diǎn),om代表機(jī)械臂末端終止軌跡點(diǎn),通過機(jī)械臂逆運(yùn)動(dòng)學(xué)求解,可以推導(dǎo)出軌跡點(diǎn)對(duì)應(yīng)的關(guān)節(jié)空間位置為{θij},j=1,2,…,n,其中n是機(jī)械臂關(guān)節(jié)的個(gè)數(shù)[5]。優(yōu)化目標(biāo)定義為:
(4)
(5)
式中:F1代表機(jī)械臂運(yùn)動(dòng)總時(shí)間,ti代表從軌跡點(diǎn)oi到oi+1的時(shí)間,i=1,2,…,m-1,F2代表機(jī)械臂關(guān)節(jié)沖擊。
歸一化目標(biāo)函數(shù)如下:
Ff=KtF1+KjF2+KpFp
(6)
式中:Kt為時(shí)間系數(shù),Kj為沖擊系數(shù),Kp為懲罰項(xiàng)系數(shù),設(shè)定Kt=0.4,Kj=0.6,Kp=5;Fp是懲罰項(xiàng),初始值是0,當(dāng)關(guān)節(jié)超過各約束都會(huì)使其值增加1。
機(jī)械臂運(yùn)動(dòng)過程中,需要滿足以下約束函數(shù):
(7)
B樣條曲線具有較高的靈活性,可以進(jìn)行局部微小的修改操作,而且各個(gè)關(guān)節(jié)需要滿足關(guān)節(jié)角度、角速度、角加速度和角加加速度的約束,使用五次B樣條曲線對(duì)機(jī)械臂進(jìn)行軌跡規(guī)劃插值擬合[7-8],得到角度、角速度、角加速度、角加加速度都平滑連續(xù)的函數(shù)曲線。B樣條曲線方程為:
(8)
(9)
式中:u是變量,di是控制頂點(diǎn),規(guī)定0/0=0;Bi,k(t)是k次B樣條基函數(shù),區(qū)間u∈[ui,ui+k+1]定義節(jié)點(diǎn)矢量U=[u0,u1,u,…,u2k],對(duì)于一點(diǎn)ui最多有k+1個(gè)非0的k次B樣條Br,k(u),其中r∈[i-1,i],其他k次B樣條基函數(shù)都為0。因此B樣條曲線可另外表示為:
(10)
將插值曲線的定義域轉(zhuǎn)換成規(guī)范定義域,節(jié)點(diǎn)矢量為:
(11)
對(duì)時(shí)間節(jié)點(diǎn)歸一化,得到:
(12)
得到滿足插值條件的n+1個(gè)方程:
(13)
式中:ui+k∈[uk,un+k],i=0,1,…,n。
使用切矢邊條件約束可以得到k-1個(gè)條件,5次B樣條曲線可以得到:
(14)
式中:vs和ve是關(guān)節(jié)啟停速度,as和ae是關(guān)節(jié)啟停加速度。根據(jù)德布爾遞推公式求出各階矢導(dǎo):
(15)
(16)
根據(jù)上述公式可得個(gè)n+5個(gè)方程,以矩陣形式表示:
Ajdj=pj
(17)
(18)
通過式(17)可反推求解出控制點(diǎn):
(19)
根據(jù)式(12)、式(19)、式(9)求出的時(shí)間節(jié)點(diǎn)向量、控制頂點(diǎn)向量和B樣條基函數(shù);由式(10)得到關(guān)節(jié)在t∈[t0,tn]的軌跡曲線,由式(15)可以得出各階導(dǎo)曲線,可在求解最優(yōu)軌跡規(guī)劃時(shí)構(gòu)造約束函數(shù)。
常用的軌跡優(yōu)化算法有遺傳算法,粒子群算法等,但上述算法針對(duì)多目標(biāo)優(yōu)化存在求解精度低,后期迭代速度慢等問題,而雞群優(yōu)化算法不需要對(duì)問題進(jìn)行特殊處理,比如不需要引入特殊的編碼方式、特殊的交配和突變操作等,有著收斂速度快,收斂精度高的優(yōu)點(diǎn),因此本文選用雞群優(yōu)化算法來進(jìn)行機(jī)械臂的軌跡優(yōu)化。
雞群優(yōu)化算法中種群分為3類:公雞、母雞和小雞,將雞群按適應(yīng)度值排序,靠前的NR個(gè)是公雞,最后的NC個(gè)是小雞,剩下的是母雞;將雞群分為NR個(gè)組,保證每個(gè)組中都有一個(gè)公雞,母雞隨機(jī)分配到各個(gè)組中,與公雞確立跟隨關(guān)系;隨機(jī)選取NH個(gè)母雞,小雞隨機(jī)分配到母雞身邊,與母雞確立母子關(guān)系。且不同的種群的位置更新方法不同。若第i只雞用i表示,d表示解的維度,表示解中的第j維,G表示當(dāng)前迭代輪數(shù),則表示在第G輪迭代時(shí),第i只雞在第j維上的位置[9]。公雞的位置更新方法如式(20)、式(21)所示。
(20)
(21)
式中:N(0,σ2)表示均值為0、方差為σ2的正態(tài)分布;k代表不同于公雞i的另一只公雞k,f為每只公雞的最優(yōu)適應(yīng)度值,ε為計(jì)算機(jī)中最小的常數(shù),其作用是防止公式中的分母為0造成無法計(jì)算。
母雞跟隨自己組中的公雞尋找食物,母雞位置更新方法如式(22)~式(24)所示。
(22)
(23)
S2=exp(fr2-fi)
(24)
式中:R表示區(qū)間[0,1]上的隨機(jī)數(shù),abs()表示取絕對(duì)值運(yùn)算,r1為母雞i所在組內(nèi)的公雞,r2為雞群優(yōu)化中除了母雞i和與其同組的公雞r1之外的另一只公雞或母雞。
小雞跟隨自己的母雞進(jìn)行覓食,小雞的位置更新方法如式(25)所示。
(25)
式中:m表示小雞i的母親,F表示小雞跟隨母雞進(jìn)行覓食的調(diào)節(jié)參數(shù),由于小雞群優(yōu)化體中的每個(gè)個(gè)體也存在差異性,因此F為區(qū)間[0,2]上的隨機(jī)數(shù)。
公雞的位置更新方式呈現(xiàn)正態(tài)分布,其隨意性造成公雞錯(cuò)過全局最優(yōu)解,本文將鯨魚算法[10]的包圍機(jī)制和蜉蝣算法[11]的速度機(jī)制融入公雞的位置更新方式中,增強(qiáng)全局搜索能力,ICSO中的公雞的位置更新方法為:
(26)
(27)
S=2Ab2-A
(28)
(29)
(30)
基于萊維的運(yùn)動(dòng)方式是非破壞覓食環(huán)境中覓食者最佳搜索方法[12],為了使母雞和小雞可以更精準(zhǔn)的模仿雞的覓食,引入萊維飛行策略,進(jìn)而提升算法全局搜索能力。ICSO算法中的母雞的位置更新方法為:
(31)
(32)
(33)
式中:L(λ)表示萊維飛行產(chǎn)生的步長(zhǎng),β為常數(shù),取值1.5;μ、v為均值為0、方差為1的正態(tài)分布;Γ為Gamma函數(shù)[13]。
小雞跟隨母雞,為了增強(qiáng)其全局搜索能力,將小雞跟隨母雞進(jìn)行覓食的調(diào)節(jié)參數(shù)替換成萊維飛行步長(zhǎng),ICSO算法中的小雞位置更新方法為:
(34)
雞群迭代前期,種群差異較大,但是在迭代后期,個(gè)體之間差異程度降低,導(dǎo)致種群多樣性降低,致使過早收斂,陷入局部最優(yōu)。為了優(yōu)化雞群優(yōu)化算法這個(gè)缺陷,本文引入隨機(jī)差分變異操作[14],其定義為:
X(G+1)=Q(pbest-X(G))+Q(X′(G)-X(G))
(35)
式中:Q為差分變異算子,pbest為當(dāng)前最優(yōu)個(gè)體,X′(G)為群體中隨機(jī)選出的個(gè)體,X(G)為進(jìn)行變異操作的個(gè)體,其作用是對(duì)差分值進(jìn)行縮放。
Q取較大值時(shí),可以讓算法搜索范圍變廣,但是會(huì)導(dǎo)致收斂速度減慢;Q取值較小的時(shí)候,雖然搜索速度加快,但是會(huì)導(dǎo)致陷入局部最優(yōu)。為了避免上述問題,對(duì)差分變異算子進(jìn)行改進(jìn),使算法前期搜索大范圍,隨著迭代進(jìn)行加快搜索速度,進(jìn)后的定義如下:
(36)
式中:M為最大迭代次數(shù),G為當(dāng)前迭代次數(shù),rand為[0,1]之間的隨機(jī)數(shù)。
雞群迭代前期,不需要對(duì)太多個(gè)體進(jìn)行變異操作,因此,設(shè)定前期隨機(jī)選取變異個(gè)體少,隨著迭代進(jìn)行,種群差異變多,增加變異個(gè)體,對(duì)變異數(shù)量的設(shè)定為:
(37)
式中:min()為取其中最小值,int表示取整操作,Hm為變異數(shù)量上限,定為種群規(guī)模的20%。
算法基本步驟為:
步驟1:對(duì)算法參數(shù)初始化,設(shè)定雞群大小N、最大迭代次數(shù)M、個(gè)體位置維度、公雞母雞小雞的比例;
步驟2:對(duì)雞群進(jìn)行初始化,將雞群按適應(yīng)度值排序,確定公雞、母雞與小雞,并進(jìn)行分組,確定母雞與小雞之間的對(duì)應(yīng)關(guān)系;
步驟3:開始迭代,判斷是否更新分組,是否跟新集群中的關(guān)系,需要?jiǎng)t更新;否則公雞、母雞與小雞各自按照式(26)、式(31)、式(34)對(duì)自己的位置進(jìn)行更新,同時(shí)計(jì)算更新后的適應(yīng)度值;
步驟4:比較新舊位置適應(yīng)度值,保留小適應(yīng)度值的位置;
步驟5:根據(jù)式(35)對(duì)種群中隨機(jī)個(gè)體進(jìn)行差分變異操作;
步驟6:判斷是否滿足迭代停止條件,若是滿足。那么算法結(jié)束,輸出最優(yōu)解;否則回到步驟3。
為了驗(yàn)證ICSO的有效性,使用MATLAB R2018A平臺(tái)對(duì)ICSO進(jìn)行性能測(cè)試仿真試驗(yàn),同時(shí)添加CSO、WOA兩種算法進(jìn)行對(duì)比。設(shè)定群數(shù)量M為30,最大迭代次數(shù)為500次,所有測(cè)試函數(shù)如式(38)~(43)所示,實(shí)驗(yàn)結(jié)果如圖4所示。
f1=max{|xi|,1≤i≤n},[-100,100]n
(38)
(39)
(40)
(41)
(42)
(43)
式中:f1為單峰測(cè)試函數(shù),用來衡量算法求解精度;f2、f3為多峰測(cè)試函數(shù),用來度量算法全局搜索能力;f4、f5、f6為固定維測(cè)試函數(shù),用來測(cè)試算法的求解復(fù)雜多維能力。
由圖4a可知,在求解f1時(shí)隨著迭代次數(shù)的增加,ICSO比WOA和CSO達(dá)到更低的函數(shù)值,說明ICSO具有更好的收斂精度。由圖4b和圖4c可知,在求解f2、f3時(shí),起始階段ICSO就開始快速收斂,并能跳出局部最優(yōu),求解f2時(shí)ICSO盡管收斂速度比WOA慢,但是能在140次左右達(dá)到最優(yōu)值,且收斂值比WOA低,而CSO收斂速度慢而且收斂值差;求解f3時(shí)盡管3種算法收斂值一樣,但I(xiàn)CSO在前期能多次跳出局部最優(yōu)值,最快到達(dá)全局最優(yōu),體現(xiàn)了ICSO良好的全局尋優(yōu)能力。由圖4d~圖4f可知,在求解f4時(shí),ICSO在10次就完成收斂;在求解f5和f6時(shí),ICSO收斂值最低,且不斷跳出局部最優(yōu)解,驗(yàn)證了ICSO的有效性。
圖4 測(cè)試函數(shù)仿真結(jié)果
為了驗(yàn)證本文提出的ICSO在機(jī)械臂軌跡規(guī)劃中的有效性,以埃夫特ER3A-C60型機(jī)械臂為研究對(duì)象,使用MATLAB中機(jī)器人工具箱對(duì)其建模,如圖3所示,可通過其中Teach模塊控制機(jī)械臂運(yùn)動(dòng)。機(jī)械臂在笛卡爾空間內(nèi)經(jīng)過一條軌跡,其中包括起始點(diǎn)和終止點(diǎn)的8個(gè)軌跡點(diǎn)對(duì)應(yīng)的各個(gè)關(guān)節(jié)的角度信息如表2所示,將這些關(guān)節(jié)角度信息記錄到電腦中。
表2 軌跡點(diǎn)關(guān)節(jié)角度
在MATLAB中采用五次B樣條,CSO優(yōu)化和ICSO優(yōu)化分別對(duì)起始點(diǎn)到目標(biāo)點(diǎn)的共8個(gè)軌跡點(diǎn)的的運(yùn)動(dòng)軌跡規(guī)劃仿真對(duì)比實(shí)驗(yàn)。智能算法迭代次數(shù)設(shè)置為200次,雞群數(shù)量設(shè)置為30,公雞、母雞、小雞的比例為1:2:2,以式(6)中F1、F2為優(yōu)化指標(biāo),得出不同方案下的各關(guān)節(jié)角度、角速度、角加速度和沖擊隨時(shí)間的變化曲線如圖5所示,CSO和ICSO算法軌跡規(guī)劃收斂曲線如圖6所示。
(a) 關(guān)節(jié)1
圖6 軌跡規(guī)劃收斂曲線
由圖5可知,ICSO收斂值小于CSO,且在迭代20次、40次時(shí)均可跳出局部最優(yōu)。由圖6可知,不同方法下規(guī)劃的曲線都是連續(xù)光滑,但能看出經(jīng)過CSO優(yōu)化和ICSO優(yōu)化,機(jī)械臂運(yùn)動(dòng)時(shí)間減少,沖擊曲線起伏變小。具體的,各段軌跡運(yùn)行時(shí)間、總運(yùn)行時(shí)間如表3所示,不同方案下關(guān)節(jié)最大沖擊如表4所示。
表3 不同方案機(jī)械臂運(yùn)動(dòng)時(shí)間 (s)
表4 不同方案下關(guān)節(jié)最大沖擊 ((°)·s-3)
由表3可知,CSO優(yōu)化后比B樣條軌跡規(guī)劃的曲線時(shí)間減少9%,而ICSO優(yōu)化后時(shí)間減少12%。由表4可知,在經(jīng)過CSO優(yōu)化后,比B樣條軌跡規(guī)劃,關(guān)節(jié)1沖擊減少42%,關(guān)節(jié)2沖擊減少66%,關(guān)節(jié)3沖擊減少12%,關(guān)節(jié)4沖擊減少65%,關(guān)節(jié)5沖擊減少67%;而在ICSO優(yōu)化后,比B樣條軌跡規(guī)劃,關(guān)節(jié)1沖擊減少63%,關(guān)節(jié)2沖擊減少78%,關(guān)節(jié)3沖擊減少25%,關(guān)節(jié)4沖擊減少73%,關(guān)節(jié)5沖擊減少74%。使用CSO和ICSO軌跡優(yōu)化后關(guān)節(jié)最大沖擊減小,但I(xiàn)CSO效果更優(yōu)。因此本文提出的ICSO算法不僅降低了機(jī)械臂運(yùn)行時(shí)間,還降低了機(jī)械臂運(yùn)動(dòng)時(shí)的沖擊,延長(zhǎng)了機(jī)械臂使用壽命。
基于改進(jìn)雞群優(yōu)化算法的機(jī)械臂軌跡規(guī)劃,該算法參考鯨魚算法、蜉蝣算法來改良公雞位置更新方式,引入萊維飛行策略優(yōu)點(diǎn)來改良母雞和小雞的位置更新方式,提升全局搜索能力,并引入變異操作,提高了種群的復(fù)雜多樣性,得到收斂速率快,全局搜索能力強(qiáng)大的雞群優(yōu)化算法。
將ICSO應(yīng)用于機(jī)械臂的軌跡優(yōu)化中,并與5次B樣條軌跡規(guī)劃、CSO軌跡優(yōu)化結(jié)果對(duì)比,實(shí)驗(yàn)結(jié)果表明,基于ICSO的軌跡優(yōu)化,在機(jī)械臂運(yùn)動(dòng)中,減少了路徑運(yùn)動(dòng)時(shí)間,且各個(gè)關(guān)節(jié)最大沖擊,大大減少,為機(jī)械臂軌跡優(yōu)化領(lǐng)域的研究提供一定的借鑒。