張淑珍,甄晶博,李春玲,朱紅光
(蘭州理工大學(xué)機(jī)電工程學(xué)院,甘肅 蘭州 730050)
在生產(chǎn)操作中,機(jī)械臂關(guān)節(jié)空間的自由度大于任務(wù)操作空間所需自由度時為冗余機(jī)械臂,如此末端操作器才能夠到達(dá)空間中的任意位置,并做出滿足工作需求的任意姿勢[1]。機(jī)械臂的冗余特性可以使其實現(xiàn)力矩優(yōu)化、避奇異、避障、容錯等功能,因此成為當(dāng)前研究的熱點[2]。冗余機(jī)械臂逆解存在多解性,需要對其施加額外的約束才能進(jìn)行逆解優(yōu)化[3]。同時,冗余機(jī)械臂的逆運動學(xué)方程是強耦合的非線性方程組,其逆運動學(xué)求解較為困難[4-5]。而人工神經(jīng)網(wǎng)絡(luò)對非線性方程組有著很好的逼近能力,其中RBF(radial basis function,徑向基函數(shù))神經(jīng)網(wǎng)絡(luò)是應(yīng)用較為廣泛的神經(jīng)網(wǎng)絡(luò)[6-7]。
冗余機(jī)械臂的自運動特性可以改善其運動學(xué)與動力學(xué)性能,如避障、容錯等,但是冗余機(jī)械臂的逆運動學(xué)方程組利用傳統(tǒng)方法求解較為困難。羅小平等[8]提出了一種基于關(guān)節(jié)最佳柔順性的優(yōu)化準(zhǔn)則,利用模糊RBF神經(jīng)網(wǎng)絡(luò)求解平面3R冗余機(jī)械臂的運動學(xué)逆解,效果較好。付西光等[9]提出了一種基于正交最小二乘法的RBF神經(jīng)網(wǎng)絡(luò)算法,對7R掃查機(jī)器人逆運動學(xué)進(jìn)行了求解,速度較快,但并未充分利用其冗余性。歐群文等[10]提出了一種基于加權(quán)最小二乘法的最佳柔順性準(zhǔn)則,利用遺傳算法求出全局最優(yōu)解,將得到的樣本數(shù)據(jù)作為RBF神經(jīng)網(wǎng)絡(luò)的輸入,通過訓(xùn)練得到冗余機(jī)械臂任意位姿的逆解。
本文針對7軸串聯(lián)仿人機(jī)械臂,利用D-H法建立機(jī)械臂的運動學(xué)方程,在基于關(guān)節(jié)最佳柔順性的基礎(chǔ)上,利用改進(jìn)慣性權(quán)重與學(xué)習(xí)因子的PSO(partical swarm optimization, 粒子群優(yōu)化)算法,建立求解7軸機(jī)械臂的全局最優(yōu)解模型。由此得到訓(xùn)練神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)樣本,再利用RBF神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,從而獲得冗余機(jī)械臂運動學(xué)逆解。同時,利用MATLAB軟件進(jìn)行仿真實驗,驗證該方法在冗余機(jī)械臂逆運動學(xué)求解中的有效性。
本文所研究的7軸串聯(lián)仿人機(jī)械臂由3個自由度的肩關(guān)節(jié)、3個自由度的腕關(guān)節(jié)與1個自由度的肘關(guān)節(jié)組成,其尺寸如圖1所示。根據(jù)D-H方法,對機(jī)械臂建立D-H坐標(biāo)系模型,見表1。表中:αi為連桿扭轉(zhuǎn)角,ai為連桿長度,di為連桿偏移量,θi為關(guān)節(jié)角變量,其中i為連桿編號,i=1,2,…,7。
圖1 7軸機(jī)械臂連桿坐標(biāo)模型
表1 7軸機(jī)械臂的D-H參數(shù)
根據(jù)表1中的7軸機(jī)械臂的D-H參數(shù),利用式(1)計算出機(jī)械臂相鄰關(guān)節(jié)的變換矩陣i-1Ti。
(1)
式中:Cθi=cosθi,Sθi=sinθi,Cαi=cosαi,Sαi=sinαi。根據(jù)各關(guān)節(jié)齊次變換矩陣i-1Ti通過式(2)計算出機(jī)械臂的運動學(xué)正解。
0T7=0T11T22T33T44T55T66T7=
(2)
式中:0T7為關(guān)節(jié)1到7變換矩陣;nx,ny,nz為n軸方向余弦;ox,oy,oz為o軸方向余弦;ax,ay,az為a軸方向余弦;Px,Py,Pz為位置坐標(biāo)。
機(jī)械臂末端姿態(tài)采用歐拉角表示。利用式(2)將旋轉(zhuǎn)矩陣表示的姿態(tài)轉(zhuǎn)化為歐拉角表示的姿態(tài)矩陣。將機(jī)械臂的姿態(tài)矩陣按照Z-Y-Z軸旋轉(zhuǎn)順序進(jìn)行歐拉變換得到歐拉角α,β,γ,歐拉變換可以將12個變量的相關(guān)輸入轉(zhuǎn)化為6個變量的獨立輸入[11]。變換公式為:
α=atan2(ay,ax)
(3)
β=atan2(axcosα+aysinα,az)
(4)
γ=atan2(nycosα-nxsinα,oycosα-oxsinα)
(5)
P=(α,β,γ,Px,Py,Pz)
(6)
式中:P為位姿矢量。
PSO算法是一種模擬鳥群覓食機(jī)制的算法,通過搜索、更新當(dāng)前最優(yōu)位置與速度來找到全局最優(yōu)解。PSO算法的粒子具有記憶的特性,通過學(xué)習(xí)使下一代解能夠從上一代解中繼承信息,從而能在短時間內(nèi)找到最優(yōu)解。PSO算法具有運算簡便、收斂速度快等優(yōu)點,得到了廣泛應(yīng)用。
PSO算法首先初始化n個隨機(jī)粒子,每個粒子具有不同的位置Xi(i=1,2,…,n)與不同的適應(yīng)度值fitness(Xi)。在每次循環(huán)中,粒子都會更新個體極值pbest和全局極值gbest[12]。當(dāng)找到兩個最優(yōu)值時,粒子根據(jù)式(7)、(8)更新速度vi與位置Xi。
(7)
(8)
(9)
式中:vmin和vmax分別為粒子速度最小值和最大值;Xmin和Xmax分別為粒子所能到達(dá)位置的最小值和最大值。
在PSO優(yōu)化算法中,只有個體極值pbest與全局極值gbest將信息傳遞給其他的粒子,這使得算法在搜索更新時會跟隨當(dāng)前最優(yōu)的粒子,從而導(dǎo)致迭代陷入局部最優(yōu)值,出現(xiàn)早熟收斂或停滯現(xiàn)象。鑒于此,本文提出改進(jìn)的PSO算法對標(biāo)準(zhǔn)PSO算法的慣性權(quán)重與學(xué)習(xí)因子進(jìn)行了優(yōu)化,在提高算法精度的同時,避免了PSO算法的局部最優(yōu)問題,圖2為改進(jìn)的PSO算法流程。
圖2 改進(jìn)的PSO算法流程
2.2.1慣性權(quán)重的改進(jìn)
慣性權(quán)重ω決定粒子的搜索能力:較大的慣性權(quán)重可以使迭代跳出局部最優(yōu),有利于全局搜索;而較小的慣性權(quán)重則有利于對局部區(qū)域進(jìn)行搜索,有利于算法收斂[13]。標(biāo)準(zhǔn)PSO算法中慣性權(quán)重ω一般取1左右的值,本文采用一種非線性的慣性權(quán)重系數(shù),慣性權(quán)重ω隨著迭代次數(shù)的增加而減小,同時兼顧全局與局部搜索效率。
(10)
式中:favg為平均適應(yīng)度值;fmin為最小適應(yīng)度值;ωmax=0.9,ωmin=0.2。
2.2.2學(xué)習(xí)因子的改進(jìn)
學(xué)習(xí)因子c1反映的是粒子向自身歷史最佳位置逼近的趨勢;學(xué)習(xí)因子c2反映的是粒子向全局歷史最佳位置逼近的趨勢[14]。標(biāo)準(zhǔn)PSO算法中學(xué)習(xí)因子一般取2左右的固定值,本文采用一種隨慣性權(quán)重ω變化的自適應(yīng)學(xué)習(xí)因子,如式(11)所示。在搜索前期,c1取較大值,c2取較小值,以增強全局搜索能力;在搜索后期,c1取較小值,c2取較大值,以增強局部搜索能力。
(11)
(12)
式中:[θi(k)-θi(k-1)](k=1, 2, …)為機(jī)械臂關(guān)節(jié)i的關(guān)節(jié)角與自身前一時刻關(guān)節(jié)角的差值。本文先將7自由度機(jī)械臂運動學(xué)模型轉(zhuǎn)化為6輸入7輸出的映射模型,再利用式(13)中的外點法懲罰函數(shù)將機(jī)械臂的有約束問題轉(zhuǎn)化為無約束問題。
h(α,β,γ,Px,Py,Pz)=(α-α0)2+(β-β0)2+(γ-γ0)2+(Px-Px0)2+(Py-Py0)2+(Pz-Pz0)2
(13)
Fitness=minf(θ)+Mk×h(α,β,γ,Px,Py,Pz)
(14)
式中:f(θ)為目標(biāo)函數(shù);h(α,β,γ,Px,Py,Pz)為懲罰函數(shù);Mk(k=1,2,…)為隨迭代次數(shù)的增加而增加的懲罰因子;Fitness為機(jī)械臂PSO算法的適應(yīng)度函數(shù);α0,β0,γ0為初始角度。
RBF神經(jīng)網(wǎng)絡(luò)能夠逼近任意的非線性函數(shù),收斂速度快,具有良好的逼近精度與泛化能力。此外,RBF神經(jīng)網(wǎng)絡(luò)還解決了BP神經(jīng)網(wǎng)絡(luò)易陷入局部最小值的問題。本文將α,β,γ,Px,Py,Pz作為RBF神經(jīng)網(wǎng)絡(luò)的輸入變量,θi(i=1,2,…,7)作為RBF神經(jīng)網(wǎng)絡(luò)的輸出變量。
RBF網(wǎng)絡(luò)是三層前饋網(wǎng)絡(luò),由輸入層、隱藏層、輸出層組成[15]。網(wǎng)絡(luò)建立了從系統(tǒng)輸入X(x1,x2,…,xm)到系統(tǒng)輸出Y(y1,y2,…,yk)的映射關(guān)系,其中隱藏層的節(jié)點數(shù)為n。RBF網(wǎng)絡(luò)通常采用高斯函數(shù)作為傳遞函數(shù),利用式(15)建立從輸入層到隱藏層的非線性映射,再利用式(16)建立從隱藏層到輸出層的線性映射。如果神經(jīng)元的輸入離徑向基函數(shù)中心越遠(yuǎn),那么神經(jīng)元的激活程度就越低,因此RBF神經(jīng)網(wǎng)絡(luò)具有局部映射的特性。隨著誤差傳遞的不斷進(jìn)行,RBF網(wǎng)絡(luò)輸出響應(yīng)的誤差越來越小,直到滿足訓(xùn)練設(shè)置條件為止,該過程如圖3所示。
圖3 機(jī)械臂RBF神經(jīng)網(wǎng)絡(luò)模型
(15)
(16)
式中:Rj(x)為隱藏層第j個神經(jīng)元的傳遞函數(shù);x為網(wǎng)絡(luò)的輸入;cj與σj分別為徑向基函數(shù)的數(shù)據(jù)中心與寬度;Yk為RBF神經(jīng)網(wǎng)絡(luò)的輸出;Wjk為隱藏層第j個神經(jīng)元到輸出層第k個神經(jīng)元的連接權(quán)值。
為證明算法的有效性,在MATLAB 2016a的環(huán)境下建立了PSO-RBF網(wǎng)絡(luò)模型。
本文中標(biāo)準(zhǔn)PSO算法與改進(jìn)PSO算法的種群規(guī)模定為20,最大迭代次數(shù)為200。其中,標(biāo)準(zhǔn)PSO算法的慣性權(quán)重ω=0.9,學(xué)習(xí)因子c1=c2=1.5,改進(jìn)PSO算法的慣性權(quán)重與學(xué)習(xí)因子分別采用式(10)與式(11)計算。
首先選擇單個數(shù)據(jù)工作空間的位姿進(jìn)行驗算,笛卡爾空間初始點的位姿矩陣P0如下所示:
經(jīng)過PSO算法優(yōu)化點的位姿矩陣的各關(guān)節(jié)逆解θ0為:
θ0=[0.050 0 -0.358 3 -0.203 2 -1.363 9 0.314 6 -1.405 5 -0.289 4]
代入正運動學(xué)的機(jī)械臂位姿向量p0為:
p0=[-1.827 0 2.900 6 -1.927 8 -0.150 9 0.033 6 -0.310 1]
圖4 PSO算法與改進(jìn)PSO算法迭代曲線
隨機(jī)選取工作空間10組數(shù)據(jù),用標(biāo)準(zhǔn)PSO算法與改進(jìn)PSO算法求得逆解θi(i=1,2,…,7)后,代入回正運動學(xué)方程,其位姿向量pi(i=1,2,…,10)的均方差見表2,由表可見,改進(jìn)PSO算法的均方差0.003 6小于標(biāo)準(zhǔn)PSO算法的均方差0.012 9。
表2 標(biāo)準(zhǔn)PSO算法與改進(jìn)PSO算法均方差
取笛卡爾空間中直線上均勻分布的點P1(-0.348 5, 0.051 8,0.257 6)至點P100(-0.255 0,-0.101 2,0.272 6),經(jīng)改進(jìn)PSO算法優(yōu)化后的數(shù)據(jù)作為RBF網(wǎng)絡(luò)的樣本。從點P1到點P100中隨機(jī)選取10組數(shù)據(jù)樣本作為RBF網(wǎng)絡(luò)的測試集,其余90組數(shù)據(jù)樣本作為RBF網(wǎng)絡(luò)的訓(xùn)練集。在MATLAB中,RBF神經(jīng)網(wǎng)絡(luò)的參數(shù)err_goal設(shè)為0.01,徑向基函數(shù)的spread設(shè)為3,最大神經(jīng)元個數(shù)MN設(shè)為200。利用newrb函數(shù)建立RBF網(wǎng)絡(luò)的模型,并對90組數(shù)據(jù)樣本進(jìn)行訓(xùn)練,當(dāng)網(wǎng)絡(luò)達(dá)到設(shè)定的誤差值時,終止訓(xùn)練并對測試集進(jìn)行仿真。
利用PSO算法計算出7軸機(jī)械臂的運動學(xué)逆解,結(jié)果見表3。再利用RBF神經(jīng)網(wǎng)絡(luò)對訓(xùn)練集進(jìn)行訓(xùn)練,得出測試集結(jié)果。將PSO算法優(yōu)化的逆解代入機(jī)械臂正運動學(xué)方程,與RBF神經(jīng)網(wǎng)絡(luò)測試集輸出作對比(表4)。由此可見,RBF神經(jīng)網(wǎng)絡(luò)測試集輸出的三維坐標(biāo)ox,oy,oz的位置精度已能夠滿足生產(chǎn)需要,驗證了本研究的可行性。
表3 PSO算法求運動學(xué)逆解結(jié)果 rad
表4 RBF網(wǎng)絡(luò)訓(xùn)練末端位姿結(jié)果
本文利用基于最佳柔順性的懲罰函數(shù)法建立冗余機(jī)械臂的適應(yīng)度函數(shù),解決了冗余機(jī)械臂逆解的多解性問題,并得到了冗余機(jī)械臂各個位姿唯一的逆解。在此基礎(chǔ)上,利用PSO算法對其逆解進(jìn)行了優(yōu)化,通過對慣性權(quán)重與學(xué)習(xí)因子的改進(jìn),使得PSO算法具有更高的計算精度,并最終獲得了機(jī)械臂運動學(xué)的樣本數(shù)據(jù)。此外,本文還利用RBF神經(jīng)網(wǎng)絡(luò)對優(yōu)化的樣本數(shù)據(jù)進(jìn)行了訓(xùn)練,得到了穩(wěn)定狀態(tài)的神經(jīng)網(wǎng)絡(luò)。MATALB仿真結(jié)果表明本文提出的方法是有效的,該方法可以作為求冗余機(jī)械臂運動學(xué)逆解的有效方法。