成 怡,郝密密
天津工業(yè)大學(xué) 控制科學(xué)與工程學(xué)院,天津300387
路徑規(guī)劃是移動機器人研究的重要方向,是實現(xiàn)導(dǎo)航任務(wù)的關(guān)鍵[1],即移動機器人從起始位置到目標(biāo)位置能夠自主探索出一條平滑且無碰撞的路徑軌跡[2]。傳統(tǒng)的路徑規(guī)劃算法有A*算法[3]、人工勢場法[4]以及快速擴展隨機樹法[5]等,這些算法用于解決已知環(huán)境下的路徑規(guī)劃,且容易實現(xiàn),但機器人在規(guī)劃路徑時存在探索能力差的問題。針對傳統(tǒng)算法存在的問題,許多研究者引入了深度強化學(xué)習(xí)算法[6-8],讓機器人在環(huán)境狀態(tài)中能做出更準(zhǔn)確的運動方向。深度強化學(xué)習(xí)由深度學(xué)習(xí)和強化學(xué)習(xí)相結(jié)合,深度學(xué)習(xí)通過感知環(huán)境來獲得目標(biāo)狀態(tài)觀測信息。強化學(xué)習(xí)通過獲取的信息給予動作,再結(jié)合獎勵判斷動作價值,是智能體與環(huán)境不斷交互試錯,再利用獎懲函數(shù)指導(dǎo)動作好壞的過程。
Mnih等[9]提出第一個深度強化學(xué)習(xí)模型,即深度Q網(wǎng)絡(luò)(DQN),該網(wǎng)絡(luò)模型是將神經(jīng)網(wǎng)絡(luò)和Q-learning相結(jié)合,利用神經(jīng)網(wǎng)絡(luò)代替Q值表解決了Q-learning中的維數(shù)災(zāi)難問題,但在網(wǎng)絡(luò)訓(xùn)練時收斂速度較慢。Tai等[10]把DQN應(yīng)用到了無模型避障的路徑規(guī)劃中,但存在狀態(tài)-動作值過估計問題,造成移動機器人獲得的獎勵稀疏,且規(guī)劃出的路徑并非最優(yōu)。Yu等[11]提出一種基于深度強化學(xué)習(xí)的安全約束月球車端到端的路徑規(guī)劃算法,通過利用課程學(xué)習(xí)的思想,針對不同地形特征的月面環(huán)境對網(wǎng)絡(luò)進行訓(xùn)練,提高了月球車對月面不同地形的適應(yīng)性。根據(jù)地形的坡度角和當(dāng)前狀態(tài)來預(yù)測月球車的行駛率,設(shè)計安全獎勵函數(shù)作為當(dāng)前狀態(tài)的獎勵反饋。徐曉蘇等[12]在Q值初始化的過程中引入了人工勢場,便加快了網(wǎng)絡(luò)的收斂速度,增加了動作步長和調(diào)整了機器人的動作方向提高了機器人規(guī)劃路線的精度,該方法在機器人進行局部路徑規(guī)劃時效果較好,但在全局路徑規(guī)劃上實施性不好。
因此,為了有效解決機器人探索能力差和獎勵稀疏的問題,本文提出一種基于深度圖像信息的改進深度強化學(xué)習(xí)的路徑規(guī)劃算法,利用Kinect視覺傳感器感知自身周圍的環(huán)境信息,并結(jié)合自身的位置信息和將到達的目標(biāo)點組成一個狀態(tài)空間作為網(wǎng)絡(luò)的輸入,以實際的線速度和角速度作為機器人下一步動作的輸出,且設(shè)計合理的獎懲函數(shù),提高了算法的獎勵值,改善了環(huán)境狀態(tài)空間的獎勵稀疏性。
強化學(xué)習(xí)是智能體與環(huán)境交互時,通過“試錯”方式得到不同獎勵值的過程。如圖1所示為強化學(xué)習(xí)交互過程。Q-learning[13]是一個值迭代過程,它會計算出每個Q值,在執(zhí)行動作時,根據(jù)機器人所學(xué)的先驗知識更新Q值表。然而,當(dāng)機器人所處的環(huán)境狀態(tài)變得復(fù)雜,則狀態(tài)-動作空間會變得很大,便帶來了“維數(shù)災(zāi)難”問題,導(dǎo)致模型很難形成或不能計算,而深度強化學(xué)習(xí)能有效解決此問題。
圖1 強化學(xué)習(xí)流程圖Fig.1 Reinforcement learning flow chart
深度強化學(xué)習(xí)(DRL)[14]由深度學(xué)習(xí)(DL)和強化學(xué)習(xí)(RL)兩者相結(jié)合來實現(xiàn)端到端的學(xué)習(xí),深度學(xué)習(xí)[15]負責(zé)通過傳感器掃描周圍的環(huán)境信息來感知機器人當(dāng)前的狀態(tài)信息,而強化學(xué)習(xí)[16]負責(zé)機器人對獲取的環(huán)境信息進行探索,做出決策,從而實現(xiàn)機器人路徑規(guī)劃的智能化需求。
DQN算法[17]結(jié)合神經(jīng)網(wǎng)絡(luò)和Q-learning,神經(jīng)網(wǎng)絡(luò)以RGB圖像作為輸入,實現(xiàn)對Q值表的建模,表示所有的狀態(tài)-動作值,Q-learning以馬爾科夫決策建模[18],以當(dāng)前狀態(tài)、動作、獎勵、策略、下一步動作來表示。DQN通過引入經(jīng)驗回放來提高機器人的樣本關(guān)聯(lián)性和效率利用問題,并通過固定目標(biāo)Q值提高更新的不平穩(wěn)性。DQN包括建立目標(biāo)函數(shù)、目標(biāo)網(wǎng)絡(luò)和引入經(jīng)驗回放[19]這三個步驟:
(1)目標(biāo)函數(shù)。DQN的目標(biāo)函數(shù)通過Q-learning構(gòu)建,公式如下所示:
其中,(s,a)表示當(dāng)前的狀態(tài)和動作,(s′,a′)表示下一步的狀態(tài)和動作,Q′(s,a)表示更新后的狀態(tài)-動作值,在狀態(tài)s下,得到動作獎勵r,并對其進行評估。
目標(biāo)狀態(tài)-動作值函數(shù)用貝爾曼方程可表示為:
其中,y′表示目標(biāo)Q值。
損失函數(shù)為均方誤差損失函數(shù),公式如下所示:
其中,θ為神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)模型中訓(xùn)練的權(quán)值參數(shù)。
(2)目標(biāo)網(wǎng)絡(luò)。DQN通過目標(biāo)網(wǎng)絡(luò)和預(yù)測網(wǎng)絡(luò)來評估當(dāng)前的狀態(tài)-動作值函數(shù)。目標(biāo)網(wǎng)絡(luò)基于神經(jīng)網(wǎng)絡(luò)得到目標(biāo)Q值,利用目標(biāo)Q值來估計下一時刻的Q值,以解決Q-learning中Q值表的“維數(shù)災(zāi)難”問題。預(yù)測網(wǎng)絡(luò)使用隨機梯度下降法更新網(wǎng)絡(luò)權(quán)重△θ,梯度下降算法的公式如下所示:
(3)經(jīng)驗回放。經(jīng)驗回放解決了數(shù)據(jù)的樣本關(guān)聯(lián)性和效率利用問題。在機器人和環(huán)境交互時,可獲得樣本數(shù)據(jù)庫,把樣本數(shù)據(jù)庫存儲到建立的經(jīng)驗池中,從經(jīng)驗池中隨機抽取一小部分數(shù)據(jù)用于訓(xùn)練樣本,再將訓(xùn)練樣本送入神經(jīng)網(wǎng)絡(luò)中訓(xùn)練。經(jīng)驗回放主要起到樣本本身可重復(fù)利用來提高學(xué)習(xí)效率。
本文提出了一種基于深度圖像的深度強化學(xué)習(xí)的改進算法,該算法是移動機器人通過Kinect傳感器感知周圍環(huán)境狀態(tài)獲取深度圖像信息和目標(biāo)位置信息作為網(wǎng)絡(luò)的輸入,以機器人的線速度和角速度作為下一步動作的輸出,實現(xiàn)在有障礙物環(huán)境下朝向目標(biāo)點運行的過程,從而完成移動機器人的導(dǎo)航任務(wù)。機器人的主要目標(biāo)是在室內(nèi)未知環(huán)境下能夠自主到達目標(biāo)點并規(guī)劃出更短的路徑。
改進DQN算法主要分為仿真和訓(xùn)練兩部分,如圖2所示,上面仿真部分說明了強化學(xué)習(xí)過程如何使用深度Q網(wǎng)絡(luò)選擇決策獲得狀態(tài)s和獎勵r,下面網(wǎng)絡(luò)訓(xùn)練部分說明了改進DQN網(wǎng)絡(luò)優(yōu)化參數(shù)的前向和反向傳播過程。
圖2 改進DQN算法的主要組成部分Fig.2 Main components of improved DQN algorithm
在仿真環(huán)境中,機器人把直接采集的深度圖像信息作為訓(xùn)練樣本,再結(jié)合自身所處的環(huán)境狀態(tài)特征和要到達的目標(biāo)點作為網(wǎng)絡(luò)的輸入,并將當(dāng)前位置下的Q值作為網(wǎng)絡(luò)模型輸出,且利用ε-greedy策略進行動作選擇,來到達下一步狀態(tài)。當(dāng)?shù)竭_下一步狀態(tài)時,計算出相應(yīng)獎勵值r,便可得到一個完整的數(shù)據(jù)元組(s,a,r,s′),于是將該系列的數(shù)據(jù)存儲到經(jīng)驗回放池D中,再從經(jīng)驗回放池D中抽取小批量樣本放入神經(jīng)網(wǎng)絡(luò)中進行訓(xùn)練。其中,機器人在探索最優(yōu)路徑過程中,從經(jīng)驗回放池D中選取獎勵值r非常關(guān)鍵,獎勵值r決定了機器人路徑規(guī)劃的好壞程度。機器人把得到的獎勵值r送到優(yōu)化目標(biāo)函數(shù)中進行網(wǎng)絡(luò)參數(shù)的更新,一直循環(huán)迭代直到訓(xùn)練完成。如圖3所示為本文算法的模型。
圖3 改進的DQN算法模型Fig.3 Improved DQN algorithm model
在網(wǎng)絡(luò)訓(xùn)練過程中,若機器人利用Kinect傳感器識別出障礙物,則通過改進深度強化學(xué)習(xí)算法使機器人能有效的避開障礙物。否則,機器人將會繼續(xù)導(dǎo)航,直到到達目標(biāo)點。改進的深度強化學(xué)習(xí)算法設(shè)計如下所示。
算法1基于移動機器人改進的深度強化學(xué)習(xí)算法
獎懲函數(shù)是移動機器人在當(dāng)前狀態(tài)采取某一動作并到達下一狀態(tài)獲得的獎勵值,表示當(dāng)前狀態(tài)采取某一動作的好壞。在強化學(xué)習(xí)中起到關(guān)鍵作用,決定了智能體的學(xué)習(xí)效率和效果。
移動機器人在執(zhí)行導(dǎo)航任務(wù)時,要使訓(xùn)練網(wǎng)絡(luò)產(chǎn)生可行的控制策略,給予機器人正確動作。在這一過程中,機器人與環(huán)境不斷交互來得到反饋信息(獎勵值),機器人接收到反饋信息繼續(xù)與環(huán)境交互,同時評估將要執(zhí)行的動作,從而使機器人更快地學(xué)習(xí)得到最優(yōu)動作策略,根據(jù)動作選擇策略設(shè)置合理的獎懲函數(shù)。機器人在運行過程中碰撞到障礙物會返回到起始點,重新開始探索路徑,若到達目標(biāo)點則會停止訓(xùn)練。
DQN算法的獎懲函數(shù)定義為:
其中,v表示線速度,ω表示角速度,dt表示每隔0.2 s循環(huán)訓(xùn)練一圈。
在運行過程中,速度是機器人行駛的關(guān)鍵因素,速度決定了機器人獲得獎勵值的正負。在機器人和環(huán)境交互時,通過設(shè)置獎勵函數(shù)獲得獎勵值,根據(jù)獎勵值評價機器人的動作好壞,然后機器人會積累自身的學(xué)習(xí)經(jīng)驗,再一一評價從環(huán)境中獲得的動作,進而改變動作行為使產(chǎn)生的下一步動作更準(zhǔn)確。為了使機器人快速準(zhǔn)確地獲取下一步動作,由機器人的轉(zhuǎn)向角度cos(2vω)和線速度平方的2倍來共同決定獎勵值的大小。其中,轉(zhuǎn)向角度設(shè)為cos(2vω)是為了使機器人得到的轉(zhuǎn)向角度更小,選擇下一步動作更準(zhǔn)確,所獲得的獎勵值更高。線速度平方的2倍是為了提高機器人在無障礙的情況下能加快運行速度。
改進DQN算法的獎懲函數(shù)定義為:
其中,v表示線速度,ω表示角速度。
由式(6)可知,機器人獲得的獎勵值是由線速度和角速度共同控制的。如表1為機器人的動作值和速度的對應(yīng)關(guān)系。
表1 機器人動作值和速度指令對應(yīng)表Table 1 Correspondence table of robot action value and speed command
機器人依靠自身的經(jīng)驗探索學(xué)習(xí),從記憶的動作中選擇適應(yīng)環(huán)境的行為。機器人在運行時,根據(jù)不同的情況設(shè)置相應(yīng)的獎勵值r,rtarget表示每個片段(episode)完成之后所有瞬時獎勵值的累加,即到達目標(biāo)點的總獎勵值;rcollision表示機器人原地旋轉(zhuǎn)或與障礙物發(fā)生碰撞時,會受到懲罰,獎勵值為?10。因此,在訓(xùn)練過程中,每個學(xué)習(xí)片段(episode)將每隔500步更新一下目標(biāo)網(wǎng)絡(luò)的獎勵值。
為了實現(xiàn)移動機器人避障實驗,驗證本文算法在路徑規(guī)劃中的有效性,并與DQN做了對比實驗。實驗環(huán)境為NVIDIA GTX 2080Ti GPU服務(wù)器,機器人的操作系統(tǒng)(ROS)[20]和Gazebo[21]完成的。機器人訓(xùn)練過程是在Gazebo中搭建的仿真平臺上完成的,且機器人使用帶有Kinect視覺傳感器的Turtlebot。如圖4所示,圖中的“S”代表機器人的起始點,綠色的圓柱體“G”代表到達的目標(biāo)點以及各種形狀不同的障礙物組成的仿真環(huán)境。
圖4 仿真平臺Fig.4 Simulation platform
移動機器人利用Kinect視覺傳感器獲取的深度圖像信息和目標(biāo)位置信息作為網(wǎng)絡(luò)的輸入,通過采集的深度圖像提取數(shù)據(jù)信息,即物體與傳感器的距離,再結(jié)合要到達的目標(biāo)點形成一個狀態(tài)空間,并以機器人實際的動作方向作為輸出,機器人便可實現(xiàn)導(dǎo)航任務(wù)。在訓(xùn)練過程中,機器人避開障礙物是關(guān)鍵問題之一,它從起始點開始探索運行到達目標(biāo)點結(jié)束。若檢測不到障礙物,則機器人就會繼續(xù)運行;若檢測到障礙物,則會利用改進深度強化學(xué)習(xí)算法避開障礙物。當(dāng)機器人碰撞到障礙物時,機器人將會回到起始點,重新開始探索。隨著探索次數(shù)的增多,機器人記憶的動作會逐漸增加,則下一步動作的選擇會更精準(zhǔn)。圖5代表機器人避開障礙物的過程,圖中的黑色箭頭表示機器人下一步要做的動作方向。圖6為機器人在行駛的過程中遇到障礙物的深度圖像信息。
圖5 避開障礙物的過程Fig.5 Process of avoiding obstacles
圖6 遇到障礙物的深度信息Fig.6 Depth information of obstacles encountered
機器人以狀態(tài)Q值作為輸入,動作Q值為輸出,便形成了狀態(tài)-動作對。若機器人在運行時碰撞到障礙物,則會得到負獎勵;若機器人到達目標(biāo)點,則會得到正獎勵。通過獎懲機制的方法使機器人在學(xué)習(xí)過程中避開障礙物而不斷接近目標(biāo)點完成路徑規(guī)劃這一過程。改進深度強化學(xué)習(xí)算法的參數(shù)設(shè)置如表2所示。
表2 參數(shù)設(shè)置Table 2 Parameter settings
本文對DQN算法和改進算法利用平均獎勵值和損失函數(shù)值做了分析和實驗結(jié)果的對比。如表3列出了DQN、改進DQN算法平均獎勵值和平均損失函數(shù)值的對比,改進DQN的平均獎勵值比DQN提高了51.2%,改進DQN算法的平均損失函數(shù)值比DQN降低了15.3%。利用平均獎勵值評估算法的性能。如圖7所示,黑色線代表DQN算法運行得到的平均獎勵值變化曲線,紅色線代表改進DQN算法運行得到的變化曲線,藍色線代表對改進算法進行測試得到的變化曲線。當(dāng)獎勵值為(?10~0)階段時,在訓(xùn)練初期,機器人剛開始探索學(xué)習(xí)避障運行的過程,且未能對障礙物做出正確的判斷,得到的是負獎勵值。當(dāng)獎勵值為(0~20)階段時,訓(xùn)練次數(shù)達到500,機器人處于探索學(xué)習(xí)階段,表示機器人開始識別并能夠避開部分障礙物,但它仍在和環(huán)境不斷地交互學(xué)習(xí)進一步調(diào)整動作選擇策略,來獲得相應(yīng)的正獎勵值。當(dāng)獎勵值為(20~40)階段時,訓(xùn)練次數(shù)在500~2 100時,機器人在DQN算法和改進DQN算法中獲得獎勵值都不穩(wěn)定,訓(xùn)練次數(shù)達到2 100左右,DQN算法獲得的獎勵值趨于平衡。當(dāng)獎勵值為(40~60)階段時,改進算法和測試階段的訓(xùn)練次數(shù)達到1 500左右平均獎勵值趨于穩(wěn)定。測試階段是利用訓(xùn)練的結(jié)果模型在相同環(huán)境中做測試進一步驗證網(wǎng)絡(luò)的有效性。測試和訓(xùn)練的平均獎勵值的遞增趨勢一致。因此,改進算法可以縮短網(wǎng)絡(luò)訓(xùn)練時間,提高平均獎勵值,改善了獎勵稀疏性,使機器人規(guī)劃出更短的路徑。
表3 平均獎勵值和平均損失函數(shù)值對比Table 3 Comparison of average reward and average loss function value
圖7 平均獎勵值對比圖Fig.7 Comparison chart of average reward value
利用損失函數(shù)值評估算法的性能。如圖8所示,黑色線代表DQN算法運行得到的損失函數(shù)值變化曲線,紅色線代表改進DQN算法運行得到的變化曲線,藍色線代表對改進算法進行測試得到的變化曲線。在訓(xùn)練初期,Q值的初始化為0,機器人的學(xué)習(xí)經(jīng)驗不足,只能隨機選取動作,導(dǎo)致算法的收斂速度較慢。DQN算法得到的損失函數(shù)值波動較大,訓(xùn)練次數(shù)達到2 500左右,損失函數(shù)值趨于穩(wěn)定。而改進算法的損失函數(shù)值波動性較小,訓(xùn)練次數(shù)達到1 000左右,損失函數(shù)值便能很快趨于穩(wěn)定。測試階段的訓(xùn)練次數(shù)達到1 200左右時,損失函數(shù)值趨于穩(wěn)定。測試和訓(xùn)練的損失函數(shù)值的衰減趨勢一致。因此,改進算法具有一定的優(yōu)越性,加快了網(wǎng)絡(luò)的收斂速度。
圖8 損失函數(shù)值對比圖Fig.8 Comparison chart of loss function value
為了驗證改進算法的有效性,在簡單環(huán)境中對路徑規(guī)劃做了對比分析。如圖9的(a)和(b)所示,簡單環(huán)境下機器人運行得到的路徑軌跡。圖中,由機器人的起始點(白色S),機器人的目標(biāo)點(黑色G)以及障礙物組成。表4列出了機器人在簡單環(huán)境下利用每種算法運行15次取得的平均路徑長度和規(guī)劃的路徑軌跡上避開障礙物的個數(shù)。改進DQN算法的路徑長度比DQN縮短了21.4%。且避開障礙物個數(shù)比原來增加了一個。
圖9 簡單環(huán)境下的路徑軌跡長度比較Fig.9 Comparison of path length in simple environment
表4 簡單環(huán)境下路徑規(guī)劃算法比較Table 4 Comparison of path planning algorithms in simple environment
通過對比分析圖9的(a)和(b),可以看出(b)規(guī)劃的路徑軌跡更短,且避開這條路徑軌跡上的障礙物多。圖(a)避開了3個障礙物,而圖(b)能避開4個障礙物。因此,改進算法的機器人避障能力更強,機器人有更好的適應(yīng)和學(xué)習(xí)能力,不僅提升了其探索能力,且可以得到更短的路徑。
復(fù)雜環(huán)境下對路徑規(guī)劃做了兩組對比實驗,驗證了改進算法的可行性。如圖10的(a)和(b)所示,復(fù)雜環(huán)境下機器人運行得到的路徑軌跡。在一個密閉的環(huán)境中,設(shè)定起始點和目標(biāo)點以及相應(yīng)的障礙物,機器人從起始點出發(fā)到達目標(biāo)點結(jié)束,獲得了一條較短的路徑軌跡。通過調(diào)整機器人的速度設(shè)計改進的獎勵函數(shù),獎勵函數(shù)主要用于判斷機器人的動作好壞,機器人根據(jù)獎勵函數(shù)和環(huán)境的交互得到獎勵值來調(diào)節(jié)其動作選擇策略。機器人會在訓(xùn)練一圈之后得到狀態(tài)-動作對的Q值,動作被ε-greedy策略選擇后狀態(tài)會被固定,機器人則會根據(jù)記憶的狀態(tài)-動作值運行。因此,當(dāng)機器人探索出一條路徑時,它會選擇相似的軌跡行駛。表5列出了機器人在復(fù)雜環(huán)境下利用每種算法運行20次取得的平均路徑長度和規(guī)劃的路徑軌跡上避開障礙物的個數(shù)。改進DQN算法的路徑長度比DQN縮短了11.3%。且避開障礙物個數(shù)比原來增加了兩個。
圖10 復(fù)雜環(huán)境下的路徑軌跡長度比較Fig.10 Comparison of path length in complex environment
表5 復(fù)雜環(huán)境下路徑規(guī)劃算法比較Table 5 Comparison of path planning algorithms in complex environment
通過比較分析圖10的(a)和(b),DQN、改進DQN算法都規(guī)劃出了一條無碰撞的路徑,可以看出圖(b)規(guī)劃的路徑軌跡上避開障礙物較多,圖(a)避開了4個障礙物,而圖(b)能避開6個障礙物。圖(b)規(guī)劃的路徑類似一條兩點之間距離最短的軌跡。由此得出,改進DQN算法的運行軌跡更短,避障能力更強,通過對比說明了改進DQN算法能夠規(guī)劃出一條更優(yōu)更短的路線。
如圖11的(a)和(b)所示,調(diào)整了機器人的起始點和目標(biāo)點,機器人在該復(fù)雜環(huán)境下,利用DQN算法和改進算法運行得到了不同的路徑軌跡,改進算法的路徑明顯比DQN算法運行得到的路徑短。進一步驗證了改進算法的可行性。
圖11 復(fù)雜環(huán)境下運行路徑的情況比較Fig.11 Comparison of running paths in complex environment
針對移動機器人在室內(nèi)未知環(huán)境下路徑規(guī)劃時探索能力差的問題,提出了基于深度圖像信息的深度強化學(xué)習(xí)的改進算法。利用Kinect視覺傳感器獲取障礙物的深度圖像信息,再把信息直接輸入到網(wǎng)絡(luò)中,提高了網(wǎng)絡(luò)訓(xùn)練的收斂速度。設(shè)置獎懲函數(shù)提高了機器人的獎勵值,優(yōu)化了狀態(tài)-動作空間解決了環(huán)境狀態(tài)空間獎勵稀疏的問題,使機器人的動作選擇更精準(zhǔn)。仿真和實驗結(jié)果表明,通過對比實驗分析了DQN算法和改進DQN算法的平均獎勵值和損失函數(shù)值,并利用測試階段進一步驗證了改進算法的有效實施性。改進算法不僅提高了機器人的探索能力,加強了避障能力,且規(guī)劃出的路徑長度更短,驗證了其在路徑規(guī)劃上的可行性。