宋紫陽,李軍懷,2,王懷軍,2*,蘇 鑫,于 蕾,2
(1.西安理工大學(xué) 計算機科學(xué)與工程學(xué)院,西安 710048;2.陜西省網(wǎng)絡(luò)計算與安全技術(shù)重點實驗室,西安 710048)
工業(yè)機器人的規(guī)?;瘧?yīng)用提高了工業(yè)和制造業(yè)等行業(yè)的生產(chǎn)效率。機械臂是機器人的主要形式之一,通過運動副的轉(zhuǎn)動或移動使機械臂末端運動到合適的位置和姿態(tài),完成不同的工作任務(wù)。機械臂具有較高的自由度,能部署在不同場景下,快速執(zhí)行作業(yè)任務(wù)。機器學(xué)習(xí)(Machine Learning)技術(shù)可以提高機器人的智能化水平,讓機器人擁有自主決策與學(xué)習(xí)能力,在機器人軌跡路徑規(guī)劃[1-2]、環(huán)境感知[3-4]和智能決策與控制[5-6]等方向都有應(yīng)用。強化學(xué)習(xí)克服了傳統(tǒng)機械臂控制方法對環(huán)境狀態(tài)變化適應(yīng)能力差的缺點,成為機械臂智能化研究的重要方向[7-8]。
目前,基于強化學(xué)習(xí)的機械臂路徑規(guī)劃面臨兩個問題:1)機械臂的動作維度高、環(huán)境狀態(tài)復(fù)雜,強化學(xué)習(xí)面對海量的狀態(tài)數(shù)量和動作數(shù)量較難進行價值評估;2)獎勵稀疏的問題,即當(dāng)機械臂到達指定位置時才能得到獎勵,導(dǎo)致訓(xùn)練時間長,效果較差。
在基于強化學(xué)習(xí)的機械臂路徑或軌跡規(guī)劃等方面,國內(nèi)外學(xué)者已經(jīng)有了一定的研究成果。
基于深度強化學(xué)習(xí)(Deep Reinforcement Learning,DRL)的機械臂路徑規(guī)劃。DRL 使用深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Network,DNN)近似價值函數(shù)或策略函數(shù),較好地解決了環(huán)境狀態(tài)與動作維度高、數(shù)量龐大,數(shù)據(jù)特征難以在有限的計算機內(nèi)存中存儲、計算和表達等問題。谷歌公司的DeepMind 團隊[9]改進了DQN(Deep Q-Network)方法,提出了具有競爭網(wǎng)絡(luò)結(jié)構(gòu)的DQN 方法(Dueling DQN),提高了DNN對價值函數(shù)擬合的準(zhǔn)確性,但在面對連續(xù)控制問題時無法得到最優(yōu)控制策略。Gu 等[10]提出歸一化優(yōu)勢函數(shù)(Normalized Advantage Functions,NAF)方法,在DQN 的基礎(chǔ)上拓展了對連續(xù)控制問題的支持。Prianto 等[11]為了解決高維路徑規(guī)劃問題,提出了基于SAC(Soft Actor-Critic)的路徑規(guī)劃算法,為了有效處理構(gòu)型空間中的多臂問題,擴充了各臂的構(gòu)型空間,采用后見經(jīng)驗重放(Hindsight Experience Replay,HER)方法提高樣本效率,可以實時、快速地生成任意起始點和目標(biāo)點的最短路徑。本文在文獻[11]的基礎(chǔ)上,設(shè)計特殊的獎勵函數(shù)指導(dǎo)智能體學(xué)習(xí)如何選擇最優(yōu)行為,進一步擴展SAC強化學(xué)習(xí)的Critic 部分,采用兩個Q 網(wǎng)絡(luò)和兩個目標(biāo)Q 網(wǎng)絡(luò)對機械臂的路徑規(guī)劃設(shè)計進行優(yōu)化,以達到更快速強化學(xué)習(xí)的目的。張永梅等[12]基于DRL 算法對連續(xù)型動作輸出的端到端機器人路徑規(guī)劃進行研究,提出了內(nèi)在好奇心驅(qū)動的深度確定性策略梯度算法,實現(xiàn)了端到端的機器人路徑規(guī)劃,有利于解決訓(xùn)練前期獎勵難獲取問題。
自從模仿學(xué)習(xí)被提出,它已被應(yīng)用于機械臂路徑規(guī)劃。模仿學(xué)習(xí)被用于結(jié)合深度學(xué)習(xí)訓(xùn)練機械臂路徑控制模型,或與強化學(xué)習(xí)結(jié)合訓(xùn)練得到路徑規(guī)劃的最優(yōu)策略。于建均等[13]通過拖動機械臂的方式得到示教路徑,基于模仿學(xué)習(xí)和DNN 實現(xiàn)機械臂對示教路徑的快速學(xué)習(xí),解決了機械臂動作規(guī)劃編程復(fù)雜的問題。Rahmatizadeh 等[14]結(jié)合了長短期記憶(Long Short-Term Memory,LSTM)網(wǎng)絡(luò)和混合密度網(wǎng)絡(luò)(Mixture Density Network,MDN)作為機械臂的控制器,基于深度相機Kinect 獲取示教路徑,通過模仿學(xué)習(xí)使機械臂合理規(guī)劃路徑完成物品的拾取和放置。加州大學(xué)Finn 等[15]使用逆最優(yōu)控制(Inverse Optimal Control,IOC)訓(xùn)練機械臂路徑規(guī)劃,通過優(yōu)化獎勵函數(shù)引導(dǎo)價值對示教路徑進行模仿學(xué)習(xí),使機械臂學(xué)會了合理規(guī)劃路徑擺放盤子。使用示教路徑優(yōu)化獎勵函數(shù)可以對智能體在訓(xùn)練過程中策略輸出的動作作出更好的評價。湯自林等[16]基于模仿學(xué)習(xí)提出了變剛度協(xié)作搬運控制策略,使用任務(wù)參數(shù)化的高斯混合模型(Task Parameterized Gaussian Mixture Model,TP-GMM)對示教路徑編碼,學(xué)習(xí)不同搬運工況下的搬運軌跡概率模型,提高了特定搬運任務(wù)的終點位置精度。
合理的機械臂運動路徑是機械臂系統(tǒng)實現(xiàn)運動控制功能和完成任務(wù)的基礎(chǔ),本文提出一種基于路徑模仿和SAC 強化學(xué)習(xí)的機械臂路徑規(guī)劃算法。通過將機械臂末端的示教路徑和實際路徑融入獎勵函數(shù),使機械臂在強化學(xué)習(xí)過程中模仿示教路徑糾正實際路徑,提高學(xué)習(xí)效率,選擇SAC 算法作為強化學(xué)習(xí)方法使訓(xùn)練收斂更快且更穩(wěn)定。
針對強化學(xué)習(xí)在機械臂路徑規(guī)劃中獎勵稀疏難以收斂的問題,引入對參考路徑的模仿學(xué)習(xí),根據(jù)機械臂運行的實際路徑與參考路徑的差異設(shè)計適當(dāng)?shù)莫剟罘绞剑瑢崿F(xiàn)快速強化學(xué)習(xí)的目的。基于模仿學(xué)習(xí)的機械臂運動控制方法可分為示教路徑的獲取和示教路徑的學(xué)習(xí)兩個階段。將手拖動機械臂所檢測到的手部路徑作為示教路徑,在人拖動機械臂的過程中,機械臂通過編碼器獲取關(guān)節(jié)角度后通過正運動學(xué)方法解出機械臂的末端路徑,將末端路徑作為示教對象?;赟AC 強化學(xué)習(xí)的機械臂路徑規(guī)劃算法原理如圖1 所示。
圖1 機械臂路徑規(guī)劃算法原理Fig.1 Principle of manipulator path planning algorithm
SAC 算法基于Actor-Critic 框架,使用了5 個DNN 和1 個經(jīng)驗回放池完成強化學(xué)習(xí)任務(wù)。5 個DNN 分為兩組:一組包含一個策略網(wǎng)絡(luò),是SAC 強化學(xué)習(xí)算法的Actor 部分;另一組包含兩個Q 網(wǎng)絡(luò)和兩個目標(biāo)Q 網(wǎng)絡(luò),是SAC 強化學(xué)習(xí)的Critic 部分。獎勵函數(shù)根據(jù)實際路徑和參考路徑的距離來計算獎勵或者懲罰。SAC 算法將機械臂狀態(tài)和獎勵函數(shù)的輸出作為輸入,向機械臂反饋下一步的動作。
機械臂SmallRobotArm 選擇六自由度,機械臂末端連接一個電磁鐵。設(shè)定機械臂路徑規(guī)劃任務(wù)為拾取硬幣并將硬幣置入杯中。獎勵函數(shù)根據(jù)機械臂的當(dāng)前狀態(tài)st和下一步要執(zhí)行的動作at計算機械臂的任務(wù)完成度,根據(jù)任務(wù)完成度和機械臂末端與參考路徑的距離計算獎勵或者懲罰,誘導(dǎo)機械臂學(xué)習(xí)參考路徑。
1)機械臂狀態(tài)模型。
在機械臂路徑規(guī)劃任務(wù)背景下定義環(huán)境狀態(tài),t時刻的狀態(tài)st∈S是一個四元組:st=(post,quatt,c,w),其中post表示t時刻時機械臂末端 在空間中的位 置:post=(xt,ypt,zpt),quatt表示機械臂末端效應(yīng)器在空間中的姿態(tài)角:quatt=(wqt,xqt,yqt,zqt),c表示硬幣在空間中的位置,w表示水杯在空間中的位置。
2)機械臂動作模型。
機械臂的動作at∈A由 3 個部分構(gòu)成 :at=(ΔPt,ΔOt,gt),ΔPt和ΔOt的表達式分別為ΔPt=(Δxpt,Δypt,Δzpt),ΔOt=(Δxot,Δyot,Δzot),其中ΔPt表示機械臂末端在t時刻移動位移的向量,ΔOt表示機械臂末端在t時刻的轉(zhuǎn)動姿態(tài)角,gt表示機械臂末端的電磁鐵在t時刻是否接通了電源。
3)獎勵函數(shù)模型。
獎勵函數(shù)反映了在狀態(tài)st下進行動作at的獎勵的預(yù)期,可表示為:
由于系統(tǒng)狀態(tài)空間大,很難為所有狀態(tài)設(shè)置獎勵,獎勵稀疏的問題導(dǎo)致學(xué)習(xí)緩慢甚至無法學(xué)習(xí)。為了使機械臂能快速學(xué)習(xí)針對任務(wù)的最優(yōu)路徑,通過特殊設(shè)計的獎勵函數(shù)使機械臂對參考路徑模仿學(xué)習(xí),提高機械臂路徑規(guī)劃的學(xué)習(xí)速度和任務(wù)執(zhí)行成功率。
將用手拖動機械臂獲得的末端路徑作為機械臂學(xué)習(xí)的參考路徑,參考路徑如圖1 所示。
定義機械臂在t時刻的任務(wù)完成度為pt:
根據(jù)任務(wù)要求,獎勵或懲罰可分成3 種情況:
①若機械臂完成將硬幣置入水杯中的任務(wù)可得到最大獎勵;未完成任務(wù)時不獎勵。
②當(dāng)機械臂末端沿著參考路徑的方向運動時得到獎勵;當(dāng)機械臂沿著參考路徑的反方向運動時獎勵值為負(fù),即受到懲罰。
③機械臂末端與參考路徑的距離越近受到獎勵越大;距離過遠則會受到懲罰,距離越遠懲罰越大。
根據(jù)上述分析,執(zhí)行動作at后的獎勵為:
其中:Δd表示機械臂末端位置與參考路徑之間的距離;β為控制機械臂末端偏離參考路徑時受到獎勵或懲罰的比例系數(shù);η為參考路徑獎勵半徑,當(dāng)機械臂末端在η內(nèi)時會得到獎勵,否則會受到懲罰。
在強化學(xué)習(xí)中,這種獎勵機制可以誘導(dǎo)機械臂學(xué)習(xí)參考路徑,使策略更快收斂,提高學(xué)習(xí)效率。
SAC 是一種基于Actor-Critic 無模型強化學(xué)習(xí)框架,它融合了最大熵思想,在獲得高回報的同時,也具有較強的探索能力和較高的魯棒性[17]。結(jié)合獎勵算法和SAC 強化學(xué)習(xí)方法,可以用獎勵函數(shù)指導(dǎo)智能體學(xué)習(xí)如何選擇最優(yōu)行為,同時使用SAC 訓(xùn)練智能體,使它根據(jù)定義的獎勵函數(shù)和狀態(tài)選擇合適的動作。通過設(shè)計合適的獎勵函數(shù),智能體可以學(xué)習(xí)如何選擇最優(yōu)路徑,使得機器人準(zhǔn)確到達目標(biāo)點。
綜上所述,將獎勵算法和SAC 強化學(xué)習(xí)算法結(jié)合,可以構(gòu)建一種新的路徑規(guī)劃算法,使得機器人能夠根據(jù)環(huán)境狀態(tài)動態(tài)地選擇最優(yōu)路徑,具有較高的適應(yīng)性和魯棒性。
SAC 強化學(xué)習(xí)算法可以探索更多情況,以提高學(xué)習(xí)速度,且避免陷入局部最優(yōu)解,在獲得的最大回報和隨機性探索之間尋找一種平衡,使策略可以兼顧預(yù)期回報與最大熵。在SAC 中,最優(yōu)策略表示為:
其中:R是獎勵;H為熵;E 表示求獎勵和熵的期望;α是溫度系數(shù),決定了熵值相較于獎勵的比重,調(diào)整α可以控制最優(yōu)策略的探索隨機性。H的計算式為:
熵值的大小反映了策略π(?|st)的隨機程度,在熵較大時,機械臂在價值相近的動作中隨機選取一個執(zhí)行。
在SAC 算法中,最大熵是策略的目標(biāo)之一,因此用于表示預(yù)期回報的V 函數(shù)和Q 函數(shù)中的熵是獎勵的一部分,被稱為軟性狀態(tài)價值函數(shù)(軟性V 函數(shù))和軟性動作價值函數(shù)(軟性Q 函數(shù))[18],分別表示為:
軟性Q 函數(shù)的貝爾曼方程形式表示為:
軟性Q 函數(shù)和軟性V 函數(shù)的更新式為:
通過對式(9)~(10)不斷迭代,Q 函數(shù)的輸出將逐漸收斂至最優(yōu)Q值。
SAC 算法對AC 策略的更新方式進行了改進。在SAC 算法訓(xùn)練的過程中,策略向著軟性Q 函數(shù)的指數(shù)方向更新:
在強化學(xué)習(xí)場景下,軟性Q 函數(shù)若是多峰,則代表問題的解不唯一。面對有多個最優(yōu)解或存在次優(yōu)解時,基于能量模型的策略分布使算法可對所有可行的解進行學(xué)習(xí)。當(dāng)環(huán)境發(fā)生變化,之前的最優(yōu)解行不通時,基于能量模型的策略分布可以迅速調(diào)整策略得到新的解。對于SAC 算法,最優(yōu)策略的形式如下:
本文引入兩個結(jié)構(gòu)相同的Q 網(wǎng)絡(luò)同時訓(xùn)練,每次迭代時選擇較小的Q 值更新策略網(wǎng)絡(luò),防止對動作價值估計過高[19]。Target-Q 網(wǎng)絡(luò)在每次迭代中進行軟更新,網(wǎng)絡(luò)參數(shù)的變化較為平緩。使用第2 章所述的基于路徑模仿的獎勵函數(shù),誘導(dǎo)機械臂學(xué)習(xí)參考路徑。
本文算法的框架如圖2 所示。策略網(wǎng)絡(luò)將來自環(huán)境的狀態(tài)s作為輸入,有13 個參數(shù),輸出動作a,共8 個參數(shù),隱藏層是5 個全連接層,每層512 個神經(jīng)元,使用Leaky ReLU[20]和Tanh 分別作為隱藏層和輸出層的激活函數(shù)。
圖2 本文算法的框架Fig.2 Framework of proposed algorithm
設(shè)策略網(wǎng)絡(luò)參數(shù)為φ,損失函數(shù)為:
其中:D表示經(jīng)驗回放池,獎勵函數(shù)根據(jù)任務(wù)完成度和機械臂末端與參考路徑的距離計算出獎勵,并且存到經(jīng)驗回放池,經(jīng)驗回放池將狀態(tài)、轉(zhuǎn)換后的狀態(tài)、動作和獎勵(st,at,st+1,Rt+1)作為Q 網(wǎng)絡(luò)訓(xùn)練的數(shù)據(jù)來源。α為溫度參數(shù),隨著狀態(tài)的變化而自動調(diào)節(jié),面對探索過的環(huán)境狀態(tài),應(yīng)當(dāng)減小溫度參數(shù)令熵減小,而面對未知狀態(tài)應(yīng)當(dāng)增大溫度參數(shù),增強策略探索的隨機性。溫度參數(shù)α自動調(diào)節(jié)過程可表示為:
4 個Q 網(wǎng)絡(luò)結(jié)構(gòu)完全相同,它們的輸入為狀態(tài)s和策略網(wǎng)絡(luò)輸出的動作a,共21 個參數(shù),輸出單個參數(shù)即Q 值,隱藏層為3 個全連接層,每層512 個神經(jīng)元,使用Leaky ReLU 作為激活函數(shù)。設(shè)Q 網(wǎng)絡(luò)的參數(shù)為θ,損失函數(shù):
其中:τ值大于0 但遠小于1。
SAC 算法的偽代碼如算法1 所示。
算法1 SAC 算法。
本章通過實驗展示本文算法的實際效果,驗證該算法在解決實際任務(wù)問題中的可行性,通過對比實驗驗證該算法相較于深度確定性策略梯度(Deep Deterministic Policy Gradient,DDPG)強化學(xué)習(xí)算法[21]訓(xùn)練速度更快且成功率更高。
強化學(xué)習(xí)環(huán)境基于Unity ML-Agents 工具包搭建,使用Python 實現(xiàn)強化學(xué)習(xí)算法,使用TensorFlow 構(gòu)建深度網(wǎng)絡(luò)。
實驗場景如圖3 所示,機械臂放置在桌面上,機械臂前方擺放一個硬幣和一個杯子,首先機械臂末端移動到硬幣上方,通過電磁鐵將硬幣拾起,再將硬幣置入杯子中。
圖3 機械臂路徑規(guī)劃訓(xùn)練場景Fig.3 Training scene of manipulator path planning
為驗證本文算法的訓(xùn)練速度和效果,另外設(shè)置一組路徑模仿算法作為對比。將通過用手拖動機械臂得到的路徑作為參考路徑。兩種算法如下:
本文算法基于路徑模仿和SAC 算法。獎勵函數(shù)如第2章所述,智能體所受到的獎勵和懲罰與是否完成任務(wù)以及對參考路徑的學(xué)習(xí)程度有關(guān),SAC 強化學(xué)習(xí)算法能較好地對環(huán)境進行探索,提高學(xué)習(xí)速度。
基于路徑模仿和DDPG 算法。DDPG 算法與SAC 算法同屬于Actor-Critic 框架,不同的是DDPG 算法是直接選取概率最大的動作去執(zhí)行。DDPG 算法包含4 個神經(jīng)網(wǎng)絡(luò):策略網(wǎng)絡(luò)、目標(biāo)策略網(wǎng)絡(luò)、Q 網(wǎng)絡(luò)和目標(biāo)Q 網(wǎng)絡(luò),這些網(wǎng)絡(luò)的結(jié)構(gòu)與SAC 算法中對應(yīng)網(wǎng)絡(luò)結(jié)構(gòu)一致。
對上述兩種算法各訓(xùn)練1 000 回合,每個訓(xùn)練回合機械臂最多執(zhí)行100 次動作,若達到100 次動作后仍無法完成任務(wù)則恢復(fù)初始狀態(tài),開始下一輪訓(xùn)練。統(tǒng)計兩種算法在每個訓(xùn)練回合的累積獎勵,繪制相應(yīng)的曲線如圖4 所示。
圖4 兩種算法的獎勵變化曲線Fig.4 Reward change curves for two algorithms
從圖4 可以看出,兩種算法在開始訓(xùn)練時機械臂得到的獎勵都比較低,為-30 左右。隨著訓(xùn)練次數(shù)的增加,基于路徑模仿和SAC 算法的獎勵在不斷上升,400 回合之后獎勵值穩(wěn)定在15 左右?;诼窂侥7潞虳DPG 算法的獎勵增長曲線滯后于本文算法,在訓(xùn)練到200 回合之后開始增長,在600回合左右時獎勵值穩(wěn)定在12 左右。
每訓(xùn)練40 回合統(tǒng)計一次任務(wù)成功率,兩種算法訓(xùn)練1 000 回合的任務(wù)成功率曲線如圖5 所示。
圖5 兩種算法的成功率變化曲線Fig.5 Change curves of success rate for two algorithms
從圖5 可以看出,成功率曲線與獎勵曲線的趨勢基本一致,兩種算法在訓(xùn)練剛開始時成功率都很低,隨著訓(xùn)練回合增多,成功率逐漸增高,基于路徑模仿和SAC 算法在第400回合左右成功率穩(wěn)定在88%左右,而基于路徑模仿和DDPG算法在600 回合左右時成功率穩(wěn)定在88%左右。
機械臂基于兩種算法分別規(guī)劃10 條路徑,統(tǒng)計兩種算法所規(guī)劃路徑的平均長度以及與參考路徑的距離差,統(tǒng)計結(jié)果如表1 所示。
表1 10條路徑的路徑規(guī)劃實驗結(jié)果 單位:cmTab.1 Experimental results of path planning for ten paths unit:cm
機械臂基于路徑模仿和SAC 算法和基于路徑模仿和DDPG 算法規(guī)劃的路徑與參考路徑的對比如圖6、7 所示。
圖6 參考路徑及基于路徑模仿和SAC算法規(guī)劃的路徑對比Fig.6 Comparison between reference path and path based on path imitation and SAC algorithm
圖7 參考路徑和基于路徑模仿和DDPG算法規(guī)劃的路徑對比Fig.7 Comparison between reference path and path based on path imitation and DDPG algorithm
為驗證基于路徑模仿和SAC 的算法對不同路徑的學(xué)習(xí)效果,采集一條不同的機械臂運動路徑作為參考路徑令機械臂學(xué)習(xí),令機械臂規(guī)劃一條運動路徑完成實驗任務(wù)?;赟AC 方法的路徑規(guī)劃算法所規(guī)劃的路徑和參考路徑的對比如圖8 所示,基于SAC 方法的路徑規(guī)劃算法規(guī)劃的路徑長度為58.4 cm,偏離參考路徑的最大距離為1.8 cm,偏離參考路徑的平均距離為0.9 cm,機械臂針對不同的參考路徑都能學(xué)習(xí)并規(guī)劃合理的路徑來完成任務(wù)。
圖8 不同的參考路徑及基于路徑模仿和SAC算法規(guī)劃的路徑對比Fig.8 Comparison of different reference path and path based on path imitation and SAC algorithm
針對目前機械臂強化學(xué)習(xí)存在獎勵稀疏導(dǎo)致的收斂速度慢的問題,本文提出一種基于路徑模仿和SAC 強化學(xué)習(xí)的機械臂路徑規(guī)劃算法。首先對基于路徑模仿和SAC 強化學(xué)習(xí)的機械臂路徑規(guī)劃算法的基本原理進行描述;其次介紹了基于路徑模仿的獎勵函數(shù)設(shè)計原理;接著對SAC 強化學(xué)習(xí)算法進行了介紹,給出了算法流程;最后進行了機械臂路徑規(guī)劃對比實驗,實驗結(jié)果表明本文算法能夠有效訓(xùn)練機械臂完成硬幣投擲入杯的任務(wù),路徑模仿機制解決了強化學(xué)習(xí)的訓(xùn)練中獎勵稀疏難以訓(xùn)練的問題,SAC 算法相較于DDPG 算法探索能力更強,所規(guī)劃的路徑更加合理。