李帥帥,王雙園,張吳飛,李嘉成
(上海理工大學(xué) 機(jī)械工程學(xué)院,上海 200093)
隨著工業(yè)機(jī)器人技術(shù)的快速發(fā)展以及自動(dòng)化水平的大幅度提高,越來(lái)越多的機(jī)械臂被應(yīng)用于不同的場(chǎng)景之中。而機(jī)器人的軌跡運(yùn)動(dòng)是主要的關(guān)注點(diǎn)之一。目前針對(duì)軌跡規(guī)劃主要從2個(gè)方面進(jìn)行考慮:一是從時(shí)間方面進(jìn)行優(yōu)化;二是從力矩方面優(yōu)化。課題組準(zhǔn)備從時(shí)間方面對(duì)機(jī)械臂的軌跡進(jìn)行優(yōu)化。時(shí)間最優(yōu)軌跡規(guī)劃不僅可以縮短機(jī)械臂按照預(yù)定路徑運(yùn)動(dòng)的時(shí)間,還可以大大提高機(jī)械臂的工作效率。目前關(guān)于時(shí)間最優(yōu)軌跡規(guī)劃的研究有很多。Papadopoulos等[1]利用多項(xiàng)式函數(shù)對(duì)關(guān)節(jié)的軌跡進(jìn)行跟蹤,此方法可以讓機(jī)械臂的運(yùn)動(dòng)軌跡曲線相對(duì)平滑,但是效果不夠理想;Wei等[2]利用遺傳算法對(duì)機(jī)械臂的軌跡進(jìn)行最優(yōu)化求解,但是該方法的迭代過(guò)程比較復(fù)雜,最優(yōu)解找到之后還需要對(duì)最優(yōu)解進(jìn)行一系列的操作,比如編碼和解碼等;Chen等[3]利用一種新的算法即和聲搜索算法對(duì)機(jī)械臂時(shí)間求解最優(yōu)解,但是該算法在參數(shù)值以及聲記憶庫(kù)的取值方面和概率微調(diào)方面存在著一定的不足;Kim等[4]采用了一種標(biāo)準(zhǔn)化步長(zhǎng)將粒子群進(jìn)行初始化的方法,該算法雖然優(yōu)化效果相對(duì)較好,但是隨著迭代次數(shù)的增加,出現(xiàn)了局部收斂;南文虎等[5]把機(jī)械臂的最大速度曲線進(jìn)行多重約束,然后利用修型/射靶算法對(duì)偏離實(shí)際的最大速度曲線進(jìn)行矯正,從而得到時(shí)間最優(yōu)軌跡;蔡永超[6]采用膜計(jì)算-粒子群算法對(duì)機(jī)械臂的關(guān)節(jié)空間軌跡進(jìn)行規(guī)劃求解。
在眾多軌跡規(guī)劃方法中,插值法因?yàn)槠溆?jì)算簡(jiǎn)單,使用范圍最為廣泛。方健等[7]利用三次樣條插值法對(duì)機(jī)械臂的軌跡進(jìn)行優(yōu)化求解;朱世強(qiáng)等[8]利用七次樣條曲線法對(duì)機(jī)械臂軌跡進(jìn)行插值,該方法使得機(jī)械臂脈沖取得連續(xù)最優(yōu)。雖然高階多項(xiàng)式插值在機(jī)械臂的速度、加速度等方面取得比較好的效果,但是由于高階多項(xiàng)式計(jì)算相對(duì)復(fù)雜,同時(shí)對(duì)機(jī)械臂的硬件要求相對(duì)較高,實(shí)用性較低,所以有人提出用分段的方式對(duì)機(jī)械臂進(jìn)行插值。李林升[9]采用5-5-7-5分段多項(xiàng)式對(duì)機(jī)械臂進(jìn)行插值計(jì)算并利用懲罰函數(shù)取得最優(yōu)值;江鴻懷等[10]利用五次非均勻 樣條法對(duì)機(jī)械臂進(jìn)行插值計(jì)算并結(jié)合粒子群算法求解最優(yōu)解。
以上算法大都存在局部或全局最優(yōu)解的問(wèn)題,導(dǎo)致搜索能力難以平衡,穩(wěn)定性較差。故課題組采用改進(jìn)的蝙蝠算法,把時(shí)間最短作為優(yōu)化的目標(biāo),然后約束機(jī)械臂的速度和加速度,采用3-5-5-3分段多項(xiàng)式對(duì)機(jī)械臂軌跡進(jìn)行插值,該方法在全局以及局部的搜索平衡方面具有明顯的改善,而且該算法的參數(shù)較少,計(jì)算相對(duì)簡(jiǎn)單,與傳統(tǒng)的蝙蝠算法相比收斂性更好,優(yōu)化效果明顯改善。
在構(gòu)造函數(shù)的過(guò)程中若插值函數(shù)階數(shù)過(guò)高會(huì)導(dǎo)致凸包性較差,而且計(jì)算復(fù)雜[11-13];如果階數(shù)過(guò)低會(huì)導(dǎo)致速度和加速度曲線不平滑,產(chǎn)生突變,所以課題組采用3-5-5-3次多項(xiàng)式函數(shù)既可以解決凸包性差的問(wèn)題也可以解決速度和加速度曲線變化不平滑的問(wèn)題。
3-5-5-3分段多項(xiàng)式的通用公式為:
(1)
式中:θi1(t)為第i個(gè)關(guān)節(jié)第1段的三次多項(xiàng)式;θi2(t)為第i個(gè)關(guān)節(jié)第2段的五次多項(xiàng)式;θi3(t)為第i個(gè)關(guān)節(jié)第3段的五次多項(xiàng)式;θi4(t)為第i個(gè)關(guān)節(jié)第4段的三次多項(xiàng)式;ai1n,ai2n,ai3n和ai4n表示第i個(gè)軌跡的第1段、第2段、第3段和第4段多項(xiàng)式的第n個(gè)系數(shù),t為時(shí)間。
4段分別對(duì)應(yīng)的時(shí)間段為t0~t1,t1~t2,t2~t3,t3~t4。
分段多項(xiàng)式中的三次多項(xiàng)式起點(diǎn)和終點(diǎn)軌跡函數(shù)方程為:
(2)
由式(2)和機(jī)械臂的速度、加速度為0的位置以及機(jī)械臂速度和加速度連續(xù)等約束條件,可以得出區(qū)間1和區(qū)間4在三次插值的軌跡函數(shù)方程的系數(shù)。同理,區(qū)間2和區(qū)間3中的軌跡函數(shù)的系數(shù)可由五次多項(xiàng)式函數(shù)方程解出,五次多項(xiàng)式的軌跡函數(shù)如式(3)所示。
(3)
蝙蝠在尋找獵物時(shí)根據(jù)回聲定位來(lái)檢測(cè)獵物的存在。在尋找獵物時(shí)通常會(huì)以110 dB/s的聲強(qiáng)釋放大約10~20個(gè)超聲波脈沖,在狩獵時(shí)音強(qiáng)會(huì)保持最大值;一旦發(fā)現(xiàn)獵物,蝙蝠就會(huì)向獵物靠近,在靠近的過(guò)程中該脈沖就會(huì)隨之距離的靠近而減小,此時(shí),脈沖的頻度就會(huì)增加,通常會(huì)達(dá)到200個(gè)/s。超聲波的傳輸與脈沖音強(qiáng)呈正相關(guān),脈沖音強(qiáng)越大,傳播距離越遠(yuǎn),頻率就越高,從而提高蝙蝠捕食的效率。
在2010年Yang根據(jù)蝙蝠的回聲定位系統(tǒng)提出了一種仿生模擬蝙蝠獵食行為的群智能搜索算法,即蝙蝠算法[14]。蝙蝠算法把搜索空間中的各點(diǎn)當(dāng)成是蝙蝠個(gè)體,把蝙蝠捕食時(shí)的搜索獵物和向獵物移動(dòng)的過(guò)程當(dāng)作搜索和優(yōu)化的過(guò)程,把蝙蝠所在的位置好壞當(dāng)作是求解目標(biāo)的適應(yīng)度值。在該算法中,如果蝙蝠想要準(zhǔn)確無(wú)誤地識(shí)別障礙物,并精準(zhǔn)地捕捉獵物,就需要對(duì)蝙蝠算法做理想假設(shè)[15]:
1)蝙蝠捕食時(shí)利用回聲定位來(lái)感知獵物與自身之間的距離,并且在障礙物識(shí)別中有著自己的獨(dú)特方式。
2)蝙蝠在空間Xi中并以速度vi隨機(jī)飛行,同時(shí)在固定頻率fmin,可變波長(zhǎng)λ以及音量A0下進(jìn)行搜索獵物;蝙蝠會(huì)根據(jù)自身與獵物之間的距離來(lái)調(diào)整脈沖波長(zhǎng)和頻率,以更好地識(shí)別和捕獲獵物,脈沖發(fā)射率γ是[0,1]之間的隨機(jī)數(shù)。
3)假設(shè)在蝙蝠算法中,音量從最大值A(chǔ)0變化到一個(gè)固定值A(chǔ)min。
fi=fmin+(fmax-fmin)β;
(4)
(5)
(6)
式中:fi為第i只蝙蝠發(fā)出的聲波頻率;fmax為第i只蝙蝠發(fā)出的頻率最大值;fmin為第i只蝙蝠發(fā)出的頻率最小值,即固定頻率;x*為蝙蝠當(dāng)前所處的最優(yōu)位置;β為[0,1]之間的隨機(jī)數(shù)。
在局部搜索中,如果一個(gè)蝙蝠選擇了一個(gè)最優(yōu)解,此時(shí)該蝙蝠將在此最優(yōu)解的附近產(chǎn)生一個(gè)新的解:
xnew=xold+εAt。
(7)
式中:xold為從當(dāng)前最優(yōu)解中所選擇的一個(gè)最優(yōu)解;At為在t時(shí)刻所有蝙蝠響度的平均值;ε為[0,1]之間的隨機(jī)數(shù)。
蝙蝠在搜尋獵物時(shí)會(huì)依據(jù)自身與獵物之間的距離隨時(shí)調(diào)節(jié)超聲波的響度以及頻度,用來(lái)提高捕食的效率。蝙蝠的脈沖響度Ai和脈沖頻率ri公式為:
(8)
(9)
式中:α為蝙蝠聲波強(qiáng)度的衰減系數(shù),0<α<1;γ為蝙蝠脈沖頻度的增強(qiáng)系數(shù),γ>0。
蝙蝠算法的具體流程:
1)初始化參數(shù)——最大脈沖響度A0、最大脈沖速率r0,脈沖頻率范圍,聲波強(qiáng)度衰減系數(shù)α,脈沖頻度增強(qiáng)系數(shù)γ,最大迭代次數(shù)M以及目標(biāo)函數(shù)f(x)。
2)隨機(jī)分布蝙蝠的位置Xi,計(jì)算當(dāng)前位置的適應(yīng)度值并進(jìn)行比較,從而尋找最優(yōu)解X*。
3)根據(jù)式(4)~(6)更新并計(jì)算蝙蝠的脈沖頻率、位置和速度。
4)生成均勻分布的隨機(jī)數(shù)d1,如果d1>ri,則隨機(jī)擾動(dòng)當(dāng)前位置上的蝙蝠,讓其產(chǎn)生新解。
5)生成均勻分布的隨機(jī)數(shù)d2,若d2 6)對(duì)所有位置上蝙蝠的適應(yīng)度值進(jìn)行比較,找出最優(yōu)解和最優(yōu)值。 7)若在當(dāng)前位置不是最優(yōu)解則重復(fù)步驟2)~5),直至找出最優(yōu)解。 蝙蝠算法的流程圖如圖1所示。 圖1 蝙蝠算法流程圖 蝙蝠算法雖然構(gòu)造模型比較簡(jiǎn)單,參數(shù)設(shè)置較少,但是很容易在迭代后期進(jìn)入局部最優(yōu)解,影響種群的多樣性。所以為了解決傳統(tǒng)蝙蝠算法的缺點(diǎn),就需要對(duì)此算法進(jìn)行改進(jìn)。謝健等[16]提出了一種帶Lévy飛行特征的蝙蝠算法,在該算法中用式(10)來(lái)替換蝙蝠算法中的位置更新公式。 (10) 式中Levv(λ)為蝙蝠跳躍的步長(zhǎng)。 但是步長(zhǎng)的控制不易確定,如果步長(zhǎng)太小則改進(jìn)沒(méi)有意義,如果步長(zhǎng)太大,則蝙蝠可能跳躍到很遠(yuǎn)的位置,所以在此基礎(chǔ)之上對(duì)步長(zhǎng)做出改進(jìn)。在蝙蝠的步長(zhǎng)中引入一個(gè)非線性因子η,該非線性因子可以擴(kuò)大蝙蝠的搜索范圍,以此可以保證在迭代后期蝙蝠種群的多樣性。 (11) η=xy-0.5x; (12) (13) 式中:y為[0,1]上的隨機(jī)數(shù),p為當(dāng)前的迭代次數(shù),Tm為最大的迭代次數(shù),e為自然常數(shù),x為收斂因子。 從式(13)可以得出隨著迭代次數(shù)的增加,x呈非線性遞減。在迭代初期,x遞減速度較慢,蝙蝠可以以較大的步幅向獵物移動(dòng);在接近獵物時(shí),收斂因子衰減速度增加,此時(shí)步幅減小,從而可以更加準(zhǔn)確地捕捉獵物,尋找最優(yōu)解,可以有效地平衡全局與局部的搜索能力。 在求解機(jī)械臂時(shí)間最優(yōu)軌跡時(shí),課題組采用的3-5-5-3分段多項(xiàng)式法的求解與插值時(shí)間間隔t1,t2,t3和t4有關(guān)。在滿足速度、加速度的前提下以時(shí)間最短為優(yōu)化目標(biāo),若要使機(jī)械臂的末端快速到達(dá)某一點(diǎn),就需要所有關(guān)節(jié)同時(shí)運(yùn)動(dòng)并同時(shí)到達(dá)某一點(diǎn)。優(yōu)化每個(gè)關(guān)節(jié)時(shí),應(yīng)選擇每一段所花費(fèi)的最大時(shí)間,這樣才可以保證每個(gè)關(guān)節(jié)同時(shí)到達(dá)所對(duì)應(yīng)的角度。目標(biāo)函數(shù)與約束條件為: (14) max {|Vi|}≤Vimax。 (15) 式中:Vi為第i個(gè)關(guān)節(jié)角速度的值,Vimax為第i個(gè)關(guān)節(jié)角速度所允許的最大值。 課題組以6自由度SCARA機(jī)械臂為研究對(duì)象,設(shè)置蝙蝠的數(shù)量為30只,最大迭代次數(shù)設(shè)置為50,音量衰減系數(shù)α=0.8,速率增強(qiáng)系數(shù)γ=0.3,聲波響度A0=0.5,脈沖發(fā)射速率r0=0.25。選取5個(gè)路徑點(diǎn)作為插值點(diǎn),然后通過(guò)運(yùn)動(dòng)學(xué)逆解,將5個(gè)插值點(diǎn)從笛卡爾空間變換到關(guān)節(jié)空間,如表1所示。 表1 機(jī)械臂關(guān)節(jié)空間插值點(diǎn) 根據(jù)蝙蝠算法的步驟,限制關(guān)節(jié)的最大運(yùn)行速度為1.5 rad/s,把5個(gè)插值點(diǎn)帶入到改進(jìn)的蝙蝠算法中可以得到機(jī)械臂6個(gè)關(guān)節(jié)的最優(yōu)時(shí)間,如表2所示。 表2 機(jī)械臂各關(guān)節(jié)的最優(yōu)時(shí)間 如果使得各關(guān)節(jié)同時(shí)到達(dá)某一點(diǎn),則需要選取各關(guān)節(jié)每段插值中的最大值,所以ti1=0.354 6 s,ti2=0.427 6 s,ti3=0.526 8 s,ti4=0.570 9 s。經(jīng)過(guò)改進(jìn)的蝙蝠算法對(duì)3-5-5-3多項(xiàng)式插值之后,可以得到各關(guān)節(jié)的適應(yīng)度曲線以及位置進(jìn)化曲線,從圖2中可以看出改進(jìn)的蝙蝠算法在收斂性以及優(yōu)化效果都比傳統(tǒng)的蝙蝠算法效果要好。圖3~5表示的是機(jī)械臂前3個(gè)關(guān)節(jié)的位置進(jìn)化曲線圖,關(guān)節(jié)1 的位置進(jìn)化大概從第18次迭代開始收斂,關(guān)節(jié)2 的位置進(jìn)化大概從第20次迭代開始收斂,關(guān)節(jié)3 的位置進(jìn)化大概從第22次迭代開始收斂。 圖2 適應(yīng)度值曲線圖 圖3 關(guān)節(jié)1位置進(jìn)化曲線 圖4 關(guān)節(jié)2位置進(jìn)化曲線 圖5 關(guān)節(jié)3位置進(jìn)化曲線 機(jī)械臂的角度、角速度和角加速度的變化曲線如圖6~8所示。從圖中可以看出各曲線變化相對(duì)平滑,而且曲線連續(xù),沒(méi)有發(fā)生突變。從圖7可以看出機(jī)械臂的所有關(guān)節(jié)角速度均小于1.5 rad/s;圖8中的關(guān)節(jié)起始加速度和終止加速度均為0,符合約束條件。 圖6 角位移曲線 圖7 角速度曲線 圖8 角加速度曲線 課題組以SCARA 6自由度機(jī)械臂為研究對(duì)象,在關(guān)節(jié)空間下采用3-5-5-3多項(xiàng)式插值方法,并采用改進(jìn)的蝙蝠算法求解機(jī)械臂的時(shí)間最優(yōu)軌跡。利用MATLAB仿真模擬,從蝙蝠的位置進(jìn)化曲線以及適應(yīng)度值的對(duì)比可以看出,改進(jìn)后的蝙蝠算法在收斂性以及優(yōu)化性方面均遠(yuǎn)遠(yuǎn)優(yōu)于傳統(tǒng)的蝙蝠算法;從機(jī)械臂的角位移、角速度和角加速度曲線可以看出,曲線變化平穩(wěn),無(wú)突變,進(jìn)一步證實(shí)了該算法的可行性。2.3 蝙蝠算法的改進(jìn)
3 MATLAB仿真
4 結(jié)論