劉哲, 潘愛強, 魏本剛, 江安烽,2, 張家維, 白成超
(1.國網(wǎng)上海市電力公司電力科學(xué)研究院,上海 200437;2. 國網(wǎng)上海能源互聯(lián)網(wǎng)研究院有限公司,上海 201210;3.哈爾濱工業(yè)大學(xué) 航天學(xué)院,黑龍江 哈爾濱 150001)
運動規(guī)劃是機械臂執(zhí)行操作任務(wù)的前提,其目的是為機械臂找到一條滿足無碰撞和運動平滑度等約束的關(guān)節(jié)運動軌跡。機械臂的運動規(guī)劃空間通常為高維的關(guān)節(jié)構(gòu)型空間,這導(dǎo)致了很多傳統(tǒng)的運動規(guī)劃算法很難直接用于機械臂的運動規(guī)劃。針對機械臂的高維規(guī)劃空間,目前基于采樣的運動規(guī)劃算法可以取得不錯的效果,如快速拓展隨機樹(rapidly-exploring random trees, RRT)[1]、概率路線圖(probabilistic roadmap method, PRM)[2]。此外常用的機械臂運動規(guī)劃算法還包括人工勢場法[3]和軌跡優(yōu)化算法[4]等。
上述的運動規(guī)劃方法的效率不可避免地隨機械臂自由度的增加而降低。近年來基于深度強化學(xué)習(xí)[5]的機械臂運動規(guī)劃算法得到了很多學(xué)者的關(guān)注。與模仿學(xué)習(xí)[6]相比,深度強化學(xué)習(xí)運動規(guī)劃算法能夠更好地探索障礙物的邊界,進而得到更高的成功率。與經(jīng)典的運動規(guī)劃算法相比,基于強化學(xué)習(xí)的運動規(guī)劃算法執(zhí)行速度更快,且不受關(guān)節(jié)空間維度影響。本文利用軟動作-評論家(soft actor-critis, SAC)[7]算法進行強化學(xué)習(xí)訓(xùn)練,并利用經(jīng)典運動規(guī)劃算法計算得到的指導(dǎo)軌跡來輔助探索,提升訓(xùn)練的效果。
當(dāng)機械臂的末端位置與目標(biāo)位置之間的距離小于閾值ε時,認(rèn)為規(guī)劃成功,當(dāng)機械臂與障礙物發(fā)生碰撞或規(guī)劃時間超出限制時,認(rèn)為規(guī)劃失敗。對于獎勵函數(shù)的設(shè)置,本文設(shè)計了一個密集獎勵函數(shù)和一個稀疏獎勵函數(shù),密集獎勵函數(shù)可以表示為如下形式。
(1)
(2)
稀疏獎勵函數(shù)可以表示為如式(3)所示。
(3)
機械臂強化學(xué)習(xí)運動規(guī)劃問題的動作空間為連續(xù)動作空間。本文采用適用于連續(xù)動作空間的SAC強化學(xué)習(xí)算法來進行訓(xùn)練。SAC算法中用神經(jīng)網(wǎng)絡(luò)對三個函數(shù)進行了分析,分別是狀態(tài)價值函數(shù)Vψ(s),其對應(yīng)的神經(jīng)網(wǎng)絡(luò)參數(shù)表示為ψ;狀態(tài)-動作價值函數(shù)Qθ(s,a),其對應(yīng)的神經(jīng)網(wǎng)絡(luò)參數(shù)表示為θ;策略函數(shù)πφ(a|s),其對應(yīng)的神經(jīng)網(wǎng)絡(luò)參數(shù)表示為φ。
在SAC算法中首先對狀態(tài)價值網(wǎng)絡(luò)進行更新。在計算Vψ(s)的損失函數(shù)時Qθ(st,at)和πφ(at|st)的神經(jīng)網(wǎng)絡(luò)參數(shù)保持不變。狀態(tài)價值網(wǎng)絡(luò)損失函數(shù)JV(ψ)的計算公式為:
(4)
(5)
式中:τ為更新速率。JQ(θ)的計算公式為:
(6)
(7)
式中:tanh(·)為雙曲正切函數(shù);μφ(s)為策略網(wǎng)絡(luò)輸出的動作均值;σφ(s)為策略網(wǎng)絡(luò)輸出的策略方差;N(0,I)為維度與關(guān)節(jié)自由度數(shù)相同的正態(tài)分布函數(shù)。經(jīng)過重參數(shù)化之后策略網(wǎng)絡(luò)損失函數(shù)Jπ(φ)的計算公式為:
(8)
在利用強化學(xué)習(xí)進行機械臂運動規(guī)劃的早期訓(xùn)練階段需要進行大量的隨機探索,才能逐步學(xué)會規(guī)劃策略。為了解決這一問題,可以將傳統(tǒng)運動規(guī)劃算法規(guī)劃得到的成功運動軌跡加入經(jīng)驗池中來為機械臂提供指導(dǎo)。本文在訓(xùn)練開始之前生成了10 000組不與障礙物發(fā)生碰撞的起始點和目標(biāo)點以及兩者對應(yīng)指導(dǎo)軌跡數(shù)據(jù)。起始點和目標(biāo)點的生成規(guī)則如下:
(9)
τguide={q0,a0,q1,a1,…,qn,an}
(10)
而經(jīng)驗池中數(shù)據(jù)的存儲形式為:
D={(st,at,rt,st+1)}
(11)
將指導(dǎo)軌跡加入到經(jīng)驗池中之前,需要根據(jù)機械臂每一時刻的關(guān)節(jié)角度qt和機械臂的運動學(xué)模型計算狀態(tài)st,并根據(jù)獎勵函數(shù)計算采取動作之后獲得的獎勵rt。
圖1 機械臂運動到目標(biāo)位置的過程
本文共進行了4組試驗,每組試驗在同樣的訓(xùn)練參數(shù)下重復(fù)訓(xùn)練3次。在訓(xùn)練過程中每隔100個回合輸出一次神經(jīng)網(wǎng)絡(luò)運動規(guī)劃器的規(guī)劃成功率,圖2中的曲線表示3次訓(xùn)練的成功率均值。
本文選擇評估訓(xùn)練10 000個回合后神經(jīng)網(wǎng)絡(luò)規(guī)劃器的規(guī)劃成功率和訓(xùn)練過程的收斂速度。在成功率評估方面,本文將神經(jīng)網(wǎng)絡(luò)運動規(guī)劃器在新的起始構(gòu)型和目標(biāo)構(gòu)型下運行100次規(guī)劃,將100次規(guī)劃的成功率作為神經(jīng)網(wǎng)絡(luò)運動規(guī)劃器的真實成功率估計值,并計算了3次訓(xùn)練的成功率均值。本文將訓(xùn)練過程中成功率首次達到80%時的訓(xùn)練回合數(shù)作為評價策略收斂速度的指標(biāo),成功率和收斂速度測試結(jié)果如表2所示。
圖2 訓(xùn)練過程的成功率變化曲線
表2 神經(jīng)網(wǎng)絡(luò)運動規(guī)劃器的測試結(jié)果
本文基于SAC強化學(xué)習(xí)算法,研究了指導(dǎo)軌跡和獎勵函數(shù)設(shè)計對運動規(guī)劃成功率和收斂速度的影響。試驗結(jié)果表明,密集獎勵較稀疏獎勵有更好的訓(xùn)練效果。指導(dǎo)軌跡的加入明顯地減少了訓(xùn)練的收斂回合數(shù),提高了運動規(guī)劃的成功率。當(dāng)獎勵函數(shù)為稀疏獎勵時,指導(dǎo)軌跡的作用更加明顯。