肖 帆 李 光 游雨龍
湖南工業(yè)大學(xué)機械工程學(xué)院,株洲,412007
機器人逆運動學(xué)求解作為機器人離線編程、軌跡規(guī)劃、控制算法設(shè)計等其他課題研究的基礎(chǔ),一直是機器人學(xué)中的一個經(jīng)典問題,同樣也是研究熱點[1]。逆運動學(xué)求解的實質(zhì)是完成機器人工作空間到關(guān)節(jié)空間的映射,它們之間的映射關(guān)系是非線性且多耦合的,問題比較復(fù)雜。很多學(xué)者在該領(lǐng)域做了大量研究與探索,提出了許多理論與方法。傳統(tǒng)方法有解析法[2]、幾何法[3]和迭代法[4]等。在求機器人逆運動學(xué)解問題中,解析法計算較為復(fù)雜,但是在機器人滿足PEIPER[5]、DUFFY[6]分別提出的結(jié)構(gòu)特點時,可以得到全部解;幾何法針對機器人的某些特殊結(jié)構(gòu)進行簡化,再進行求解,一般無法單獨使用甚至根本無法使用[7];迭代法受到初始值選取的約束,只能求得一組逆運動學(xué)解。
雖然傳統(tǒng)方法中解析法和幾何法能求機器人逆運動學(xué)的多解,但是需要滿足特殊結(jié)構(gòu)。隨著機器人結(jié)構(gòu)復(fù)雜化和計算機發(fā)展的突飛猛進,現(xiàn)代智能算法[8-10]被應(yīng)用來求逆運動學(xué)解。
神經(jīng)網(wǎng)絡(luò)對連續(xù)函數(shù)具有非常好的擬合能力及泛化能力,尤其是后者,使其被廣泛應(yīng)用于機器人逆運動學(xué)求解中。通常,在使用神經(jīng)網(wǎng)絡(luò)求機器人的逆運動學(xué)解時,采用如下思路進行:通過正向運動學(xué),得出關(guān)節(jié)空間Q對應(yīng)的工作空間位姿T,從而得到學(xué)習(xí)樣本中輸入與輸出關(guān)系T→Q。在這種學(xué)習(xí)樣本獲取方法中,無法準確地建立一組位姿對應(yīng)多組逆解,而只能建立一組位姿對應(yīng)一組逆解的訓(xùn)練方式,這會導(dǎo)致在存在逆運動學(xué)多解的區(qū)域用訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)求解時得到的是一個折中的結(jié)果。
文獻[9]提出在關(guān)節(jié)子空間下,使用6個子神經(jīng)網(wǎng)絡(luò)組成的多層感知結(jié)構(gòu),解決了平面二連桿機器人逆運動學(xué)多解問題。文獻[10]使用三層BP神經(jīng)網(wǎng)絡(luò),通過增加方位角作為輸入?yún)?shù),消除了輸入-輸出間的映射錯誤關(guān)系。雖然文獻[9]和文獻[10]提出了應(yīng)用神經(jīng)網(wǎng)絡(luò)解決機器人逆運動學(xué)多解的方法,但是二者都是在工作空間為二維平面運動的機器人中實現(xiàn)的,都沒有解決三維工作空間中逆運動學(xué)多解的問題。末端執(zhí)行器在三維工作空間的逆運動學(xué)多解問題遠比二維平面的復(fù)雜。文獻[11]提出多神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)的方式,求得了高精度的空間3R機械手的逆運動學(xué)完備解。
本文通過對空間3R機械手進行幾何分析,確定了在關(guān)節(jié)空間中逆運動學(xué)多解的分布規(guī)律,根據(jù)該規(guī)律將關(guān)節(jié)空間劃分為4個子空間,每個子空間用3個BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練及求解,并在每個神經(jīng)網(wǎng)絡(luò)的輸入中,增加繞Z軸旋轉(zhuǎn)的矩陣元素作為特征參數(shù);并進行了仿真驗證。
圖1a所示是空間3R機械手,其中(p?x?,p?y?,p?z?)表示末端執(zhí)行器的空間位置,關(guān)節(jié)1的軸線為鉛垂方向且和關(guān)節(jié)2的軸線垂直,其交點與基座的距離為L?1;關(guān)節(jié)2和關(guān)節(jié)3的軸線水平且平行,距離為L?2;末端執(zhí)行器與關(guān)節(jié)3軸線的距離為L?3。根據(jù)標(biāo)準D-H坐標(biāo)[12]建立圖1b所示連桿坐標(biāo)系,相應(yīng)的連桿參數(shù)列于表1。其中,L?1=783 mm,L?2=702.5 mm,L?3=651 mm,α?1=π/2。根據(jù)表1所示連桿參數(shù)可求得其正向運動學(xué)方程為
(1)
(a)空間3R機械手
(b)D-H坐標(biāo)系圖1 空間3R機械手及其連桿坐標(biāo)系Fig.1 Space 3R manipulator and its linkagecoordinate system
表1 空間3R機械手連桿參數(shù)
(a)組合1
(b)組合2圖2 觀察視角Fig.2 Observation perspective
根據(jù)上述記法,將表1中的關(guān)節(jié)空間劃分為表2中的4個子空間。
表2 關(guān)節(jié)子空間
三連桿機械手的工作空間可以理解為二連桿形成的平面工作空間繞Z?軸旋轉(zhuǎn)形成的三維圖,因此,表2中的4個區(qū)域在Z?軸上的位置仍然有無窮多組解。參考文獻[9]對接近點的描述可知,以ε?(ε?為最小正實數(shù))為半徑、Z?軸為旋轉(zhuǎn)軸的鄰域內(nèi),在用神經(jīng)網(wǎng)絡(luò)訓(xùn)練時也會存在映射錯誤。
假設(shè)每個區(qū)域的θ?1都平分成n?-1份,則每個區(qū)域?qū)?yīng)的工作空間將由n?個平面組成,在第i?個平面中,末端執(zhí)行器的位置都相同地增加一個繞Z?軸旋轉(zhuǎn)θ?1i?的旋轉(zhuǎn)矩陣R:
θ?1i?=arctan2p?y?,p?x?
(2)
R=rotzθ?1i?
(3)
式(2)用于Zone1和Zone2中時,每個平面只需選擇一個滿足p?y?>0,p?x?≠0的點即可;式(2)用于Zone3和Zone4中時,同樣只需選擇一個滿足p?y?≤0,p?x?≠0的點即可。
BP神經(jīng)網(wǎng)絡(luò)具有多層結(jié)構(gòu),分別是輸入層、一層或多層隱含層、輸出層。各層神經(jīng)元之間是全連接的,層內(nèi)無連接。隱含層各神經(jīng)元節(jié)點采用Sigmoid函數(shù)[13]作為激勵函數(shù)。圖3所示是一個三層的BP神經(jīng)網(wǎng)絡(luò),其中閾值未畫出。
圖3 三層BP神經(jīng)網(wǎng)絡(luò)Fig.3 Three-layer BP neural network
圖3中,輸入層有M?個神經(jīng)元,輸入向量X=(x?1,x?2,…,x?M?)T;隱含層有I?個神經(jīng)元;輸出層有J?個神經(jīng)元,輸出向量Y=(y?1,y?2,…,y?J?)T;ω?mi?是輸入層與隱含層之間的權(quán)值,ω?ij?是隱含層與輸出層之間的權(quán)值,隱含層各神經(jīng)元閾值為a?i?(i?=1,2,…,I?),輸出層各神經(jīng)元閾值為b?j?(j?=1,2,…,J?)。
根據(jù)圖3可以得到網(wǎng)絡(luò)的輸出:
(4)
j?=1,2,…,J?
式中,f?(·)為隱含層的激勵函數(shù)。
在MATLAB中可通過以下步驟訓(xùn)練BP神經(jīng)網(wǎng)絡(luò)[14]。
(1)創(chuàng)建前向神經(jīng)網(wǎng)絡(luò):
net?=feedforwardnet?(hiddenSizes?,trainFcn?)
(5)
其中,hiddenSizes?表示隱含層的規(guī)模,列數(shù)表示隱含層數(shù),每列的數(shù)值表示各隱含層神經(jīng)元個數(shù);trainFcn?是訓(xùn)練權(quán)值的算法,默認為“trainlm”,即LM算法(Levenberg-Marquadt算法)。LM算法將梯度下降法與高斯-牛頓法相結(jié)合,既有高斯-牛頓法的局部收斂性,又具有梯度下降法的全局特性[15]。
(2)參數(shù)設(shè)定。net?.trainParam?.epochs?為迭代最大輪數(shù);net?.trainParam?.max_fail?為訓(xùn)練最大的失敗次數(shù),默認為6;net?.divideParam?.trainRatio?為訓(xùn)練樣本占總樣本百分比,默認75%;net?.divideParam?.valRatio?為校驗樣本占總樣本百分比,默認15%;net?.divideParam?.testRatio?為測試樣本占總樣本百分比,默認15%。net?.trainParam?.goal?為目標(biāo)誤差。
(3)訓(xùn)練BP神經(jīng)網(wǎng)絡(luò):
[net?,TR?]=train?(net?,Ptrain,Ttrain)
(6)
式中,Ptrain為訓(xùn)練樣本的輸入矩陣;Ttrain為訓(xùn)練樣本的輸出矩陣;TR?為記錄訓(xùn)練的結(jié)果。
(4)預(yù)測數(shù)據(jù):
Y=net?(Ttest)
(7)
式中,Y為網(wǎng)絡(luò)預(yù)測結(jié)果;Ttest為需要預(yù)測的輸入。
采用以下方式得到訓(xùn)練樣本,在Zonei?(i?=1,2,3,4)中,先將θ?j?(j?=1,2,3)平均分成M?θ?、I?θ?、H?θ?,然后將θ?j?進行組合,如圖4所示。
圖4 關(guān)節(jié)角的組合Fig.4 Combination of joint angle
Zonei?中的關(guān)節(jié)角組合均為M?θ?×I?θ?×H?θ?組,記為Qi?(i?=1,2,3,4)。
LM算法訓(xùn)練權(quán)值時,在每輪計算中均會存儲一個M?×P?×N?(M?為輸出神經(jīng)元個數(shù),P?為樣本個數(shù),N?為權(quán)值與閾值的總個數(shù))的雅可比矩陣,雅可比矩陣的大小直接影響網(wǎng)絡(luò)的訓(xùn)練速度。每個網(wǎng)絡(luò)只用一個關(guān)節(jié)角作為輸出與多個關(guān)節(jié)角作為輸出相比,可以大大地提高訓(xùn)練速度,減小各網(wǎng)絡(luò)的計算開支,加之LM算法具有收斂快、誤差小的特點,從而使得每個網(wǎng)絡(luò)可以在更短的訓(xùn)練時間內(nèi)收斂。
用θ?Pij?(i?=1,2,3;j?=1,2,…,N?)表示預(yù)測得到的關(guān)節(jié)角,θ?Tij?(i?=1,2,3;j?=1,2,…,N?)表示實際的關(guān)節(jié)角,(x?Tj?,y?Tj?,z?Tj?)表示實際位置,(x?Pj?,y?Pj?,z?Pj?)表示預(yù)測位置,其中i?是關(guān)節(jié)角序號,N?是測試樣本數(shù)量。評價指標(biāo)公式如下:
e?j?=θ?Tij?-θ?Pij?
(8)
(9)
式中,e?j?為預(yù)測的關(guān)節(jié)角與實際關(guān)節(jié)角間的誤差;E?j?為實際笛卡兒坐標(biāo)與預(yù)測笛卡兒坐標(biāo)之間的絕對誤差。
由于在整個工作空間中,部分區(qū)域?qū)⒉淮嬖谒慕M逆運動學(xué)解,在進行預(yù)測前,需要確定如何選用訓(xùn)練好的BP神經(jīng)網(wǎng)絡(luò)。本文使用投影識別方法確定輸入點所在的工作子空間。
(1)工作子空間輪廓的投影方法。在OXY?平面中,邊界條件為θ?1的取值范圍;在OXZ?平面中,投影輪廓根據(jù)表1中各關(guān)節(jié)子空間取值范圍代入式(1)得到,其中Zone1和Zone2的θ?1都取0°,Zone3和Zone4的θ?1都取π(或-π)。
(3)識別點的判據(jù)。若θ?在Zonei?的θ?1范圍內(nèi),且在OXZ?的投影坐標(biāo)也屬于Zonei?的輪廓范圍,則輸入點屬于Zonei?,其中有一條不符合則不屬于Zonei?。
對每個工作子空間都建立一個區(qū)域識別器Recognition Unit,簡寫為RU?i?(i?=1,2,3,4),RU?i?與net?i?串聯(lián)且每個net?i?中有3個子神經(jīng)網(wǎng)絡(luò),分別為net?ij?(i?=1,2,3,4;j?=1,2,3)。當(dāng)位置輸入時,先通過每個識別器進行識別,符合其條件的,添加旋轉(zhuǎn)4矩陣,再輸入到與之對應(yīng)的BP神經(jīng)網(wǎng)絡(luò)中求逆運動學(xué)解。
Zone1和Zone2中,p?y?>0的部分仍然用式(2)求θ?1i?,p?y?≤0的部分用式(10)求θ?1i?;Zone3和Zone4中,p?y?≤0的部分仍然用式(2)求θ?1i?,p?y?>0的部分用式(11)求θ?1i?。位于Z?軸上的點,以實際需要給予一個θ?1i?:
θ?1i?=π+arctan2p?y?,p?x?
(10)
或
θ?1i?=arctan2p?y?,p?x?-π
(11)
圖5為逆運動學(xué)求解流程圖,圖中的net?i?均表示已訓(xùn)練好的BP神經(jīng)網(wǎng)絡(luò)。net?i?若是有輸出,表示該點在相應(yīng)的關(guān)節(jié)子空間有逆運動學(xué)解,net?i?沒有輸出,則表示該點在相應(yīng)的關(guān)節(jié)子空間中沒有對應(yīng)的逆運動學(xué)解。輸出Qi?的個數(shù),表示存在逆向運動學(xué)解的組數(shù)。
圖5 逆運動學(xué)求解流程Fig.5 Inverse kinematics solution flow
取2.3節(jié)的M?θ?=18,I?θ?=16,H?θ?=14,Zonei?均得到4 032組樣本,使用MATLAB神經(jīng)網(wǎng)絡(luò)工具箱創(chuàng)建BP神經(jīng)網(wǎng)絡(luò),篇幅所限,僅列出Zone1中net?1j?(1,2,3)的訓(xùn)練和求解結(jié)果進行分析。
每個神經(jīng)網(wǎng)絡(luò)的參數(shù)如下:net?11中,hiddenSizes?=[8,8,8];net?.trainParam?.epochs?=6 000;net?12中,hiddenSizes?=[13,12,10],net?.trainParam?.epochs?=6 000;net?13中,hiddenSizes?=[13,12,11],net?.trainParam?.epochs?=6 000。
每個BP神經(jīng)網(wǎng)絡(luò)中的樣本均分為訓(xùn)練樣本、校驗樣本、測試樣本,各樣本所占比例為2.2節(jié)中的默認值,net?.trainParam?.goal?均設(shè)為10-10,其余參數(shù)均設(shè)為默認值。
圖6~圖8所示分別為Zone1中BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程、測試樣本中各關(guān)節(jié)角預(yù)測誤差、測試樣本中預(yù)測位置與實際位置間的絕對誤差。
(a)net11訓(xùn)練及預(yù)測均方差
(b)net12訓(xùn)練及預(yù)測均方差
(c)net13訓(xùn)練及預(yù)測均方差圖6 各BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程Fig.6 Training process of each BP neural network
在每個區(qū)域中雖然使用了3個BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練,但是各區(qū)域內(nèi)網(wǎng)絡(luò)依次訓(xùn)練的時間之和均在30 min內(nèi),與文獻[11]相比,網(wǎng)絡(luò)訓(xùn)練的輪數(shù)或時間均大大減少。文獻[11]中關(guān)節(jié)角預(yù)測誤差分別為±0.06°,±0.15°,±0.05°,而本文的關(guān)節(jié)角誤差分別為±0.002°,±0.05°,±0.02°,位置誤差在0.04 mm內(nèi)。通過對比,顯然本文所用方法具有更快的收斂速度和更高的預(yù)測精度。
在工作空間中選3個點(表3)按圖5的流程求逆運動學(xué)解,最終結(jié)果顯示,P1有四組逆運動學(xué)解,P2在Zone1和Zone4中有逆運動學(xué)解,P3沒有逆運動學(xué)解,說明P3不在工作空間內(nèi)。表4為P1、P2分別用訓(xùn)練好的BP神經(jīng)網(wǎng)絡(luò)求得的逆運動學(xué)解和預(yù)測位置。
(a)關(guān)節(jié)1
(b)關(guān)節(jié)2
(c)關(guān)節(jié)3圖7 各關(guān)節(jié)角預(yù)測誤差Fig.7 Error of each joint angle prediction
圖8 位置絕對誤差Fig.8 Absolute error of position
Pipx(mm)py(mm)pz(mm)P13002001 700P2-834722600P3-100-100100
(1)本文提出了一種基于幾何分析的多模塊神經(jīng)網(wǎng)絡(luò)求解空間3R機械手逆運動學(xué)多解的方法。
(2)進行了幾何分析,將關(guān)節(jié)空間劃分為4個只有唯一逆運動學(xué)解的子空間,對各子空間用3個BP神經(jīng)網(wǎng)絡(luò)進行訓(xùn)練和求解。仿真試驗結(jié)果表明,該方法具有訓(xùn)練時間短、預(yù)測精度高的優(yōu)點。
(3)對于已訓(xùn)練好的BP神經(jīng)網(wǎng)絡(luò),可以通過輸入點區(qū)域識別的方法進行選擇。