劉世平 曹俊峰 孫 濤 胡江波 付 艷 張 帥 李世其
華中科技大學(xué)機械科學(xué)與工程學(xué)院,武漢,430074
目前常見的機械臂自由度數(shù)大多不超過6,在給定末端位姿的情況下,機械臂各關(guān)節(jié)的關(guān)節(jié)角有限制。機械臂各關(guān)節(jié)角處于奇異形位時,機械臂可能出現(xiàn)無解的情況。冗余機械臂自由度大于末端位姿參數(shù)個數(shù)時,關(guān)節(jié)空間中有無數(shù)組解與特定末端位姿對應(yīng)。與非冗余機械臂相比,冗余機械臂能實現(xiàn)避障[1],具有容錯[2]和關(guān)節(jié)力矩優(yōu)化[3]等功能,但冗余特性使其逆運動學(xué)解法過于繁雜,限制了冗余機械臂的應(yīng)用。機械臂運動學(xué)求解是機械臂位置控制的基礎(chǔ),主要用于機械臂末端執(zhí)行器的精確定位和軌跡規(guī)劃,因此研究如何快速獲取精確的機械臂逆運動學(xué)模型,實現(xiàn)逆運動學(xué)求解具有重要的現(xiàn)實意義。
七自由度冗余機械臂逆運動學(xué)求解方法主要有幾何解法[4]、代數(shù)解法[5-6]和迭代解法[7]。幾何解法通用性很差,具有一定的局限性且建模求解過程比較復(fù)雜,但具有計算較快、精度較高的優(yōu)勢[8]。代數(shù)解法在求解過程中涉及到的坐標(biāo)變換較多,運動學(xué)求解精度不高,有一定的誤差。迭代解法通過大量數(shù)據(jù)進(jìn)行反復(fù)迭代,計算量很大,不適用于實時在線任務(wù)。SHIMIZU等[9]提出了臂形角的概念,將冗余機械臂的前三個關(guān)節(jié)、第四個關(guān)節(jié)、后三個關(guān)節(jié)分別類比于人體的肩關(guān)節(jié)、肘關(guān)節(jié)和腕關(guān)節(jié),通過建立臂形角的約束來參數(shù)化求解冗余機械臂的逆運動學(xué)。OZGOREN等[10]采用解析法完成了冗余機械臂的逆運動學(xué)求解并進(jìn)行了相應(yīng)的優(yōu)化,但求解過程復(fù)雜,求解精度不高。SINGH等[11]在完成機械臂幾何構(gòu)型分析的基礎(chǔ)上,通過旋轉(zhuǎn)角表示并確定肘關(guān)節(jié)的位置,進(jìn)而完成其他關(guān)節(jié)角的運動學(xué)求解。LUO等[12]為解決具有關(guān)節(jié)偏置的機械手運動學(xué)求解問題,詳細(xì)分析了將不同關(guān)節(jié)角作為冗余參數(shù)的情況。為了克服傳統(tǒng)方法的不足,遺傳算法[13]、神經(jīng)網(wǎng)絡(luò)[14]等已用于機械臂逆運動問題的求解。KARLIK等[15]證明了雙隱層 BP 神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)在解決機械臂逆運動學(xué)問題時具有優(yōu)勢。董云等[16]結(jié)合解析法和遺傳算法尋找最優(yōu)關(guān)節(jié)角,以實現(xiàn)機器人避障及冗余機械手控制。
本文以某型七自由度冗余機械臂為平臺,通過建立BP神經(jīng)網(wǎng)絡(luò)模型來解決七自由度冗余機械臂逆運動學(xué)問題。該方法首先采集10 000組機械臂末端位姿數(shù)據(jù)及對應(yīng)的各個關(guān)節(jié)角度,然后通過訓(xùn)練數(shù)據(jù)擬合出機械臂逆運動學(xué)模型,根據(jù)末端位姿反解各關(guān)節(jié)角度。通過Baxter機械臂在實際運動中獲取的數(shù)據(jù)訓(xùn)練后,BP神經(jīng)網(wǎng)絡(luò)進(jìn)行逆運動學(xué)求解得到的結(jié)果是有效的單一解,關(guān)節(jié)角變化是連續(xù)光滑的,可以滿足運動要求。
針對Baxter機械臂的逆運動學(xué)求解問題,本文建立的BP神經(jīng)網(wǎng)絡(luò)模型中,輸入層有6個神經(jīng)元,輸入數(shù)據(jù)包括3個平移和3個旋轉(zhuǎn)的機械臂末端位姿信息;輸出層有7個神經(jīng)元,輸出數(shù)據(jù)為機械臂的關(guān)節(jié)角度。BP神經(jīng)網(wǎng)絡(luò)具體訓(xùn)練步驟如下:
(1)神經(jīng)網(wǎng)絡(luò)參數(shù)的初始化設(shè)置。神經(jīng)網(wǎng)絡(luò)的權(quán)值和偏置的初始值不能為零,否則會出現(xiàn)權(quán)值無法根據(jù)輸出誤差進(jìn)行有效學(xué)習(xí)的問題,因此需指定區(qū)間(-1,1),根據(jù)一定的概率分布函數(shù),將各個權(quán)值和偏置賦予相應(yīng)的隨機值,完成初始化設(shè)置。同時對收斂精度ε進(jìn)行設(shè)置,根據(jù)預(yù)期響應(yīng)時間,設(shè)置最大迭代次數(shù)N0,把學(xué)習(xí)速率α設(shè)置為0、1內(nèi)的小數(shù)。
(2)完成數(shù)據(jù)的正向傳播。在神經(jīng)網(wǎng)絡(luò)模型中輸入數(shù)據(jù),經(jīng)過隱藏層的多次非線性變換,在輸出層輸出結(jié)果。輸出層輸出數(shù)據(jù)為
(1)
(2)
(3)完成整體樣本代價函數(shù)的計算。根據(jù)訓(xùn)練樣本的N組輸入數(shù)據(jù)確定整體樣本代價函數(shù):
(3)
式中,λ為權(quán)重衰減參數(shù);hW,b(*)為激勵函數(shù);x(i)為第i個輸入數(shù)值;y(i)為第i個輸出數(shù)值;nl為神經(jīng)網(wǎng)絡(luò)模型的總層數(shù)。
函數(shù)計算值趨于穩(wěn)定后,若其大于收斂精度ε,則結(jié)束前向傳播,開始誤差反向傳播,完成進(jìn)一步的計算;反之則認(rèn)為模型訓(xùn)練結(jié)束,模型參數(shù)已準(zhǔn)確設(shè)置。
(4)完成誤差反向傳播,得到整體樣本代價函數(shù)的偏導(dǎo)數(shù),并調(diào)整權(quán)重大小。其過程如下:
(4)
(5)
按照步驟(1)設(shè)置神經(jīng)網(wǎng)絡(luò)模型基本參數(shù),依次經(jīng)過步驟(2) ~ (4)后,模型的權(quán)重與偏置都發(fā)生變化。重復(fù)循環(huán)步驟(2) ~ (4)訓(xùn)練模型,直到模型的輸出誤差小于預(yù)設(shè)的收斂精度或訓(xùn)練次數(shù)超過預(yù)設(shè)的最大次數(shù)。訓(xùn)練次數(shù)超過預(yù)設(shè)的最大次數(shù)時,若模型的輸出誤差仍不收斂,則重新構(gòu)建并訓(xùn)練新的神經(jīng)網(wǎng)絡(luò)模型,得到準(zhǔn)確的冗余機械臂逆運動學(xué)模型。
(θ1,θ2,…,θ7)T=T(x,y,z,θx,θy,θz)T
式中,T為7×6的矩陣,其他變量均為數(shù)值。
激勵函數(shù)、隱藏層神經(jīng)元數(shù)量Nn、神經(jīng)網(wǎng)絡(luò)層數(shù)NL、學(xué)習(xí)速率α都會對BP神經(jīng)網(wǎng)絡(luò)最終的模型擬合精度造成很大的影響,因此本文利用大量的實驗數(shù)據(jù)進(jìn)行模型的訓(xùn)練,確定合適的模型參數(shù)和結(jié)構(gòu),建立準(zhǔn)確、合理、適用的冗余機械臂逆運動學(xué)求解模型。
神經(jīng)網(wǎng)絡(luò)中,多個線性輸入與非線性輸出之間的映射關(guān)系是通過構(gòu)建激勵函數(shù)來實現(xiàn)的。本文引入能夠增加非線性因素的激勵函數(shù)來進(jìn)行模型的擬合。針對Baxter冗余機械臂的特點,將單極性sigmod函數(shù)、雙曲正切tanh函數(shù)和ReLu(rectified linear unit)函數(shù)進(jìn)行組合,通過分析9種不同神經(jīng)網(wǎng)絡(luò)模型的擬合效果來選擇適合的激勵函數(shù)。使用訓(xùn)練集數(shù)據(jù),訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型并得到其模型參數(shù),使用交叉驗證集內(nèi)的數(shù)據(jù)檢測其模型的輸出誤差,得到相應(yīng)的結(jié)果。
根據(jù)結(jié)果可知,將ReLu函數(shù)作為激勵函數(shù)時,輸出誤差能夠穩(wěn)定收斂并達(dá)到最小,說明模型參數(shù)在訓(xùn)練過程中不斷逼近其真實值,因此將ReLu函數(shù)作為神經(jīng)網(wǎng)絡(luò)模型中各個神經(jīng)層的激勵函數(shù)。
神經(jīng)元數(shù)量Nn與神經(jīng)網(wǎng)絡(luò)模型的訓(xùn)練精度及擬合效果呈現(xiàn)正相關(guān)的關(guān)系,為了提高神經(jīng)網(wǎng)絡(luò)模型的訓(xùn)練精度,可增加隱藏層的神經(jīng)元。然而,神經(jīng)元的增加會提高神經(jīng)網(wǎng)絡(luò)模型的訓(xùn)練難度,從而導(dǎo)致過擬合。為了選擇合理的隱藏層神經(jīng)元數(shù)量,本文設(shè)置不同的隱藏層神經(jīng)元數(shù)量,模型輸出誤差
不同隱藏層神經(jīng)元數(shù)量(Nn=10,12,14,16,18,20)模型的輸出誤差都可以穩(wěn)定收斂到最小,且輸出誤差不會隨隱藏層神經(jīng)元的增加而產(chǎn)生太大變化;神經(jīng)元過多將導(dǎo)致模型變得復(fù)雜,訓(xùn)練時間也相應(yīng)延長。16個神經(jīng)元模型的收斂最快,其原因在于增加神經(jīng)元將有效增強神經(jīng)網(wǎng)絡(luò)模型的擬合能力,提高模型收斂速度,因此本文選擇16個隱藏層神經(jīng)元的神經(jīng)網(wǎng)絡(luò)模型。
理論上,含有至少1個非線性隱藏層和1個線性輸出層的BP神經(jīng)網(wǎng)絡(luò)能夠逼近任何有理函數(shù)。增加BP神經(jīng)網(wǎng)絡(luò)模型中的隱藏層雖然可以提高擬合精度,但會導(dǎo)致網(wǎng)絡(luò)結(jié)構(gòu)復(fù)雜化和過擬合,進(jìn)而延長神經(jīng)網(wǎng)絡(luò)模型參數(shù)的訓(xùn)練周期,降低模型的泛化性。本文分別選擇不同層數(shù)(NL=3,4,5)的神經(jīng)網(wǎng)絡(luò)模型進(jìn)行實驗,并得到其輸出誤差。不同層數(shù)的神經(jīng)網(wǎng)絡(luò)模型的輸出誤差都能夠收斂到最小,且輸出誤差不會隨隱藏層的增加而減小,因此,增加神經(jīng)網(wǎng)絡(luò)模型的層數(shù)并不會明顯提高其精度,反而會將模型復(fù)雜化。本文最終采用3層神經(jīng)網(wǎng)絡(luò)模型來建立Baxter機械臂的冗余機械臂逆運動學(xué)求解模型。
神經(jīng)網(wǎng)絡(luò)模型的學(xué)習(xí)速率與神經(jīng)網(wǎng)絡(luò)權(quán)重變化量的大小成正相關(guān)的關(guān)系。較大的學(xué)習(xí)速率導(dǎo)致神經(jīng)網(wǎng)絡(luò)權(quán)重的變化量很大,使模型收斂不穩(wěn)定;較小的學(xué)習(xí)速率導(dǎo)致神經(jīng)網(wǎng)絡(luò)權(quán)重的變化量很小,使模型收斂時間較長,甚至難以在最大迭代次數(shù)之前收斂到最優(yōu)解。本文分別設(shè)置了不同學(xué)習(xí)速率(α=0.000 1,0.001,0.01,0.1)以求出模型的輸出誤差。學(xué)習(xí)速率大于0.001的模型輸出誤差波動,難以收斂;學(xué)習(xí)速率不大于0.001的模型能夠很好地穩(wěn)定收斂到最優(yōu)解,且收斂速度隨學(xué)習(xí)速率的增大而加快。綜合考慮系統(tǒng)的收斂速度和穩(wěn)定性,本文選擇學(xué)習(xí)速率為0.001的神經(jīng)網(wǎng)絡(luò)模型。
為驗證上述神經(jīng)網(wǎng)絡(luò)模型計算機械臂逆解的有效性與精確度,設(shè)計了軌跡跟蹤實驗來進(jìn)行數(shù)據(jù)分析。實驗任務(wù)要求如下:給定機械臂末端不同的運動軌跡,利用BP神經(jīng)網(wǎng)絡(luò)模型反解出各關(guān)節(jié)角度,控制機械臂按照各關(guān)節(jié)角運動,機械臂末端的實際運動軌跡與期望軌跡保持一致。設(shè)定的機械臂末端運動軌跡包括一個圓心坐標(biāo)為(0.63 m, 0.38 m,0.05 m)、半徑為0.1 m的圓,和一段起始點坐標(biāo)分別為(0.73 m, 0.38 m, 0.05 m)和(0.73 m, 0.58 m, 0.25 m)的直線。對圓和直線軌跡進(jìn)行插值,插值點總數(shù)為600,記錄每個插值點的位姿,將各個插值點的位姿作為BP神經(jīng)網(wǎng)絡(luò)模型的輸入數(shù)據(jù),通過該模型預(yù)測出對應(yīng)各關(guān)節(jié)角度。
將預(yù)測的各關(guān)節(jié)角度依次發(fā)送給機械臂控制器,使其控制機械臂各關(guān)節(jié)運動,運動軌跡如圖1所示,圖中圓點為機械臂實際運動軌跡,曲線為期望運動軌跡。由圖1可以看出,實際運動軌跡與期望運動軌跡幾乎重合。經(jīng)過計算,機械臂末端運動軌跡為圓時,擬合誤差(實際運動軌跡與期望運動軌跡的誤差)為9.8 mm;機械臂末端運動軌跡為直線時,擬合誤差為1.6 mm。在實際任務(wù)中,該誤差是可以接受的,能滿足我們的運動要求。這表明通過建立BP神經(jīng)網(wǎng)絡(luò)來擬合機械臂逆運動學(xué)模型的方法是可行的,并且求解精度較高,可以滿足實際需求。
(a) 圓軌跡
(b) 直線軌跡
本文針對Baxter七自由度機械臂,通過搭建BP神經(jīng)網(wǎng)絡(luò)模型來實現(xiàn)冗余機械臂逆運動學(xué)的求解,建立了冗余機械臂工作空間到關(guān)節(jié)空間的映射關(guān)系,選擇了適合的神經(jīng)網(wǎng)絡(luò)模型激勵函數(shù)、隱藏層神經(jīng)元數(shù)量、神經(jīng)網(wǎng)絡(luò)層數(shù)、學(xué)習(xí)速率。軌跡跟蹤實驗表明,利用BP神經(jīng)網(wǎng)絡(luò)來擬合機械臂逆運動學(xué)模型的方法是可行的。