蔡永超
(南陽農(nóng)業(yè)職業(yè)學(xué)院,河南 南陽 473000)
隨著人工智能的發(fā)展和勞動力使用成本的上升,機(jī)械臂在工業(yè)中的應(yīng)用越來越廣泛。機(jī)械臂工作軌跡關(guān)系到自身安全、能量消耗、生產(chǎn)效率、生產(chǎn)精度等多個方面[1],因此設(shè)計合理的機(jī)械臂軌跡規(guī)劃方法具有重要意義。
機(jī)械臂軌跡分為笛卡爾空間軌跡和關(guān)節(jié)空間軌跡,根據(jù)規(guī)劃目標(biāo)不同,可以將軌跡規(guī)劃分為時間最優(yōu)、能量最優(yōu)、沖擊最優(yōu)、多目標(biāo)規(guī)劃等[2],研究的是關(guān)節(jié)空間軌跡的時間最優(yōu)規(guī)劃。根據(jù)規(guī)劃要求不同,關(guān)節(jié)軌跡規(guī)劃分為針對固定路徑的規(guī)劃和點對點規(guī)劃,針對固定路徑的規(guī)劃是指給定笛卡爾空間路徑,根據(jù)此固定路徑規(guī)劃出關(guān)節(jié)空間路徑;點對點路徑規(guī)劃是指根據(jù)任務(wù)情況,設(shè)定機(jī)械臂必須經(jīng)過的若干空間點。對于關(guān)節(jié)空間點對點的軌跡規(guī)劃,當(dāng)前已經(jīng)產(chǎn)生一些研究成果,文獻(xiàn)[3]使用粒子群算法和B樣條曲線規(guī)劃了機(jī)械臂軌跡,比初始值節(jié)省了2s左右;文獻(xiàn)[4]使用布谷鳥算法對空間機(jī)械臂進(jìn)行軌跡規(guī)劃,提高了軌跡平滑性和穩(wěn)定性;文獻(xiàn)[5]使用5次非均勻有理B樣條曲線作為關(guān)節(jié)軌跡,使用NSGA-II算法給出了Pareto前沿解。上述方法均在一定意義下取得了較優(yōu)質(zhì)高效軌跡,但仍存在兩個方面的問題需深入研究:(1)點與點間軌跡使用的插值函數(shù),即時間最優(yōu)軌跡未必包含在當(dāng)前所用插值方程的函數(shù)族中;(2)受優(yōu)化算法性能影響,搜索到的軌跡多為次優(yōu)軌跡而非最優(yōu)軌跡。
針對機(jī)械臂關(guān)節(jié)空間軌跡的時間最優(yōu)規(guī)劃問題,建立了軌跡優(yōu)化模型,使用三次樣條曲線建立了軌跡基元模型,結(jié)合膜計算與粒子群算法,提出了膜計算-粒子群算法,將多種粒子群算法的優(yōu)勢融合在一起,達(dá)到了提高搜索精度和收斂速度的目的,將此算法應(yīng)用于機(jī)械臂關(guān)節(jié)空間軌跡規(guī)劃,減少了機(jī)械臂運行時間,提高了機(jī)械臂運行效率。
研究內(nèi)容是機(jī)械臂關(guān)節(jié)空間點對點軌跡的時間最優(yōu)規(guī)劃問題。根據(jù)機(jī)械臂活動范圍、任務(wù)需求和障礙物分布情況,制定機(jī)械臂工作過程中必須經(jīng)過的若干笛卡爾空間位姿點P0,P1,P2,…,Pm,P0為起始位姿,Pm為終止點位姿,使用運動學(xué)逆解求得相應(yīng)的關(guān)節(jié)空間點θ0,θ1,θ2,…,θm,θi={θij},j=1,2,…,n,n為機(jī)械臂關(guān)節(jié)角數(shù)量,然后使用插值函數(shù)依次經(jīng)過關(guān)節(jié)空間點 θ0,θ1,θ2,…,θm。優(yōu)化目標(biāo)是通過確定到達(dá)各關(guān)節(jié)空間節(jié)點的時間t0,t1,…,tm,使機(jī)械臂在滿足約束條件下使用最短時間依次經(jīng)過各關(guān)節(jié)空間節(jié)點。記hi=ti+1-ti表示機(jī)械臂在節(jié)點θi與θi+1間使用的時間,則優(yōu)化目標(biāo)函數(shù)為:
機(jī)械臂軌跡規(guī)劃的約束條件包括角速度約束、角加速度約束、沖擊約束等,即:
式中:θj、θ—第j個關(guān)節(jié)角速度、角加速度、角加加速度;vjjmax、ajmax、Jjmax—第j個關(guān)節(jié)角速度、角加速度、角加加速度最大值。
通過式(1)~式(2)將機(jī)械臂點對點軌跡規(guī)劃問題轉(zhuǎn)化為帶約束優(yōu)化問題。為了解算出機(jī)械臂關(guān)節(jié)空間軌跡,仍有兩個問題需要解決:一是給定點到點之間使用的軌跡基本單元(簡稱軌跡基元),二是對帶約束優(yōu)化問題進(jìn)行求解。
記關(guān)節(jié) j角位移-時間序列為{(θ0j,t1),(θ1j,t2),…,(θmj,tm)},為保證機(jī)械臂平穩(wěn)運行,要求機(jī)械臂軌跡至少二階導(dǎo)數(shù)連續(xù),使用三次樣條曲線作為軌跡基元進(jìn)行軌跡規(guī)劃。使用θj(t)在ti處的二階導(dǎo)數(shù)Aij構(gòu)造θj(t)曲線,由于θj(t)在[ti,ti+1]上為三次函數(shù),則其二階導(dǎo)數(shù)為線形函數(shù),即:
對式(3)進(jìn)行兩次積分,并使用邊界條件θj(ti)=θij和θj(ti+1)=θi+1,j定出積分常數(shù),得到θj(t)為:
只要求解出式(4)中 Aij,i=0,1,…,m 的值就能夠唯一確定式(4)的表達(dá)式,即給出軌跡基元。
使用以下邊界條件和導(dǎo)數(shù)連續(xù)性條件:
可以得到以下線形方程組:
式(6)中 λi、μi、di分別為:
式(6)中系數(shù)矩陣為嚴(yán)格對角占優(yōu)矩陣,則式(6)中Aij具有唯一確定解,將Aij代入到式(4)中即可求出軌跡基元方程。
由前文可知,若想給出軌跡基元函數(shù),必須已知關(guān)節(jié)角位移-時間序列{(θ0j,t1),(θ1j,t2),…,(θmj,tm)},其中關(guān)節(jié)角位移序列通過運動學(xué)逆解求得,對應(yīng)的時間序列通過前文建立的帶約束優(yōu)化模型求解得到。優(yōu)化問題求解包括下降類和演化類(也稱啟發(fā)搜索類)兩類方法,兩類方法各有優(yōu)缺點,演化類方法具有強(qiáng)大的搜索能力,提出膜計算-粒子群算法(Membrane Computing-PSO,MCPSO)用于求解優(yōu)化模型。
為了使機(jī)械臂依次經(jīng)過軌跡型值點(即給定點),則機(jī)械臂各關(guān)節(jié)必須在同一時刻到達(dá)相應(yīng)的關(guān)節(jié)角位置,即對于每個關(guān)節(jié)來講,時間序列{t0,t1…,tm}必須完全一致。
為了改善基本粒子群算法在某方面的性能,文獻(xiàn)[6]提出了適用于非線性多峰問題的中值引導(dǎo)粒子群算法(Median-oriented PSO,MPSO),文獻(xiàn)[7]提出了解決復(fù)雜多模態(tài)問題的多作用力粒子群算法(Multi Force PSO,MFPSO),文獻(xiàn)[8]提出了提高多峰問題搜索精度的兩階段作用力粒子群算法(Two-stage Force PSO,TFPSO)。為了將這些算法優(yōu)勢進(jìn)行融合,融合膜計算思想,提出了膜計算-粒子群算法。其原理框架,如圖1所示。從圖中可以看出,算法由四個基本膜組成,膜內(nèi)分別使用PSO、MPSO、MFPSO、TFPSO等算法進(jìn)行搜索,膜間使用處理器進(jìn)行算法淘汰、信息交流等。
圖1 膜計算-粒子群算法Fig.1 Membrane Computing-Particle Swarm Algorithm
膜間合作機(jī)制主要包括算法淘汰機(jī)制和信息交流機(jī)制兩個方面。算法淘汰機(jī)制為:算法在膜內(nèi)各自進(jìn)行搜索,每迭代10次將自身搜素到的最優(yōu)值提供給處理器,四個膜內(nèi)計算的目標(biāo)函數(shù)值分別記為 Top1、Top2、Top3、Top4,按照約定,目標(biāo)函數(shù)值越小則結(jié)果越優(yōu),處理器從 T1、T2、T3、T4挑選出最大值 Tmax,則對應(yīng)的膜為此次評價最差膜,若連續(xù)3次被評價為最差膜,則此膜被其他膜吞并而被淘汰。吞并方法為:將被淘汰膜中較優(yōu)的前1/3粒子去取代另外3個膜內(nèi)靠后的粒子,盡量實現(xiàn)被淘汰膜內(nèi)前1/3粒子在另外3內(nèi)膜內(nèi)的均分。
信息交流機(jī)制為:為了使算法較充分尋優(yōu)后再進(jìn)行信息交流,規(guī)定算法每迭代20次進(jìn)行一次信息交流,每個基本膜將自身搜索到的前10個最優(yōu)粒子傳遞給處理器,處理器將此40或30個(若某個膜被淘汰)粒子由優(yōu)到差進(jìn)行排序。而后對基本膜內(nèi)算法的搜索能力進(jìn)行評價并排序,使用當(dāng)前粒子群的目標(biāo)函數(shù)平均值和最優(yōu)值Top進(jìn)行評判,為:
基本膜內(nèi)算法對應(yīng)的ET越大說明算法搜索能力越差,將算法按照搜索能力進(jìn)行排序,而后將粒子分配給基本膜,分配原則是較優(yōu)粒子分配給較差算法以提升其粒子整體進(jìn)化水平,具體操作方法為:最優(yōu)粒子分配給最差算法、次優(yōu)粒子分配給次差算法,如此按照基本膜數(shù)量為一個周期,進(jìn)行循環(huán)分配直至分配結(jié)束,完成信息交流。
基本膜內(nèi)算法按照自身的速度和位置更新方法進(jìn)行更新,彼此之間相互獨立。
膜1內(nèi)為基本粒子群算法,速度和位置更新方法為[9-10]:
式中:ω—慣性權(quán)重;c1—自身學(xué)習(xí)因子;c2—群體學(xué)習(xí)因子;r1、r2—(0,1) 間的隨機(jī)數(shù);t—迭代次數(shù);—第 i個粒子第d維迭代t次時的位置和速度—第i個粒子迭代t次時在第d維的歷史最優(yōu)位置—粒子群迭代t次時在第d維的種群最優(yōu)位置。
膜2內(nèi)為中值引導(dǎo)粒子群算法,為了提高全局搜索能力算法中引入了加速因子:
中值引導(dǎo)粒子群算法的速度和位置更新方法為:
膜3內(nèi)為多作用力粒子群算法,速度和位置更新方法為:
式中:ω—慣性權(quán)重;cj、cg—學(xué)習(xí)因子;r1、r2、r3—(0,1)間的隨機(jī)數(shù);α、β、γ—前中后期搜索切換系數(shù)。定義兩個切換因子t1、t2,當(dāng) t<t1為算法前期則 α=1,β=γ=0;當(dāng) t1≤t<t2為算法中期則β=1,α=γ=0;當(dāng) t≥t2為算法后期則 γ=1,α=β=0。B(i)為歷史最優(yōu)優(yōu)于xtid的個體,W(i)為歷史最優(yōu)優(yōu)于xtid的個體。
膜4內(nèi)為兩階段作用力粒子群算法,速度和位置更新方法為:
式中:μ、θ—算法前后期切換系數(shù),記算法進(jìn)化停滯次數(shù)為lmax,當(dāng)t<lmax時為算法前期,此時 μ=1、θ=0;當(dāng) t≥lmax時為算法后期,此時 μ=0、θ=1。
根據(jù)3.1節(jié)對膜間合作機(jī)制和3.2節(jié)對膜內(nèi)更新機(jī)制的描述,制定膜計算-粒子群算法流程,如圖2所示。
圖2 膜計算-粒子群算法流程Fig.2 Membrane Computing-Particle Swarm Algorithm Flow
對兩個方面進(jìn)行驗證:(1)驗證膜計算-粒子群算法的搜索能力和搜索速度;(2)驗證膜計算-粒子群算法在機(jī)械臂軌跡規(guī)劃中的性能。
從常用于評價優(yōu)化算法性能的Benchmark函數(shù)中隨機(jī)選取兩個作為測試函數(shù),測試函數(shù)表達(dá)式為:
式中:n—測試函數(shù)的維度,且兩個測試函數(shù)在定義域內(nèi)的極值分別為:
膜計算-粒子群算法參數(shù)設(shè)置中,對于不同粒子群算法共同函數(shù)的參數(shù)則取同一值,對于非公共參數(shù)則各自取值。算法參數(shù)設(shè)置為:加速常數(shù)c1=c2=c3=cj=cg=1.5,慣性權(quán)重ω=0.5,最大迭代次數(shù)tmax=500,種群規(guī)模為C=48,切換因子t1=50、t2=350,算法進(jìn)化停滯次數(shù)lmax=200,粒子維數(shù)為10。分別使用MPSO、MFPSO、TFPSO、MCPSO算法對測試函數(shù)最優(yōu)值進(jìn)行搜索,每種算法獨立運行10次,各算法平均值優(yōu)化結(jié)果隨迭代次數(shù)的變化過程,如圖3所示。從圖3中可以看出,膜計算-粒子群算法對兩種測試函數(shù)進(jìn)行搜索時均具有最少的迭代次數(shù)和最高的尋優(yōu)精度,統(tǒng)計四種算法10次獨立搜索結(jié)果的最優(yōu)值、平均值、標(biāo)準(zhǔn)差和尋優(yōu)時間,結(jié)果如表1所示。從圖3和表1中可以看出,膜計算-粒子群算法在測試函數(shù)定義域內(nèi)搜索極值時具有最快的收斂速度和最高的搜索精度,另外膜計算-粒子群算法的尋優(yōu)結(jié)果標(biāo)準(zhǔn)差最小,說明此算法性能最為穩(wěn)定,每次都能夠搜索到極優(yōu)的結(jié)果。這是因為通過基本膜之間的淘汰機(jī)制和信息交流機(jī)制,將基本膜內(nèi)各算法的優(yōu)勢融合在一起,使得膜計算-粒子群算法兼具各種算法的優(yōu)勢和長處,在對各類型測試函數(shù)尋優(yōu)時都能夠發(fā)揮極好的性能。
圖3 不同算法對測試函數(shù)的優(yōu)化過程Fig.3 Optimizing Process of Different Algorithm to Testing Function
表1 不同算法的尋優(yōu)結(jié)果統(tǒng)計Tab.1 Optimizing Result Statistics of Different Algorithms
以KLD-600多關(guān)節(jié)機(jī)械臂為仿真對象,對機(jī)械臂的3個關(guān)節(jié)進(jìn)行時間最優(yōu)軌跡規(guī)劃,機(jī)械臂完成某種任務(wù)時的關(guān)節(jié)空間型值點,如表2所示。
表2 機(jī)械臂關(guān)節(jié)軌跡型值點Tab.2 Mechanical Arm Joint Space Trajectory Model Point
根據(jù)3個關(guān)節(jié)的運動能力和驅(qū)動能力,分別設(shè)定3個關(guān)節(jié)的約束條件。關(guān)節(jié) 1:v1max=100,a1max=45,J1max=60;關(guān)節(jié) 2:v2max=95,a2max=40,J2max=60;關(guān)節(jié) 3:v3max=100,a3max=75,J3max=55。依據(jù)表 1 中數(shù)據(jù),選擇性能靠前的多作用力粒子群算法與膜計算-粒子群算法進(jìn)行比較。按照需優(yōu)化的變量數(shù),將粒子維度設(shè)置為7,算法其余參數(shù)與4.1節(jié)一致。兩種算法搜索的目標(biāo)函數(shù)值隨迭代過程的變化,如圖4所示。對應(yīng)的粒子位置,如表3所示。
圖4 兩種粒子群算法的迭代過程Fig.4 Iteration Process of the Two PSO Algorithms
表3 兩種粒子群算法的優(yōu)化結(jié)果Tab.3 Optimizing Result of the Two PSO Algorithms
由表2中數(shù)據(jù)可知,使用膜計算-粒子群算法規(guī)劃的軌跡耗時為14.412s,使用多作用力粒子群算法規(guī)劃的軌跡耗時為17.869s,比MCPSO算法的軌跡耗時多23.99%,另外由圖2可以看出,膜計算-粒子群算法迭代至55次時目標(biāo)函數(shù)值不再下降,而多作用力粒子群算法迭代至150次時目標(biāo)函數(shù)值收斂至局部最優(yōu),不再變化。可以明顯看出,膜計算-粒子群算法在規(guī)劃結(jié)果的質(zhì)量和規(guī)劃速度方面遠(yuǎn)遠(yuǎn)優(yōu)于多作用力粒子群算法,這是因為膜計算-粒子群算法通過基本膜之間的算法淘汰和信息交流機(jī)制,有效將多種粒子群算法的優(yōu)勢融合在一起,使算法具有更強(qiáng)搜索能力和更快收斂速度。
使用膜計算-粒子群算法規(guī)劃的機(jī)械臂關(guān)節(jié)空間軌跡及角速度,如圖5所示。
圖5 機(jī)械臂關(guān)節(jié)空間軌跡Fig.5 Mechanical Arm Joint Space Trajectory
從圖5可以看出,膜計算-粒子群算法規(guī)劃的關(guān)節(jié)空間軌跡及角速度曲線均非常平滑,且在約束范圍內(nèi),可以應(yīng)用于機(jī)械臂工作過程中。從關(guān)節(jié)角速度曲線可以看出,初始時刻和結(jié)束時刻的關(guān)節(jié)角速度均為0,滿足邊界約束條件。在圖5(a)中,橢圓圈出的部分為機(jī)械臂關(guān)節(jié)角變化極為緩慢的過程,這是因為只有所有關(guān)節(jié)角同時達(dá)到型值點,才能夠到達(dá)笛卡爾空間相應(yīng)的節(jié)點,此時關(guān)節(jié)角變化緩慢是在等待其他關(guān)節(jié)角到達(dá)要求位置。綜上所述,膜計算-粒子群算法規(guī)劃的機(jī)械臂軌跡平滑且滿足約束條件和邊界條件,可以應(yīng)用于機(jī)械臂工作過程中。
針對機(jī)械臂關(guān)節(jié)空間軌跡的最優(yōu)時間規(guī)劃問題,建立了規(guī)劃模型,提出了膜計算-粒子群算法進(jìn)行求解,經(jīng)過驗證得到了以下結(jié)論:(1)膜計算-粒子群算法通過膜間算法淘汰和信息交流,融合了多算法優(yōu)勢,具有更快收斂速度和更高搜索精度;(2)將膜計算-粒子群算法應(yīng)用于機(jī)械臂關(guān)節(jié)空間軌跡規(guī)劃,降低了機(jī)械臂運行時間,提高了機(jī)械臂工作效率。