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