王戰(zhàn)中,王文龍,靳超松,孫少華,石朋龍
(石家莊鐵道大學(xué),石家莊 050043)
機(jī)器人誤差的主要來源是機(jī)器人的幾何尺寸參數(shù)誤差,其他因素比如齒輪間隙、熱變形、負(fù)載變形等也會(huì)造成機(jī)器人的末端位姿誤差。由于幾何參數(shù)誤差引起的末端位姿誤差占機(jī)器人位姿總誤差的70%~90%,而且為了降低誤差模型的復(fù)雜性,這種只考慮機(jī)器人幾何參數(shù)誤差的簡(jiǎn)化模型是切實(shí)可行的[1]。幾何參數(shù)標(biāo)定法在大多數(shù)情況下可以達(dá)到較高的精度,但是這種方法沒有考慮由于非幾何參數(shù)誤差所引起的位姿誤差?;谏窠?jīng)網(wǎng)絡(luò)的機(jī)器人逆運(yùn)動(dòng)學(xué)標(biāo)定方法[2],就是通過一定的算法得到各關(guān)節(jié)角所對(duì)應(yīng)的誤差值,通過對(duì)關(guān)節(jié)角補(bǔ)償來驅(qū)動(dòng)機(jī)器人,從而使機(jī)器人末端位置誤差減小。這種方法不僅考了幾何誤差因素,而且還考慮了非幾何等多種誤差因素,把所有因素引起的位姿誤差全部歸結(jié)為關(guān)節(jié)角誤差,無需建立復(fù)雜的誤差模型,通過修正關(guān)節(jié)角來提高標(biāo)定的精度。
神經(jīng)網(wǎng)絡(luò)是由簡(jiǎn)單處理單元構(gòu)成的具有大規(guī)模并行式分布結(jié)構(gòu)的處理器,擁有極強(qiáng)的學(xué)習(xí)能力和泛化能力,具有存儲(chǔ)經(jīng)驗(yàn)并使之可用的優(yōu)點(diǎn)。人工神經(jīng)網(wǎng)絡(luò)以其精確地逼近能力、高度非線性在系統(tǒng)優(yōu)化、智能控制、信息處理和模式識(shí)別等領(lǐng)域得到了廣泛應(yīng)用,在機(jī)器人領(lǐng)域可用于機(jī)械手的路徑規(guī)劃、障礙回避、運(yùn)動(dòng)學(xué)模型及動(dòng)力學(xué)模型的自動(dòng)辨識(shí)等一系列問題[3]。
BP網(wǎng)絡(luò)屬于前饋網(wǎng)絡(luò),由輸入層、隱含層以及輸出層組成,是神經(jīng)網(wǎng)絡(luò)中比較常用的一種結(jié)構(gòu),學(xué)習(xí)過程包括輸入信號(hào)的前向傳遞與誤差的反向傳遞。網(wǎng)絡(luò)的輸入信號(hào)由輸入層通過隱含層到輸出層依次處理,如果輸出層未能達(dá)到期望輸出,則誤差反向傳遞,通過不斷調(diào)整網(wǎng)絡(luò)的連接權(quán)值和閾值來減小預(yù)測(cè)輸出誤差直至期望輸出,這樣反復(fù)循環(huán),從而使預(yù)測(cè)輸出逐步逼近期望輸出。
基于生物進(jìn)化論以及自然界遺傳機(jī)制法則,1962年美國密歇根大學(xué)Holland教授提出了一種并行式隨即搜索函數(shù)最優(yōu)解的方法,即所謂的遺傳算法[4](Genetic Algorithms)。Holland把參數(shù)優(yōu)化形成的編碼串聯(lián)群體引入到自然界中“優(yōu)勝劣汰,適者生存”的進(jìn)化原理中,結(jié)合所選擇的適應(yīng)度函數(shù),通過遺傳算法中的選擇、交叉、變異對(duì)個(gè)體進(jìn)行篩選,保留適應(yīng)度值好的個(gè)體,淘汰適應(yīng)度值差的個(gè)體,這樣反復(fù)循環(huán),不斷逼近最優(yōu)解,所得到的新群體不僅優(yōu)于上一代,而且還繼承了上一代的信息。
遺傳算法優(yōu)化神經(jīng)網(wǎng)絡(luò)主要包括三部分:BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的確定,利用遺傳算法優(yōu)化神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)以及BP神經(jīng)網(wǎng)絡(luò)的預(yù)測(cè)。其中,BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的確定主要是確定神經(jīng)網(wǎng)絡(luò)的輸入輸出個(gè)數(shù),以此來確定遺傳算法中個(gè)體所需的長(zhǎng)度;利用遺傳算法優(yōu)化神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)主要是利用遺傳算法的選擇、交叉、變異等操作優(yōu)化神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu),確定最適合神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的權(quán)值和閾值,計(jì)算個(gè)體適應(yīng)度值并找出對(duì)應(yīng)的最優(yōu)個(gè)體;BP神經(jīng)網(wǎng)絡(luò)的預(yù)測(cè)主要是利用遺傳算法獲得的最優(yōu)個(gè)體對(duì)網(wǎng)絡(luò)結(jié)構(gòu)參數(shù)進(jìn)行賦值,網(wǎng)絡(luò)經(jīng)訓(xùn)練后預(yù)測(cè)函數(shù)輸出[5]。遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)算法流程如圖1所示。
圖1 遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)算法流程
在實(shí)驗(yàn)中,由于有6個(gè)輸入(6個(gè)關(guān)節(jié)角)、6個(gè)輸出(對(duì)應(yīng)關(guān)節(jié)角誤差),根據(jù)試湊法確定最佳隱含層節(jié)點(diǎn)數(shù),于是BP神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)可以設(shè)置為6-12-6,即輸入層有6個(gè)節(jié)點(diǎn),隱含層有12個(gè)節(jié)點(diǎn),輸出層有6個(gè)節(jié)點(diǎn),共6×12+12×6=144個(gè)權(quán)值,12+6=18個(gè)閾值,即遺傳算法個(gè)體編碼長(zhǎng)度為144+18=162。
遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的主要步驟包括:
1)種群初始化
種群中個(gè)體的編碼方式一般應(yīng)用實(shí)數(shù)編碼,每一個(gè)個(gè)體都由輸入層與隱含層連接權(quán)值、隱含層閾值、隱含層與輸出層連接權(quán)值以及輸出層閾值4個(gè)部分組成,并且每個(gè)個(gè)體都可以表示成一組實(shí)數(shù)串,其中包含了網(wǎng)絡(luò)結(jié)構(gòu)所有的權(quán)值和閾值,所以當(dāng)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)已知時(shí),根據(jù)權(quán)值和閾值就可以確定神經(jīng)網(wǎng)絡(luò)。
2)適應(yīng)度函數(shù)
BP網(wǎng)絡(luò)的初始權(quán)值和閾值可以通過種群中的個(gè)體獲得,經(jīng)過訓(xùn)練后的神經(jīng)網(wǎng)絡(luò)可以預(yù)測(cè)函數(shù)的輸出,個(gè)體適應(yīng)度值可以通過預(yù)測(cè)輸出與函數(shù)期望輸出的絕對(duì)值和F來表示,其公式可寫作:
式中,n表示網(wǎng)絡(luò)輸出的節(jié)點(diǎn)總數(shù);k表示個(gè)體適應(yīng)度值的系數(shù);第i個(gè)節(jié)點(diǎn)的期望輸出為yi;第i個(gè)節(jié)點(diǎn)的預(yù)測(cè)輸出為oi。
3)選擇操作
遺傳算法中的選擇操作往往包括多種方法,比較常用的為輪盤賭法和錦標(biāo)賽法,考慮到個(gè)體適應(yīng)度的比例選擇問題,這里采用輪盤賭法,則每個(gè)個(gè)體i的選擇概率pi可以表示為:
式中,k表示概率系數(shù);N表示種群個(gè)體數(shù)目;個(gè)體i的適應(yīng)度值為Fi,因?yàn)檫m應(yīng)度值越小越好,所以在個(gè)體選擇前,需要對(duì)適應(yīng)度值求倒數(shù)。
4)交叉操作
交叉又被稱為基因重組,它是按一定的交叉概率Pc(一般選Pc=0.65~0.85)從群體中隨機(jī)配對(duì),進(jìn)行基因重組,信息交換,由父代產(chǎn)生新的子代。
交叉操作的編碼方式取決于種群中個(gè)體的編碼方式,由上述可知交叉操作應(yīng)該采用實(shí)數(shù)編碼法,所以在個(gè)體的j位,第k個(gè)染色體ak和第l個(gè)染色體al的交叉操作公式為:
式中,b是[0,1]間的隨機(jī)數(shù)。
5)變異操作
變異是按一定的變異概率Pm(一般選Pm=0.005~0.01)從群體中選擇個(gè)體,對(duì)選中的個(gè)體進(jìn)行變異操作,模擬自然界中的基因突變,由父代產(chǎn)生全新的子代。
選取第i個(gè)個(gè)體的第j個(gè)基因aij進(jìn)行變異,變異操作方法如下:
若遺傳算法的代數(shù)滿足收斂條件或達(dá)到所設(shè)定值時(shí)停止,否則轉(zhuǎn)到步驟3)。
結(jié)合BP神經(jīng)網(wǎng)絡(luò)理論和遺傳算法,應(yīng)用MATLAB軟件編寫基于遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)的函數(shù)程序。其中,遺傳算法各參數(shù)設(shè)置為:種群規(guī)模為100,交叉概率為0.65,變異概率為0.01。
以6自由度串聯(lián)機(jī)器人為例,建立其連桿坐標(biāo)系,如圖2所示。由于本文采用仿真的方式來驗(yàn)證機(jī)器人標(biāo)定的誤差模型,所以要先計(jì)算機(jī)器人的末端位姿誤差[6]。連桿的D-H參數(shù)及給定的初始條件如表1所示,將各個(gè)連桿的變換矩陣相乘,可得到末端執(zhí)行器的位姿矩陣:
圖2 機(jī)器人各連桿坐標(biāo)系
采用RPY角表示機(jī)器人的末端姿態(tài),根據(jù)式(1)可以求得機(jī)器人末端執(zhí)行器的姿態(tài)表示為:
位置表示為:
若用上角標(biāo)字母N表示理論值,字母R表示實(shí)際值。則位置總誤差可以表示為:
姿態(tài)總誤差:
機(jī)器人理論關(guān)節(jié)角QN,經(jīng)正運(yùn)動(dòng)學(xué)(理論D-H參數(shù))計(jì)算得出理論末端位姿TN,理論末端位姿經(jīng)逆運(yùn)動(dòng)學(xué)(實(shí)際D-H參數(shù))求解得實(shí)際關(guān)節(jié)角QR,于是可得關(guān)節(jié)角誤差e=QR-QN。
以理論關(guān)節(jié)角作為神經(jīng)網(wǎng)絡(luò)的輸入,關(guān)節(jié)角誤差值作為神經(jīng)網(wǎng)絡(luò)的輸出訓(xùn)練神經(jīng)網(wǎng)絡(luò),整個(gè)補(bǔ)償過程如圖3所示。
圖3 關(guān)節(jié)角補(bǔ)償過程
根據(jù)機(jī)器人各個(gè)關(guān)節(jié)角的變化范圍及其實(shí)際工作的需要,?。?/p>
表1 預(yù)給定機(jī)器人連桿參數(shù)名義值與誤差值
根據(jù)各個(gè)關(guān)節(jié)角的取值,可以生成3×3×3×9×9×9=19683組關(guān)節(jié)角度組合,取其中前19000組數(shù)據(jù)用于神經(jīng)網(wǎng)絡(luò)的訓(xùn)練,后683組數(shù)據(jù)用于檢驗(yàn)。
將后683組輸入數(shù)據(jù)代入已訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)系統(tǒng),由式(2)、式(3)得位置及姿態(tài)總誤差如圖4所示。
圖4 位姿總誤差(檢驗(yàn)數(shù)據(jù))
由于輸入數(shù)據(jù)是按一定規(guī)律生成的,可以看出未標(biāo)定前的683組輸入所產(chǎn)生的誤差呈現(xiàn)一定的規(guī)律性,為了驗(yàn)證輸入數(shù)據(jù)的一般性,隨機(jī)生成200組數(shù)據(jù),代入已訓(xùn)練完成的神經(jīng)網(wǎng)絡(luò)系統(tǒng)進(jìn)行仿真計(jì)算,位置及姿態(tài)總誤差如圖5所示。
圖5 位姿總誤差(隨機(jī)數(shù)據(jù))
通過分析圖4、圖5中的數(shù)據(jù)得表2、表3,可以看出經(jīng)BP神經(jīng)網(wǎng)絡(luò)標(biāo)定后,檢驗(yàn)數(shù)據(jù)與未標(biāo)定前相比,平均位置誤差降低了82.09%,平均姿態(tài)誤差降低了71.19%;經(jīng)GA-BP標(biāo)定后,平均位置誤差降低了92.72%,平均姿態(tài)誤差降低了86.44%。
表2 檢驗(yàn)數(shù)據(jù)分析
表3 隨機(jī)數(shù)據(jù)分析
隨機(jī)數(shù)據(jù)與未標(biāo)定前相比,平均位置誤差降低了87.40%,平均姿態(tài)誤差降低了74.41%;經(jīng)GA-BP標(biāo)定后,平均位置誤差降低了93.03%,平均姿態(tài)誤差降低了79.06%。
針對(duì)機(jī)器人的位姿誤差,本文提出把所有因素引起的誤差都?xì)w結(jié)為關(guān)節(jié)角誤差,通過對(duì)關(guān)節(jié)角的補(bǔ)償來減小末端位姿誤差的方法,經(jīng)過實(shí)驗(yàn)仿真驗(yàn)證表明可以提高標(biāo)定精度。由BP神經(jīng)網(wǎng)絡(luò)系統(tǒng)可以預(yù)測(cè)任意時(shí)刻關(guān)節(jié)角所對(duì)應(yīng)的誤差值,以補(bǔ)償后的關(guān)節(jié)角驅(qū)動(dòng)機(jī)器人?;谶z傳算法的BP神經(jīng)網(wǎng)絡(luò),通過遺傳算法優(yōu)化神經(jīng)網(wǎng)絡(luò)的連接系數(shù),使得標(biāo)定精度有了進(jìn)一步提高。
[1] 王東署,遲健男.機(jī)器人運(yùn)動(dòng)學(xué)標(biāo)定綜述[J].計(jì)算機(jī)應(yīng)用研究, 2007, 9(24),8-11.
[2] 彭疆,周國榮.基于神經(jīng)網(wǎng)絡(luò)的機(jī)器人逆運(yùn)動(dòng)學(xué)算法[J].企業(yè)技術(shù)開發(fā),2005,3(24),30-32.
[3] 張德豐.MATLAB神經(jīng)網(wǎng)絡(luò)仿真與應(yīng)用[M].北京:電子工業(yè)出版社,2009.
[4] 史峰,王小川,郁磊,李洋.MATLAB神經(jīng)網(wǎng)絡(luò)30個(gè)案例分析[M]. 北京:北京航空航天大學(xué)出版社,2010.
[5] Dali Wang,Ying Bai and Jiying Zhao. Robot manipulator calibration using neural network and a camera-based measurement system. Transactions of the Institute of Measurement and Control, 2012,105-121.
[6] 周煒,廖文和,田威,萬世明,劉勇.基于粒子群優(yōu)化神經(jīng)網(wǎng)絡(luò)的機(jī)器人精度補(bǔ)償方法研究[J].中國機(jī)械工程,2013(24),174-179.