姬周珂,徐巧玉,王軍委,李坤鵬
(1. 河南科技大學(xué) 機(jī)電工程學(xué)院,河南 洛陽(yáng) 471003;2. 洛陽(yáng)銀杏科技有限公司,河南 洛陽(yáng) 471003)
目前,隨著工業(yè)領(lǐng)域大型裝備使用需求的增多,液壓機(jī)械臂廣泛應(yīng)用于重型工件及設(shè)備的運(yùn)輸裝卸等任務(wù)中,但由于液壓機(jī)械臂內(nèi)部結(jié)構(gòu)復(fù)雜、質(zhì)量大、體積大,其控制易受到慣性、摩擦等因素的影響,因此液壓機(jī)械臂的精確控制問題亟需解決[1-3]。
深度強(qiáng)化學(xué)習(xí)算法具備自主學(xué)習(xí)的特點(diǎn),目前許多研究者基于深度強(qiáng)化學(xué)習(xí)對(duì)機(jī)械臂進(jìn)行控制研究[4-9]。文獻(xiàn)[10]提出了一種基于深度Q學(xué)習(xí)(deep-Q learning,DQN)算法的機(jī)械臂控制策略,采用了引導(dǎo)式DQN算法的控制策略,為了提高算法訓(xùn)練效率,在低精度要求的機(jī)械臂抓取任務(wù)中訓(xùn)練。文獻(xiàn)[11]采用信賴域策略優(yōu)化(trust region policy optimization,TRPO)算法對(duì)UR5機(jī)械臂進(jìn)行到達(dá)目標(biāo)點(diǎn)訓(xùn)練,訓(xùn)練到了一定的末端控制精度,但沒有往更高精度進(jìn)行探索。文獻(xiàn)[12]基于歸一化優(yōu)勢(shì)函數(shù)(normalized advantage function,NAF)算法在機(jī)械臂開門任務(wù)中訓(xùn)練,提高了機(jī)械臂到達(dá)門把手的準(zhǔn)確度,但需要多個(gè)機(jī)械臂協(xié)同工作來(lái)促進(jìn)算法收斂。文獻(xiàn)[13]基于深度確定性策略梯度(deep deterministic policy gradient,DDPG)算法設(shè)計(jì)復(fù)合獎(jiǎng)勵(lì)函數(shù)來(lái)促進(jìn)算法收斂,提高了機(jī)械臂在固定目標(biāo)點(diǎn)抓取的精度,不足的是每個(gè)目標(biāo)點(diǎn)需要分別進(jìn)行訓(xùn)練。綜上所述,目前深度強(qiáng)化學(xué)習(xí)機(jī)械臂控制算法在多個(gè)目標(biāo)的精確控制方面研究較淺,在兼顧收斂速度和控制精度方面依然存在一定難度。
針對(duì)上述問題,本文提出了一種基于深度強(qiáng)化學(xué)習(xí)的機(jī)械臂控制方法。采用改進(jìn)的DDPG算法與機(jī)器人操作系統(tǒng)(robot operating system,ROS)仿真機(jī)械臂交互訓(xùn)練,通過實(shí)際機(jī)械臂數(shù)據(jù)修正仿真機(jī)械臂的輸出參數(shù),基于低層獎(jiǎng)勵(lì)函數(shù)提高算法收斂速度,高層獎(jiǎng)勵(lì)函數(shù)提高機(jī)械臂末端控制精度,最終獲得機(jī)械臂控制算法模型,從而進(jìn)行機(jī)械臂末端的精確控制。
深度強(qiáng)化學(xué)習(xí)機(jī)械臂控制系統(tǒng)總體方案設(shè)計(jì)框圖如圖1所示,該系統(tǒng)主要包括:仿真機(jī)械臂、機(jī)械
圖1 機(jī)械臂控制系統(tǒng)總體方案設(shè)計(jì)框圖
臂控制及通信模塊、機(jī)械臂數(shù)據(jù)處理模塊和DDPG訓(xùn)練模塊。
仿真機(jī)械臂:根據(jù)實(shí)際機(jī)械臂參數(shù)搭建仿真機(jī)械臂,模擬實(shí)際機(jī)械臂的訓(xùn)練場(chǎng)景,并與深度強(qiáng)化學(xué)習(xí)算法進(jìn)行交互訓(xùn)練,獲得控制模型。
機(jī)械臂控制及通信模塊:負(fù)責(zé)仿真機(jī)械臂的控制以及數(shù)據(jù)通信,包括驅(qū)動(dòng)控制模塊和數(shù)據(jù)獲取模塊。驅(qū)動(dòng)控制模塊輸出機(jī)械臂的關(guān)節(jié)位置控制信號(hào),數(shù)據(jù)獲取模塊獲取機(jī)械臂根據(jù)關(guān)節(jié)控制信號(hào)動(dòng)作后的數(shù)據(jù)。
機(jī)械臂數(shù)據(jù)處理模塊:處理仿真機(jī)械臂數(shù)據(jù)和實(shí)際機(jī)械臂數(shù)據(jù),將處理后的機(jī)械臂數(shù)據(jù)輸出到DDPG訓(xùn)練模塊。
圖2 訓(xùn)練流程圖
DDPG訓(xùn)練模塊:包括關(guān)節(jié)初始化參數(shù)、關(guān)節(jié)優(yōu)化參數(shù)以及參數(shù)單元。關(guān)節(jié)初始化參數(shù)為機(jī)械臂初始化時(shí)的關(guān)節(jié)參數(shù)。關(guān)節(jié)優(yōu)化參數(shù)為經(jīng)訓(xùn)練優(yōu)化后的關(guān)節(jié)參數(shù)。參數(shù)單元傳遞關(guān)節(jié)參數(shù),訓(xùn)練前輸出關(guān)節(jié)初始化參數(shù),訓(xùn)練過程中輸出關(guān)節(jié)優(yōu)化參數(shù)。
訓(xùn)練流程如圖2所示,通過建立DDPG中Actor-Critic網(wǎng)絡(luò)、分層獎(jiǎng)勵(lì)函數(shù)、回放經(jīng)驗(yàn)池和仿真機(jī)械臂之間的聯(lián)系,以迭代交互的方式來(lái)訓(xùn)練獲得機(jī)械臂控制模型。
本文以中信重工機(jī)械臂為原型搭建仿真機(jī)械臂,機(jī)械臂共6個(gè)關(guān)節(jié),D-H運(yùn)動(dòng)學(xué)模型如圖3所示。圖3中:X0Y0Z0~X5Y5Z5坐標(biāo)系為機(jī)械臂1~6關(guān)節(jié)的坐標(biāo)系;d1、d3、d4、d5、L5、L6對(duì)應(yīng)于各坐標(biāo)系之間的位移變換,mm;X6Y6Z6為輔助坐標(biāo)系,用于計(jì)算末端位置。
圖3 機(jī)械臂D-H運(yùn)動(dòng)學(xué)模型
機(jī)械臂D-H參數(shù)如表1所示,其中:θi為Z軸旋轉(zhuǎn)量,di為Z軸平移量,Li-1為X軸平移量,?i-1為X軸旋轉(zhuǎn)量。
表1 機(jī)械臂D-H參數(shù)表
在ROS環(huán)境中,按照中信重工機(jī)械臂的物理結(jié)構(gòu)、關(guān)節(jié)范圍、D-H坐標(biāo)系以及質(zhì)量、轉(zhuǎn)動(dòng)慣量等參數(shù)搭建仿真機(jī)械臂[14]。機(jī)械臂6個(gè)關(guān)節(jié)的運(yùn)動(dòng)范圍不同,為方便算法處理,將機(jī)械臂各個(gè)關(guān)節(jié)的運(yùn)動(dòng)范圍歸一化到相同區(qū)間內(nèi)。
機(jī)械臂的輸入和輸出以動(dòng)作和狀態(tài)來(lái)定義,為此進(jìn)行了機(jī)械臂狀態(tài)和控制動(dòng)作的設(shè)計(jì)。機(jī)械臂的狀態(tài)S如式(1)所示,其包含12維參數(shù)。
S=[x1,y1,z1,x2,y2,z2,a1,a2,a3,a4,a5,a6],
(1)
其中:(x1,y1,z1)為機(jī)械臂末端的三維坐標(biāo)值;(x2,y2,z2)為目標(biāo)點(diǎn)的三維坐標(biāo)值;(a1,a2,a3,a4,a5,a6)為機(jī)械臂6個(gè)關(guān)節(jié)角度值。
機(jī)械臂的關(guān)節(jié)控制動(dòng)作A如式(2)所示,其包含6維參數(shù)。
A=[△a1,△a2,△a3,△a4,△a5,△a6],
(2)
其中:△ai為機(jī)械臂關(guān)節(jié)的位置增量控制參數(shù)。
本文采用ROS節(jié)點(diǎn)實(shí)現(xiàn)仿真機(jī)械臂的控制與通信功能,通過ROS環(huán)境中的關(guān)節(jié)控制節(jié)點(diǎn)和數(shù)據(jù)獲取節(jié)點(diǎn)設(shè)計(jì)驅(qū)動(dòng)控制模塊和數(shù)據(jù)獲取模塊,分別用來(lái)進(jìn)行仿真機(jī)械臂的關(guān)節(jié)控制和數(shù)據(jù)獲取。
在仿真環(huán)境中,為進(jìn)行機(jī)械臂關(guān)節(jié)的位置控制,向驅(qū)動(dòng)控制模塊發(fā)送關(guān)節(jié)控制參數(shù),從而使機(jī)械臂運(yùn)動(dòng),改變機(jī)械臂的狀態(tài)。機(jī)械臂運(yùn)動(dòng)后到達(dá)新的狀態(tài),通過數(shù)據(jù)獲取模塊獲取機(jī)械臂狀態(tài)數(shù)據(jù),包括關(guān)節(jié)角度參數(shù)和末端位置參數(shù)。最終將狀態(tài)數(shù)據(jù)送入數(shù)據(jù)處理模塊中進(jìn)行處理。
因液壓機(jī)械臂具有復(fù)雜的結(jié)構(gòu)特性,仿真環(huán)境中的液壓機(jī)械臂與實(shí)際機(jī)械臂有較大的輸出偏差,為使仿真機(jī)械臂具有和實(shí)際機(jī)械臂相似的輸入輸出特性,本文通過數(shù)據(jù)引導(dǎo)的方式進(jìn)行仿真機(jī)械臂輸出參數(shù)的修正。實(shí)際機(jī)械臂和仿真機(jī)械臂的輸出參數(shù)output如式(3)所示。
output=[a1,a2,a3,a4,a5,a6,x,y,z],
(3)
其中:(a1,a2,a3,a4,a5,a6)為機(jī)械臂關(guān)節(jié)參數(shù);(x,y,z)為機(jī)械臂末端位置參數(shù)。
仿真機(jī)械臂和實(shí)際機(jī)械臂在輸出相同關(guān)節(jié)參數(shù)的條件下,其輸出的末端位置參數(shù)會(huì)有一定的偏差,△E=(△ex,△ey,△ez),△E代表末端在X、Y、Z這3個(gè)方向的偏差。在仿真環(huán)境中,數(shù)據(jù)處理模塊根據(jù)偏差修正仿真機(jī)械臂的末端輸出參數(shù),從而達(dá)到仿真機(jī)械臂和實(shí)際機(jī)械臂輸出參數(shù)接近的效果,在此條件下進(jìn)行深度強(qiáng)化學(xué)習(xí)算法的訓(xùn)練。
圖4 DDPG控制算法整體框架
深度強(qiáng)化學(xué)習(xí)的機(jī)械臂控制算法通過機(jī)械臂數(shù)據(jù)進(jìn)行訓(xùn)練,不斷優(yōu)化關(guān)節(jié)控制參數(shù),從而實(shí)現(xiàn)機(jī)械臂的控制。本文機(jī)械臂控制算法基于DDPG框架進(jìn)行設(shè)計(jì)與改進(jìn),DDPG控制算法整體框架如圖4所示。
DDPG控制算法分為參數(shù)輸出單元、分層獎(jiǎng)勵(lì)函數(shù)、回放經(jīng)驗(yàn)池以及Actor-Critic網(wǎng)絡(luò)幾大部分,仿真環(huán)境用于與算法交互訓(xùn)練。參數(shù)輸出單元輸出機(jī)械臂關(guān)節(jié)控制參數(shù),訓(xùn)練開始前先發(fā)送初始化關(guān)節(jié)參數(shù)到仿真環(huán)境中進(jìn)行機(jī)械臂的初始化;分層獎(jiǎng)勵(lì)函數(shù)進(jìn)行算法的獎(jiǎng)勵(lì)反饋,根據(jù)機(jī)械臂的狀態(tài)進(jìn)行獎(jiǎng)勵(lì)評(píng)價(jià),將獎(jiǎng)勵(lì)數(shù)據(jù)和機(jī)械臂的狀態(tài)數(shù)據(jù)一并送入到回放經(jīng)驗(yàn)池中;回放經(jīng)驗(yàn)池用來(lái)存儲(chǔ)機(jī)械臂的狀態(tài)數(shù)據(jù)和獎(jiǎng)勵(lì)數(shù)據(jù);Actor網(wǎng)絡(luò)和Critic網(wǎng)絡(luò)之間進(jìn)行參數(shù)傳遞,通過獲取回放經(jīng)驗(yàn)池中的數(shù)據(jù)進(jìn)行訓(xùn)練,由Actor網(wǎng)絡(luò)輸出訓(xùn)練優(yōu)化的機(jī)械臂關(guān)節(jié)控制參數(shù),再經(jīng)參數(shù)輸出單元輸出到機(jī)械臂環(huán)境中,以此迭代訓(xùn)練,最終輸出機(jī)械臂控制算法模型。
利用Actor-Critic網(wǎng)絡(luò)進(jìn)行策略函數(shù)和評(píng)價(jià)函數(shù)的擬合,本文采用Keras+Tensorflow的框架設(shè)計(jì)算法網(wǎng)絡(luò),通過設(shè)計(jì)Actor網(wǎng)絡(luò)擬合控制策略函數(shù),輸出機(jī)械臂控制動(dòng)作參數(shù),設(shè)計(jì)Critic網(wǎng)絡(luò)擬合評(píng)價(jià)函數(shù),輸出機(jī)械臂評(píng)價(jià)Q值。
將12維機(jī)械臂狀態(tài)數(shù)據(jù)輸入到Actor網(wǎng)絡(luò),采用全連接層神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,輸出6個(gè)關(guān)節(jié)控制動(dòng)作,將均值回歸(Ornstein-Uhlenbeck,OU)噪聲N添加到控制動(dòng)作中進(jìn)行探索,最終控制策略at如式(4)所示[15]。
at=u(St|θu)+N
。
(4)
向Critic網(wǎng)絡(luò)輸入機(jī)械臂的12維狀態(tài)數(shù)據(jù)和6維機(jī)械臂關(guān)節(jié)動(dòng)作參數(shù),采用全連接神經(jīng)網(wǎng)絡(luò)輸出1維的評(píng)價(jià)值。評(píng)價(jià)值的更新方式如式(5)和式(6)所示。
yj=rj+γQ′(Sj+1,u′(Sj+1|θu′)|θQ′)
;
(5)
(6)
其中:yj為目標(biāo)評(píng)價(jià)Q值;Q(*)、Q′(*)分別為當(dāng)前和目標(biāo)評(píng)價(jià)函數(shù);u(*)、u′(*)分別為當(dāng)前和目標(biāo)策略函數(shù);θ*為評(píng)價(jià)函數(shù)和策略函數(shù)的內(nèi)參數(shù);γ為衰減因子;n為迭代訓(xùn)練次數(shù);rj為獎(jiǎng)勵(lì),通過最小化損失函數(shù)L更新評(píng)價(jià)值。
Actor網(wǎng)絡(luò)和Critic網(wǎng)絡(luò)之間通過策略梯度更新參數(shù),策略梯度計(jì)算如式(7)所示:
。
(7)
深度強(qiáng)化學(xué)習(xí)算法通過獎(jiǎng)勵(lì)函數(shù)輸出的獎(jiǎng)勵(lì)數(shù)據(jù)進(jìn)行學(xué)習(xí)訓(xùn)練,但傳統(tǒng)DDPG算法存在著獎(jiǎng)勵(lì)稀疏的問題。為此,本文結(jié)合機(jī)械臂逆運(yùn)動(dòng)學(xué)設(shè)計(jì)了分層獎(jiǎng)勵(lì)函數(shù),當(dāng)前關(guān)節(jié)值與參考逆解值的誤差L如式(8)所示,當(dāng)前關(guān)節(jié)值與實(shí)際關(guān)節(jié)值的誤差L2如式(9)所示時(shí),機(jī)械臂末端與目標(biāo)點(diǎn)的距離d如式(10)所示,單位為m。
(8)
(9)
(10)
其中:aj為機(jī)械臂當(dāng)前關(guān)節(jié)值;bj為機(jī)械臂理論逆解值;cj為機(jī)械臂實(shí)際關(guān)節(jié)值;(x1,y1,z1)為機(jī)械臂末端坐標(biāo);(x2,y2,z2)為目標(biāo)點(diǎn)坐標(biāo)。R為反饋獎(jiǎng)勵(lì),則:
第1層獎(jiǎng)勵(lì):R=-L,d≥0.1;
第2層獎(jiǎng)勵(lì):R=-d-0.1lgd-L2-0.1lgL2,0 第3層獎(jiǎng)勵(lì):R=R+3,0 本文設(shè)計(jì)的第1層獎(jiǎng)勵(lì)函數(shù)使用計(jì)算的關(guān)節(jié)逆解值作為引導(dǎo)項(xiàng),以當(dāng)前關(guān)節(jié)值與關(guān)節(jié)逆解值的誤差作為獎(jiǎng)勵(lì),引導(dǎo)機(jī)械臂在目標(biāo)點(diǎn)范圍運(yùn)動(dòng),促進(jìn)算法收斂。第2層獎(jiǎng)勵(lì)函數(shù)以機(jī)械臂末端與目標(biāo)點(diǎn)距離d的相反數(shù)作為距離獎(jiǎng)勵(lì),以當(dāng)前關(guān)節(jié)值與實(shí)際關(guān)節(jié)值差的相反數(shù)作為關(guān)節(jié)獎(jiǎng)勵(lì),將距離獎(jiǎng)勵(lì)和關(guān)節(jié)獎(jiǎng)勵(lì)組合,并引入lg非線性函數(shù)。第3層獎(jiǎng)勵(lì)函數(shù)為精度獎(jiǎng)勵(lì)函數(shù),當(dāng)距離d<0.006 m時(shí),給當(dāng)前獎(jiǎng)勵(lì)加3,提高控制精度。第1層獎(jiǎng)勵(lì)為訓(xùn)練前期獎(jiǎng)勵(lì),當(dāng)距離d穩(wěn)定在0.1 m內(nèi)時(shí),以第2層獎(jiǎng)勵(lì)和第3層獎(jiǎng)勵(lì)作為后期的獎(jiǎng)勵(lì)。 為了驗(yàn)證改進(jìn)DDPG算法的收斂性能和對(duì)機(jī)械臂的精確控制性能,本文進(jìn)行算法的收斂速度對(duì)比試驗(yàn)和機(jī)械臂末端的精確控制性能測(cè)試試驗(yàn)。試驗(yàn)在Linux操作系統(tǒng)下的ROS-Kinetic 環(huán)境中進(jìn)行,并基于Keras+TensorFlow框架搭建深度強(qiáng)化學(xué)習(xí)環(huán)境。中信重工實(shí)體機(jī)械臂如圖5所示,中信重工仿真機(jī)械臂如圖6所示。 圖5 中信重工實(shí)體機(jī)械臂 圖7 訓(xùn)練試驗(yàn)曲線 為對(duì)比改進(jìn)前后DDPG算法的收斂速度,以機(jī)械臂末端控制精度獎(jiǎng)勵(lì)為指標(biāo)進(jìn)行改進(jìn)前后DDPG算法的訓(xùn)練,平滑處理過的訓(xùn)練試驗(yàn)曲線如圖7所示,平均獎(jiǎng)勵(lì)值越大,精度越高。 由圖7可知:改進(jìn)前DDPG算法在3 920訓(xùn)練回合左右收斂,改進(jìn)后的DDPG算法在3 350訓(xùn)練回合左右收斂,收斂速度提升了約14.54%。 為驗(yàn)證改進(jìn)后DDPG控制模型的機(jī)械臂末端精確控制能力,分別在仿真環(huán)境下進(jìn)行了單點(diǎn)抗干擾重復(fù)性試驗(yàn)和多點(diǎn)測(cè)試試驗(yàn)。擾動(dòng)噪聲為在機(jī)械臂末端添加的隨機(jī)噪聲,噪聲大小為-0.005~0.005 m,分別施加在末端的X、Y、Z方向上。 5.2.1 單點(diǎn)重復(fù)性測(cè)試 為驗(yàn)證控制模型的單點(diǎn)重復(fù)控制性能,分別在有擾動(dòng)和無(wú)擾動(dòng)的條件下進(jìn)行25次的單點(diǎn)重復(fù)性測(cè)試試驗(yàn),測(cè)試結(jié)果如圖8所示。 由圖8可知:在不加擾動(dòng)時(shí),末端的最大控制誤差為5.335 mm,最小誤差為4.616 mm,平均誤差為4.924 mm;加擾動(dòng)后,末端的最大控制誤差為6.146 mm,最小誤差為4.780 mm,平均誤差為5.411 mm,驗(yàn)證了訓(xùn)練的控制模型具有較強(qiáng)的抗干擾能力。 5.2.2 多點(diǎn)測(cè)試 為驗(yàn)證控制模型的多點(diǎn)自適應(yīng)控制性能,選取50組目標(biāo)點(diǎn)進(jìn)行測(cè)試,分別在無(wú)擾動(dòng)和有擾動(dòng)的環(huán)境下進(jìn)行測(cè)試,測(cè)試結(jié)果如圖9所示。 圖8 單點(diǎn)重復(fù)性測(cè)試結(jié)果 由圖9可知:在無(wú)擾動(dòng)條件下,機(jī)械臂末端的最大控制誤差為7.55 mm,最小誤差為4.78 mm,平均誤差為5.52 mm;在有擾動(dòng)條件下,機(jī)械臂末端的最大控制誤差為8.52 mm,最小誤差為5.08 mm,平均誤差為6.10 mm,驗(yàn)證了控制模型的多點(diǎn)自適應(yīng)能力。 表2 多點(diǎn)完成率測(cè)試結(jié)果 為進(jìn)一步驗(yàn)證控制模型的不同隨機(jī)點(diǎn)控制性能,在所保存的實(shí)際機(jī)械臂數(shù)據(jù)中,每隨機(jī)采集50個(gè)目標(biāo)點(diǎn)位置數(shù)據(jù)為1組,進(jìn)行多點(diǎn)穩(wěn)定性測(cè)試,共測(cè)試6組,測(cè)試結(jié)果如表2所示,控制誤差在6 mm以內(nèi)為成功,完成率為成功次數(shù)與測(cè)試數(shù)量的比值。由表2可知:多點(diǎn)穩(wěn)定性測(cè)試的完成率保持在80%以上,最高完成率達(dá)到90%。 改進(jìn)后的DDPG算法相較改進(jìn)前收斂速度提升了約14.54%,機(jī)械臂末端控制精度在6 mm以內(nèi),多點(diǎn)測(cè)試完成率最高達(dá)到了90%。本方案收斂速度較快,具有較強(qiáng)的抗干擾能力和自適應(yīng)能力,能夠有效實(shí)現(xiàn)機(jī)械臂末端的精確控制。5 試驗(yàn)結(jié)果分析
5.1 收斂速度對(duì)比
5.2 精確控制性能測(cè)試
6 結(jié)論