季曉明,文懷海
(1.江蘇安全技術(shù)職業(yè)學(xué)院電氣工程系,江蘇 徐州 221011;2.大連理工大學(xué)機械工程學(xué)院,遼寧 大連 116024)
工業(yè)機器人是智能制造領(lǐng)域的重要構(gòu)成單元,被廣泛應(yīng)用于3C行業(yè)、汽車制造、食品包裝及航空航天等領(lǐng)域,在國民經(jīng)濟與社會發(fā)展中起著重要作用。在機器人技術(shù)中,冗余機械臂無碰運動規(guī)劃問題一直是國內(nèi)外的研究熱點[1-2]。該問題研究的是在避免碰觸到周圍環(huán)節(jié)障礙物的前提下,尋找從初始位形到目標(biāo)位形的機械臂運動,其中避碰是核心。
機械臂的避碰研究一般分為全局避碰法與局部避碰法兩種[3]。前者需預(yù)先獲得機械臂周圍環(huán)境信息,再對機械臂進行離線規(guī)劃,常見的方法有A*搜索[4]、馬爾科夫決策法[5]、隨機樹形搜索法[6]等。這些方法雖能有效解決機械臂的避碰運動規(guī)劃,但也會帶來諸如關(guān)節(jié)位姿無法約束、算法極易陷入局部最優(yōu)值、實時性較差等問題,故不易得到推廣。局部避碰法中含有碰撞檢測環(huán)節(jié),可根據(jù)機械臂運動狀態(tài)與障礙物信息實時作出避碰決策,這也是目前最受學(xué)者青睞的方法。例如,曹博等采用改進人工勢場法分別在任務(wù)空間和關(guān)節(jié)空間內(nèi)建立勢場引導(dǎo)7自由度機械臂的無碰運動,該算法的可行性在仿真和試驗下得到了驗證[7]。Shen H Y等采用主從任務(wù)轉(zhuǎn)化法實現(xiàn)了避碰運動與機械臂末端執(zhí)行器運動的主從優(yōu)先級轉(zhuǎn)化,降低了計算量和減少了運動奇異性出現(xiàn)的概率[8]。Chen Y J等用橢球模型近似描述障礙物與機械臂連桿,提出了基于虛擬力的避碰運動規(guī)劃方法[9]。然而,上述方法大都將障礙物簡化成一個質(zhì)點或球形,忽略了機械臂連桿與障礙物原有的三維幾何信息,這樣會導(dǎo)致關(guān)節(jié)速度激變、末端執(zhí)行器運動精度變差。
本文提出了一種基于深度學(xué)習(xí)的冗余機械臂避碰運動規(guī)劃方法,該方法的核心算法是基于天牛須搜索機制的循環(huán)神經(jīng)網(wǎng)絡(luò)算法(Beetle Antennae Olfactory Recurrent Neural Network,簡稱BAORNN),這屬于位置級而非速度級的運動規(guī)劃,即規(guī)劃過程中不要求末端執(zhí)行器的初始位置處于參考軌跡上,可避免雅可比矩陣的計算、提高計算效率。另外,本算法中碰撞檢測策略選擇的是Gilbert Johnson Keerthi (簡稱GJK)算法,它能有效描述兩個多面體之間的距離[10]。最后,通過仿真算例對本文所提算法的可行性和有效性進行了驗證。
考慮冗余機械臂跟蹤一條光滑曲線,其實質(zhì)是將關(guān)節(jié)空間的運動軌跡投影到任務(wù)空間末端執(zhí)行器的運動軌跡中,即可通過正向運動學(xué)來實現(xiàn)上述功能[11]:
x(t)=f(θ(t))
(1)
式中,t為時間,x(t)∈Rn為末端執(zhí)行器位形,θ(t)∈Rm為關(guān)節(jié)角序列,m>n代表了機械臂構(gòu)型上冗余?;谑?1),可獲得冗余機械臂逆向運動學(xué)的描述形式為:
θ(t)=f-1(x(t))
(2)
在機械臂實際操作中應(yīng)預(yù)先規(guī)劃好末端執(zhí)行器的運動軌跡xr(t)。為了跟蹤該軌跡,關(guān)節(jié)角序列必須滿足[12]:
θ(t)=f-1(xr(t))
(3)
根據(jù)冗余機械臂的結(jié)構(gòu)特性可知,式(3)存在關(guān)節(jié)角的多組解,即存在冗余性。為解決上述問題,需從關(guān)節(jié)空間中找出一組合適解,進而可將軌跡規(guī)劃問題轉(zhuǎn)化成如下函數(shù)優(yōu)化問題:
(4)
這里的gtr(·)是軌跡規(guī)劃目標(biāo)函數(shù),其具體形式為:
(5)
在軌跡規(guī)劃問題中考慮避碰條件以保證冗余機械臂安全作業(yè)。選擇最大化末端執(zhí)行器與障礙物之間的最小距離作為避障目標(biāo)函數(shù),并將其添加到式(4)中,有:
(6)
式中,O是障礙物頂點的笛卡爾坐標(biāo),gOI(·)是避障函數(shù),即:
(7)
式中,β是超參數(shù),di(O,θ(t))是第i根連桿到障礙物頂點的距離,由GJK算法計算獲得,具體形式如下所示:
(8)
式中,VA∈RnA×3和VB∈RnB×3分別為三維空間中不規(guī)則體A與B的頂點集合,nA和nB是最大頂點數(shù)。
由式(8)可知,GJK算法需要連桿和障礙物的幾何信息。定義連桿頂點函數(shù)為Mi(θ)∈Rni×3,即:
Mi(θ)=Ri(θ)Mi(0)+Ti(θ)
(9)
式中,ni是第i根連桿的頂點數(shù),Ri(θ)和Ti(θ)分別為第i根連桿的轉(zhuǎn)動矩陣和移動矩陣。
冗余機械臂的避障控制包含三部分:軌跡規(guī)劃、避碰及關(guān)節(jié)角約束。綜合這些要求并將其轉(zhuǎn)換成函數(shù)優(yōu)化問題,即:
(10)
式中,g(·)是總優(yōu)化目標(biāo)函數(shù),其具體形式為:
g(O,xr(t),θ(t))=ω1gtr(xr(t),θ(t))+ω2gOI(O,θ(t))
(11)
式中,ω1和ω2為權(quán)重因子。
本文用BAORNN算法來求解上述優(yōu)化問題。其中,BAO算法模擬的是天牛在未知環(huán)境下搜尋食物的過程,即天牛根據(jù)兩個觸須獲得的氣味大小來確定下一步的走向[13]。在這個過程中,天牛不會在任何方向上隨機移動,而是用嗅覺判明方向后,再做出下一步的計算決策,這可保證算法的多樣性。算法的數(shù)學(xué)機理為:
假設(shè)在第k次迭代時,機械臂的關(guān)節(jié)位置為θk,用標(biāo)準(zhǔn)正態(tài)分布函數(shù)b∈Rm模擬天牛左右兩個觸須接收到的氣味信息,即:
(12)
式中,λk是模擬兩觸須間距離的超參數(shù),θkL和θkR分別為第k次迭代時左右關(guān)節(jié)角(對應(yīng)兩個觸須氣味信息),該位置應(yīng)滿足如下約束:
ΩθkX=PΩ(θkX)
(13)
式中,X∈{L,R}。PΩ是關(guān)于集合Ω的投影函數(shù),其數(shù)學(xué)描述為:
(14)
集合Ω的數(shù)學(xué)描述為:
Ω={θ∈Rm|θ-<θ(t)<θ+,di>dmin}
(15)
式中,di=di(O,θ(t))。
結(jié)合式(10)與式(13),可得到用來評價當(dāng)前關(guān)節(jié)位置的目標(biāo)函數(shù):
gkX=g(O,xr(t),ΩθkX)
(16)
進而,設(shè)計第k+1次迭代時關(guān)節(jié)預(yù)測位置為:
Ωθk + 1=PΩ[θk-δk(λk)sign(gkL-gkR)b]
(17)
式中,sign(gkL-gkR)b為符號函數(shù),能保證天牛向著目標(biāo)函數(shù)較小的觸角方向移動。δk(λk)為超參數(shù),用來計算θ(k+1)X與θkX間的歐氏距離。上式可在預(yù)測的左右關(guān)節(jié)角中抉擇出較優(yōu)值。
第k+1次迭代時預(yù)測關(guān)節(jié)角對應(yīng)的目標(biāo)函數(shù)為:
(18)
更新冗余機械臂的關(guān)節(jié)角與目標(biāo)函數(shù),即:
(19)
(20)
進而,將BAO算法添加進RNN中形成BAORNN算法,去解決冗余機械臂的避碰運動規(guī)劃問題,算法的流程如圖1所示。
圖1 BAORNN算法流程圖
其中,RNN是一種常見的深度學(xué)習(xí)策略,其包括輸入層、隱藏層和輸出層,它將冗余機械臂關(guān)節(jié)角預(yù)測問題轉(zhuǎn)換為前后有依賴性的兩層時間序列問題,整個結(jié)構(gòu)包括3m+6個神經(jīng)元。在每個隱藏層中,用投影函數(shù)PΩ作為每個神經(jīng)元的激活函數(shù),并通過目標(biāo)函數(shù)g(·)來判斷信號流向。根據(jù)上述分析可知BAORNN算法的計算復(fù)雜度為O(m),即計算復(fù)雜度為關(guān)節(jié)數(shù)的線性函數(shù),故可在普通計算機上高效率運算。
為驗證本文所提避障算法的合理性,選取文獻[14]提出的7-DOF冗余機械臂作為分析對象,該機械臂類似于肩腕關(guān)節(jié)偏置的仿人手臂,具有靈活性高、柔順性好的特點,如圖2所示。相應(yīng)的DH參數(shù)也在表1中給出。另外,BOARNN算法的參數(shù)設(shè)置為:c1=0.6,c2=0.7,Tmax=500,ω1=0.7,ω2=0.3。仿真環(huán)境為Inter Core i7-4720 PC,MATALAB 2020a。
圖2 7-DOF冗余機械臂
表1 冗余機械臂的DH參數(shù)
仿真中,利用蒙特卡羅法[15]按照標(biāo)準(zhǔn)正態(tài)形式隨機生成機械臂的可達工作位形,并作為訓(xùn)練樣本來訓(xùn)練網(wǎng)絡(luò)。蒙特卡羅法的計算公式為:
θi=θimin+(θimax-θimin)·randn(0,1)
(21)
式中,randn(·)為呈正態(tài)分布的隨機函數(shù)。將生成的隨機關(guān)節(jié)角代入到正向運動學(xué)公式(1),便可獲得冗余機械臂末端執(zhí)行器的位形。這里的訓(xùn)練樣本由1000個位形構(gòu)成(如圖3所示),取其中700作為訓(xùn)練集,300作為測試集。
圖3 冗余機械臂的隨機位形
為了評價預(yù)測結(jié)果的優(yōu)劣,選取單次預(yù)測的精度評估公式為:
(22)
式中,Ωθ是預(yù)測關(guān)節(jié)角,θ是參考關(guān)節(jié)角,δ為預(yù)測精度。對雙隱藏層的BAORNN算法,分別選取神經(jīng)元數(shù)為15、21、27、33和39進行訓(xùn)練,其預(yù)測精度如圖4所示。從圖中可以看出,隨著隱藏層神經(jīng)元數(shù)目的增加,BAORNN算法的預(yù)測精度也隨之增加,當(dāng)數(shù)目逾27后,預(yù)測精度卻開始下降,故選擇隱藏層的神經(jīng)元數(shù)目為27。
圖4 預(yù)測精度
用訓(xùn)練好的網(wǎng)絡(luò)預(yù)測測試集中的末端執(zhí)行器位形,并計算其相對誤差,結(jié)果在圖5中給出。從圖中可以看出,在BAORNN算法的幫助下,測試集的相對預(yù)測誤差均小于5%,這說明了本文所提算法預(yù)測準(zhǔn)確性較高。
圖5 BAORNN相對預(yù)測誤差
接著選取四面體的一個面作為待加工面,機械臂的末端執(zhí)行器需沿著其三個頂點運動,此過程可模擬機器人焊接、噴涂等過程。假設(shè)工作環(huán)境中有一長方體障礙物,要求機械臂繞開障礙物并依次達到三個目標(biāo)點位置。表2給出了待加工面和障礙物的坐標(biāo)信息。為了比較BAORNN算法的性能,引入改進人工勢場法[7]進行比較,結(jié)果如表3所示。
表2 待加工面與障礙物的信息
從表3中可以看出,BAORNN算法的預(yù)測精度比改進人工勢場法平均高出10.89%、算法時間節(jié)約2.44 s。同時,基于BAORNN算法的冗余機械臂的無碰運動規(guī)劃效果如圖6所示。從圖中可以明顯看出機械臂的避碰過程和運動過程。圖7給出了7個關(guān)節(jié)角的響應(yīng),過程中沒有出現(xiàn)嚴(yán)重的關(guān)節(jié)突變,變化過程較為平滑、柔順。上述結(jié)果驗證了本文所提算法的可行性與優(yōu)越性。
表3 兩種算法預(yù)測能力的對比
(a) 三維軌跡圖
(b) XY平面內(nèi)的軌跡 圖6 冗余機械臂的運動規(guī)劃結(jié)果
圖7 關(guān)節(jié)角的響應(yīng)
本文針對冗余機械臂無碰運動規(guī)劃問題,提出使用BAORNN算法進行預(yù)測,主要結(jié)論如下:
(1)BAORNN算法的預(yù)測精度與神經(jīng)元數(shù)目有關(guān),仿真中最佳神經(jīng)元數(shù)目為27,此時算法的預(yù)測精度最高。
(2)BAORNN算法的相對預(yù)測誤差小于5%,基本上能滿足本文冗余機械臂無碰運動規(guī)劃的需求。
(3)與改進人工勢場法相比,BAORNN算法的平均預(yù)測精度要高出10.89%,運算時間節(jié)約2.44 s。
(4)BAORNN算法具有較高的預(yù)測精度,能夠較好地解決冗余機械臂避碰運動規(guī)劃問題。