,, ,
(湖南工業(yè)大學 機械工程學院,湖南 株洲 412007)
機器人逆運動學,是將機器人末端執(zhí)行器在笛卡爾坐標系中的位姿轉(zhuǎn)換成關節(jié)空間中各關節(jié)角變量的過程,它在機器人控制中有非常重要的地位,是機器人運動分析、離線編程、軌跡規(guī)劃等的基礎,是機器人學中十分重要的問題[1],特別是在機器人的軌跡規(guī)劃過程中,逆運動學求解的準確性會直接影響末端執(zhí)行器軌跡的平滑性[2]。因此,對機器人逆運動學求解,是國內(nèi)外很多研究者研究、分析的熱點問題。
機器人逆運動學模型是一個多輸入-多輸出的系統(tǒng),它通常是非線性方程組的求解。與線性方程組的求解不同,非線性方程組沒有通用的求解算法。傳統(tǒng)的求機器人逆向運動學多解的方法有解析法[3]、數(shù)值迭代法[4]、幾何法[5]等。解析法的計算量較大,在消元過程中很難得到正確的一元高次方程。幾何法和迭代法在逆運動學求解過程中,需要在特定的條件下才能實現(xiàn)。
隨著計算機技術發(fā)展的突飛猛進和機器人結(jié)構(gòu)越來越復雜,應用現(xiàn)代智能算法求逆運動學解方面的研究越來越廣泛。其中,神經(jīng)網(wǎng)絡因具有對任意連續(xù)函數(shù)的逼近能力和泛化能力,被不少學者應用在機器人逆運動學求解中。通常,使用神經(jīng)網(wǎng)絡求機器人逆運動學解采用以下方式:首先,關節(jié)空間Q通過正向運動學得到位姿T;然后將位姿T作為神經(jīng)網(wǎng)絡的輸入、Q作為輸出以訓練神經(jīng)網(wǎng)絡;最后,用訓練好的神經(jīng)網(wǎng)絡求目標位姿對應的逆運動學解[6-7]。關節(jié)空間由正向運動學得到的位姿是唯一的,但從位姿向關節(jié)空間作逆映射是存在一對多解的。因此,輸入和輸出之間若沒有建立唯一的映射關系,一個單獨的神經(jīng)網(wǎng)絡結(jié)構(gòu)將無法求得機器人整個工作空間中的逆運動學多解。
B.Daya等[8]提出了一種由6個子神經(jīng)網(wǎng)絡組成的神經(jīng)網(wǎng)絡體系結(jié)構(gòu),并利用該結(jié)構(gòu)很好地求出了平面2自由度機械手的兩組逆運動學解。A.V.Duka等[9]通過增加方位角作為神經(jīng)網(wǎng)絡輸入的特征參數(shù),在輸入與輸出之間建立了唯一映射關系,從而用訓練好的神經(jīng)網(wǎng)絡,對平面3R機械手工作空間中規(guī)劃好的軌跡點求得了一組逆運動學解。文獻[8]和文獻[9]的方法都很好地克服了神經(jīng)網(wǎng)絡在求多解時存在的不足,但是各自也存在著不足之處:文獻[8]需要的神經(jīng)網(wǎng)絡數(shù)目較多;文獻[9]對平面3R機械手的多解缺乏理論分析,從而在增加方位角作為特征參數(shù)的條件下,只求出了一組逆運動學解。事實上,在平面3R機械手中,當給定一個方位角后,一個位置點仍然有兩組逆運動學解。
本研究通過將連桿分離-重新結(jié)合的方式,對平面3R機械手的工作空間進行幾何分析,判斷其多解的規(guī)律,利用該規(guī)律將其關節(jié)空間劃分為兩個子空間,并分別用兩個BP神經(jīng)網(wǎng)絡進行訓練,同時輸入中增加方位角作為特征參數(shù),以消除每個空間中存在的無窮解帶來的錯誤映射關系。仿真結(jié)果表明,該方法不僅可以很好地劃分平面3R機械手的多解區(qū)域,同時用多模塊BP神經(jīng)網(wǎng)絡還可以獲得高精度的逆運動學多解。
圖1是平面3R機械手,其連桿的長度分別為OA=L1,AB=L2,BC=L3,關節(jié)角的取值范圍分別為θ1∈(-π,π),θ2∈(-π,π),θ3∈(-π,π),末端執(zhí)行器中心C點坐標為(px,py),OC的距離為L,。
圖1 平面3R機械手Fig.1 Planar 3R manipulator
假設L1=L2,L3 圖2 Part I和Part II的B 點軌跡Fig.2 Point B trajectory of Part I and II 現(xiàn)考慮圓平面與圓的位置關系:在平面二連桿工作空間內(nèi)部的點有如下兩組逆運動學解[8]: Q1和Q2映射得到的工作空間是兩個相等的同心圓平面。Q1、Q2分別與θ3的組合記為Zone1、Zone2,取Zone1進行分析。 由平面幾何知識,可得: Case 1當L=L1+L2+L3時,圓平面O與圓C外切,此時B點可以重新結(jié)合的位置在半徑為L1+L2的圓O上; Case 2當L=L1+L2-L3時,圓平面O與圓C內(nèi)切,此時B點可以在圓C上任意一點重新結(jié)合; Case 3當L1+L2-L3 圓平面O與圓C的3種位置關系如圖3所示。 圖3 圓平面O與圓C的位置關系Fig.3 Position relationship between circular plane O and circle C 圖3c中,圓弧對應的圓心角α可由下式求得: 式(1)(2)分別為圓O和圓C的方程,在圓C上點的橫坐標與縱坐標可以分別表示如下: 將式(3)代入式(1)中,得到 式(4)中:u=arctan 2(px,py), 令k=φ+u,則有 令由式(5)得到的φ1和φ2均在[0,2π]之間,且φ2>φ1,則有 在Zone1中,通過上述分析可以得知: 1)當L=L1+L2+L3時,關節(jié)角對應的點的逆運動學解為; 2)當0≤L≤L1+L2-L3時,關節(jié)角對應的點在圓C上有無窮組逆運動學解; 3)當L1+L2-L3 在1)、2)、3)中,滿足上述條件的關節(jié)角對應的點,均存在無窮組逆運動學解。當對末端執(zhí)行器的方位角進行規(guī)劃時,若給定方位角,則逆運動學解也將唯一確定,方位角公式[9]為 在1)中,因為θ2=θ3=0,故滿足式(7)的θ1唯一;在2)中,方位角的范圍為[-π,π],有無窮多種組合,可以任意設定方位角;在3)中,方位角雖然也有無窮多種組合,但是其取值范圍有限。 在圖4中,對3)中方位角的取值范圍進行分析。分別延長MC、NC,其延長線與過圓心C的水平虛線PQ之間的夾角分別為δ1、δ2,δ1、δ2便是 3)中方位角的臨界值,根據(jù)已經(jīng)求得的φ1和φ2,可以求出δ1和δ2: 方位角的取值范圍為 圖4 圓C中的方位角Fig.4 Azimuth in circle C 至此,在Zone1中全面分析了平面3R機械手的多解情況,并確定了圓平面O與圓C相交時方位角的取值范圍。 同理,在Zone2中也可以得出相同的結(jié)論。 采用標準Diffie-Hellman法[10]給圖1所示平面3R機械手建立運動學模型,并確定各參數(shù),所得結(jié)果見圖5和表1,其中L1=L2=L3=200 mm。為分析計算方便,將θ1的變化范圍設定為(0,π)。 圖5 機械手D-H模型Fig.5 D-H parameters of manipulator 表1 機械手D-H參數(shù)Table1 D-H parameters of manipulator C點的正向運動學方程可由下式確定: BP神經(jīng)網(wǎng)絡具有多層結(jié)構(gòu),分別是輸入層、一層或多層隱含層、輸出層。各層神經(jīng)元之間是全連接的,而層內(nèi)無連接。隱含層各神經(jīng)元節(jié)點采用Sigmoid[11]作為激勵函數(shù)。圖6是一個3層的BP神經(jīng)網(wǎng)絡,其中閾值未畫出。 圖6 3層BP神經(jīng)網(wǎng)絡結(jié)構(gòu)示意圖Fig.6 Sketch map of three-layer BP neural network 如圖6所示的3層BP神經(jīng)網(wǎng)絡中,輸入層有M個神經(jīng)元,輸入向量X=[x1,x2,…,xM]T;隱含層有I個神經(jīng)元;輸出層有J個神經(jīng)元,輸出向量Y=[y1,y2,…,yJ]T;ωmi是輸入層與隱含層之間的權值,ωij是隱含層與輸出層之間的權值,隱含層各神經(jīng)元的閾值為ai(i=1,2,…,I),輸出層各神經(jīng)元的閾值為bj(j=1,2,…,J)。 根據(jù)圖6,可以得到網(wǎng)絡的輸出: 式中f(*)為隱含層的激勵函數(shù)。 Matlab是一款功能強大的數(shù)學軟件,該軟件將數(shù)值分析、矩陣計算、可視化、動態(tài)系統(tǒng)建模仿真等功能集成在一個開發(fā)環(huán)境中,為科研和工作提供了強大支持[12]。 在Matlab中,可以通過如下步驟訓練BP神經(jīng)網(wǎng)絡[12]。 1)創(chuàng)建前向神經(jīng)網(wǎng)絡 創(chuàng)建前向神經(jīng)網(wǎng)絡命令如下: 其中,hiddenSizes表示隱含層的規(guī)模,列數(shù)表示隱含層數(shù),每列的數(shù)值表示各隱含層的神經(jīng)元個數(shù);trainFcn是訓練權值的算法,默認為“trainlm”,lm是levenberg-marquadt算法的縮寫。lm算法將梯度下降法與高斯-牛頓法相結(jié)合,既有高斯-牛頓法的局部收斂特性,又有梯度下降法的全局收斂特性[13],具有收斂速度快、誤差小的優(yōu)點。 2)設定參數(shù) 設定參數(shù)如下: net.trainParam.epochs,代表迭代最大次數(shù);net.trainParam.lr,代表學習率; net.trainParam.goal,代表目標誤差; net.trainParam.max_fail,代表訓練最大的失敗次數(shù),默認為6; net.divideParam.trainRatio,代表訓練樣本占總樣本的百分數(shù),默認為70%; net.divideParam.valRatio,代表校驗樣本占總樣本的百分數(shù),默認為15%; net.divideParam.testRatio,代表測試樣本占總樣本的百分數(shù),默認為15%。 3)訓練BP神經(jīng)網(wǎng)絡 訓練BP神經(jīng)網(wǎng)絡的公式為 式中:Ptrain為訓練樣本的輸入矩陣;Ttrain為訓練樣本的輸出矩陣;TR為記錄訓練的結(jié)果。 4)預測數(shù)據(jù) 根據(jù)下式預測網(wǎng)絡結(jié)果數(shù)據(jù): 式中:t為網(wǎng)絡預測結(jié)果;Ptest為需要預測的輸入。 根據(jù)前文結(jié)論將關節(jié)空間分為以下兩個子空間:本文采用以下方式得到訓練樣本,在Zonei(i=1,2)中,先將θj(j=1,2,3)平均分成M、I、J份,然后將θj進行組合,如圖7所示。 圖7 關節(jié)角組合方式Fig.7 Joint angle compound methods Zone1、Zone2中的關節(jié)角組合分別有M×I×J組,記為Q1、Q2,然后將Q1、Q2分別代入式(7)和式(10)中,即可以得到BP神經(jīng)網(wǎng)絡的訓練樣本輸入,Qi作為BP神經(jīng)網(wǎng)絡的訓練樣本輸出。 神經(jīng)網(wǎng)絡在預測前通常會對數(shù)據(jù)樣本進行歸一化處理,其目的是取消輸入輸出間的數(shù)量級差別,從而減小預測誤差。歸一化的方法有最大最小法和平均數(shù)方差法,本研究采用最大最小法: 式中:x表示歸一化后的數(shù);xk表示需歸一化的數(shù); xmax、xmin分別表示序列中的最大值、最小值。 用θPim(i=1,2,3;m=1,2,…,N)表示預測得到的關節(jié)角,θTim(i=1,2,3;m=1,2,…,N)表示實際的關節(jié)角,其中i是關節(jié)角序號,N是測試樣本序號。評價指標公式如下: 式中em為預測的關節(jié)角與實際關節(jié)角之間的誤差。 記用于Zonei(i=1,2)中樣本訓練的BP神經(jīng)網(wǎng)絡為neti,令M=12,I=12,J=24,分別得到 3 456組樣本,根據(jù)3.2節(jié)的步驟,在Matlab中訓練BP神經(jīng)網(wǎng)絡權值,參數(shù)設置如下: net1中,net.trainParam.epochs=400,hiddenSizes=[26 23],net.trainParam.goal=10-6; net2中,hiddenSizes=[21 18],net.trainParam.epochs= 425,net.trainParam.goal=10-6。 兩個網(wǎng)絡隱含層的激活函數(shù)設為tansig函數(shù),輸出層的激活函數(shù)設為線性函數(shù)purelin,其余均設為默認值。 圖8是net1和net2的訓練結(jié)果及測試結(jié)果,實線、虛線、中心線分別是訓練樣本的均方差、校驗樣本的均方差和測試樣本的均方差。 圖8 兩個網(wǎng)絡的訓練結(jié)果Fig.8 Training results of two networks 圖9和10是兩個網(wǎng)絡測試樣本中預測得到的關節(jié)角與實際關節(jié)角之間的誤差,由圖可以看到,兩個網(wǎng)絡的預測誤差均在-0.1~0.1 rad之間。 圖9 net1網(wǎng)絡預測各關節(jié)角誤差Fig.9 Prediction errors of network 1 圖10 net2網(wǎng)絡預測各關節(jié)角誤差Fig.10 Prediction errors of network 2 圖11是Zonei(i=1,2)對應的工作空間。 圖11 兩個子空間對應的工作空間Fig.11 Workspace corresponding to the two sub-spaces 為進一步驗證用該方法訓練好的兩個BP神經(jīng)網(wǎng)絡,可以求3R機械手的逆運動學多解,在兩個工作空間公共部分規(guī)劃一段圓形軌跡,其方程為 根據(jù)前文中的結(jié)論,在兩個工作空間的位置增加一個方位角,就可以在關節(jié)子空間中得到對應的唯一逆運動學解,給所取的43個點分別加上以下方位角: 式中方位角Θd表示末端執(zhí)行器和坐標原點的連線與X軸間的夾角,其滿足式(9)的邊界約束。 圖12是兩個網(wǎng)絡分別預測得到的棍軌跡圖,圖中3種不同線型的線段分別表示3根連桿在各組解時的位形,“*”是預測得到的點位置。從圖中可以看出,兩個網(wǎng)絡預測得到的兩段軌跡都很平滑,基本在原軌跡附近。 圖12 兩個網(wǎng)絡預測得到的軌跡Fig.12 Trajectories predicted by two networks 本文通過連桿分離-重新結(jié)合的方式進行幾何分析,將3R機械手劃分為兩個子空間,并將子空間中的逆運動學解問題轉(zhuǎn)化為幾何中圓與圓平面之間的位置關系:當圓平面與圓相離時,機械手無逆運動學解;當圓平面與圓外切時,機械手存在唯一逆運動學解;當圓平面與圓相交或內(nèi)切時,機械手存在無窮組逆運動學解。兩個子空間分別用一個含2層隱含層的BP神經(jīng)網(wǎng)絡進行訓練,并在每個BP神經(jīng)網(wǎng)絡中添加方位角作為樣本輸入的特征參數(shù),消除了各子空間中存在無窮組逆運動學解時的映射錯誤。最終用訓練好的兩個BP神經(jīng)網(wǎng)絡分別預測同一段規(guī)劃好的圓形軌跡,都得到了平滑的預測軌跡。另外,使用LM學習算法的BP神經(jīng)網(wǎng)絡具有收斂速度快、誤差小等優(yōu)點。2.2 正向運動學模型
3 BP神經(jīng)網(wǎng)絡及其Matlab實現(xiàn)
3.1 BP神經(jīng)網(wǎng)絡的結(jié)構(gòu)
3.2 Matlab神經(jīng)網(wǎng)絡工具箱
3.3 樣本選取
3.4 樣本歸一化
3.5 預測效果評定
4 仿真實例
4.1 神經(jīng)網(wǎng)絡訓練及其測試結(jié)果
4.2 運動軌跡
5 結(jié)語