高順德,李傳發,郭 忠
(1.大連理工大學機械工程學院,遼寧大連116024;2.中石化重型起重運輸工程有限責任公司,北京100029)
隨著人工智能技術的成熟,強化學習已經被應用于各個領域如自動駕駛汽車、機器人等,大大提升了人類社會的生產力。而汽車起重機恰好與汽車與機器人有交叉重疊的部分,如汽車起重機在行駛時是一輛大型的汽車,其臂架在運行時可以類比于機器人的臂架,所以汽車起重機有很大的希望實現自動化,這將會大大提高吊裝效率與人力成本。所以本文將一種強化學習方法DDPG應用于汽車起重機的動作序列規劃,以此實現起重機自動吊取的動作序列規劃。盡管起重機的動作序列是高維度、多種類的,但是通過三維軟件VTK的仿真,證明DDPG可以很好地被應用在汽車起重機的動作序列規劃中。
本文所要解決的問題是:在使用汽車起重機進行目標物的吊取時,從原始狀態自動地規劃出一個動作序列來實現目標物的吊取,由此實現起重機的智能化。而強化學習可以使機器按照人的思維來進行學習和與環境進行交互,具有解決此問題的潛力。
而將人工智能應用于起重機的動作序列規劃中的方法暫時還處于萌芽階段,但是因為機器人手臂的動作序列與起重機的動作序列規劃有相似之處,所以關于機器人的動作序列規劃的文獻亦有很好的參考價值。比如Weitian Wang等[1]利用幾何圖形來表示現實任務中的模型,并設計包含時間消耗和與人工協作成本的函數。使用此函數來控制機器人的動作,通過優化此函數,來達到在線規劃機器人動作的目的。其算法通過實驗證明了能夠成功地為機器人產生最優動作,從而保證人機協同裝配的效率。Jinglun Yu等[2]測試了Q-Learning、A3C、DDPG等算法完成路徑規劃的時間和路徑性能的評估與算法的收斂時間和累積獎勵性能,發現DDPG算法在以上4個測試中表現都為最優。Timothy P Lillicrap等[3]提出的DDPG算法在Deep Q-Learning的基礎進行創新。提出了一種基于確定性策略梯度的Actor-critic與模型無關的算法,該算法可以在連續動作空間上收斂。本文的算法正是基于此算法很好地勝任了起重機臂架動作序列的規劃。Haarnoja T等[4]提出了了軟參與者關鍵算法(SAC),是基于離線學習的最大熵RL框架Actor-critic算法。在此框架中,Actor網絡的目標是同時最大化預期收益和熵。這些公式可以加速訓練并提高有關超參數的穩定性,包括自動調整溫度超參數的約束公式。Stouraitis T[5]提出了一種高效的結合圖搜索算法(基于A*算法)與軌跡優化的雙重動作序列規劃方法,使機器人能夠根據動態任務的變化動態地調整其策略。這種方法使智能體能夠在混合任務中進行在線規劃。通過優化離散的智能體與目標物接觸的位置,以及接觸期間的動作序列、連續軌跡和力曲線來實現不同智能體的協同操作。范卿[6]利用蟻群優化算法獲取吊裝路徑,且可通過權重調整選擇不同條件的最優路徑,生成最終吊裝路徑,從而為吊裝方案中的路徑規劃提供解決方案。Wu Di等[7]提出了一種改進的RRT-Tailor-Spline(RRT-TS)算法。通過這種方法,提升了起重機的路徑規劃的安全性,在規劃起重機的吊裝軌跡時,一些經典算法比如A*、Dijkstra算法、人工勢場法等基于空間幾何構造和圖搜索的算法也可以規劃出一條軌跡,但是還是需要人去操縱起重機來按照所規劃出來的軌跡去吊裝,所以直接規劃起重機在吊裝時的動作智能化程度將會更高。而強化學習的輸出即為動作輸出,所以強化學習具有直接規劃出動作序列的能力。
DDPG算法由Google Deepmind團隊提出的一種基于Actor-critic具有確定性策略的算法,此算法有兩個主要優點:可以作用于具有連續動作的智能體與算法易于收斂。此算法基于傳統的強化學習方法:一個智能體(Agent)用其策略π環境進行交互,由環境產生當前智能體所處的狀態S,采取策略π產生的動作A后智能體處于環境的下一狀態S_及其獎勵R。然后利用這些參數來找出一個策略π使智能體與環境交互能產生最大收益。
DDPG算法共有兩個網絡組成,分別為Actor網絡輸入狀態S,輸出動作A,所以Actor可以看作是一種策略;Critic網絡輸入狀態S,由β策略產生的動作a(需要注意的是這里的β策略并不是Actor網絡的策略,所以DDPG算法在計算Actor網絡的參數梯度時進行了近似),獎勵r與下一狀態S_。Actor網絡與Critic網絡又由兩個結構相同但是更新策略不同的評估網絡(Eval-net)與對照網絡(Target-net)組成,因為直接將Q-Learning方法應用到神經網絡中在很多環境中被證明不夠穩定,所以增加對照網絡可以增加網絡的整體穩定性,其中評估網絡的參數隨著訓練的進行不斷地更新,而對照網絡的參數則是根據評估網路的參數進行跟新,更新方式為θ′←τθ+(1-τ)θ′其中τ<<1,這樣就使得對照網絡更新的速度大大減緩,增加了網絡的穩定性。Crit?ic中評估網絡參數的更新與DQN網絡[1]更新的方式相同,都是借助估計的Q值與實際Q值的差值loss來更新,其中loss函數為:
其中yi為近似的實際Q值,其表達式為:
在這兩個表達式中的參數帶符號“′”的即為對照網絡輸出的參數值,反之則為估計網絡的參數值。而作為off-policy算法DDPG采用了與DQN算法類似的輸入策略,即小批量的輸入參數(數量即為式(1)中的N),這時就需要一個容器來儲存這些參數,所以由網絡產生輸出并不會立即開始訓練,而是以類似貨物的方式先儲存起來,而在本算法中的儲存方式即為(st,at,rt,st+1),而這些參數在critic網絡開始訓練時以N個為一組的方式輸入到網絡,這樣就大大地提高了網絡的學習效率,因為網絡不用在等待一個策略完成后再開始學習,而是可以邊探索邊學習。
Actor網絡中Eval-net的更新為:θ=θ+λ?J。
根據Sutton提出的策略梯度計算公式:
將J在θ進行微分得到:
將積分去掉,近似為:
這時?J≈?θμJ即為式(5)中的?θμJ,但是其實?J≈?θμJ,因為上面,3個式子中的μ其實并不是Ac?tor的策略而是在Actor的策略μ′上加了一個隨機過程?,即所以Actor所產生的動作與μ產生的動作并不一定相同,但是用μ動作的價值來近似評估Actor策略的好壞可以使得Actor網絡在前期能夠探索足夠多的動作,使算法盡可能避免收斂到局部最優值,而是向全局最優值收斂。
起重機的動作序列主要有4個:起升、回轉、變幅、吊取。以起重機臂架為x方向,垂直于地面的方向為z方向,建立局部坐標系,假設吊鉤與第5節臂的末端相同,不考慮折疊距離,則吊鉤的初始位置即為第一節臂的末端坐標設為(30,0,0)。將4個動作儲存在動作列表中,在環境中進行交互時,再將由DDPG傳入的角度動作值縮小為原來的10倍、伸長動作擴大為原來的30倍,因為這樣可以使得神經網絡的輸出沒有太大的差異,防止參數在更新時發生梯度爆炸或梯度消失。
如圖1所示,如果不將動作值做一定的處理,雖然獎勵不斷的提升,但是critic網絡中的loss函數的值在不斷減小到800步時,開始出現周期性的震蕩,結合神經網路的參數值變化可以看出網絡在800步處于發散狀態,所以直接將參數輸入,會導致輸入參數差異過大導致神經網路無法收斂。
圖1 直接將參數輸入得到的結果
根據動作列表中起重機臂架的動作序列就可以求得起重機在運動之后的坐標值,將其中進行簡化為剛體模型則只要知道起重機臂架末端的坐標與吊鉤的坐標即可,所以將其分別設置為crane_x、crane_y、crane_z,起重機臂架的原始長度為L,可以得到更新公式為:
獎勵R的設置也極為重要,而且是強化學習中的難點,因為獎勵相當于不斷引導強化學習算法的導師,所以如果獎勵設立的不正確也無法保證算法的收斂或者出現不符合設計者預想的收斂方式,而對于起重機的動作序列規劃則可以很直觀地得出,獎勵的設置即為吊鉤到目標物的距離的負數,這樣當吊鉤接近目標物時,獎勵就會增大從而使得Actor網絡更加傾向于此類動作,所以算法就會有收斂的趨勢,如圖2所示,如果只將距離的負數作為輸入,雖然算法會收斂,但結合獎勵收斂曲線卻發現獎勵曲線震蕩嚴重,可能導致訓練后的網絡精度不夠。
圖2 只將距離的負數作為輸入得到的結果
狀態的設置為兩個分別為起重機底座與目標物的距離S1和起重機的吊鉤與目標物的距離S2,設置第一個S1是為了使得神經網絡在學習使可以起重機具有方向識別的能力,因為神經網絡的輸出動作值是一個矢量值,如圖3所示,如果只將S2作為輸入,起重機在兩個不同的位置卻有相同的輸入,這樣必然會導致神經網絡無法收斂,所以還需要添加S1,使算法具有方向識別的能力。
圖3 起重機狀態
實驗最優輸入下的DDPG算法中critic神經網絡的re?ward函數如圖4所示,神經網絡在大約800步的時候開始收斂,因為在訓練神經網絡時,設置一個循環的退出條件為網絡探索次數為300或者吊鉤持續接觸目標物50次,因為,在網路快收斂時。吊鉤可能接觸到了目標物,但卻沒有持續接觸,但是這種情況下,反而獎勵加的更多,比如斷續接觸了200次的獎勵就要大于連續接觸50次的獎勵。而如圖所示可以推斷網絡在800步時開始有在一個策略循環中出現收斂的情況,當到達1 100步時,網絡基本在整個狀態空間都收斂了,所以在到2 000步時獎勵基本保持不變。
圖4 最優輸入下獎勵函數收斂曲線
為了驗證訓練好的算法可以按照起重機實際吊起動作序列進行規劃,所以作者利用三維建模軟件VTK模擬了起重機吊取目標物的過程。在驗證的過程中發現模擬的起重機可以按照作者預想的策略進行規劃。
為了在3D環境中方便觀看結果,所以將起重機的模型進行了簡化:將起重機的底座簡化為一個長方體,將5節臂架簡化為1根可以伸出旋轉的鋼桿,吊繩在程序的設定雖然假設為了鋼桿,但是其運作原理卻是與實際的運行情況相同。如圖5所示將底座設為彩色,將起重機的臂架設置為白色的鋼桿,為了方便觀看,其初始長度設為了100 m,其末端坐標為(100,0,0),目標物為圖中位于起重機左前方的圓柱體,坐標值為(100,100,0)。
圖5 起重機原始位置
在VTK顯示界面上加了可以改變目標物坐標的狀態欄,這樣可以方便觀看起重機移向目標物的動作方式,經過實驗發現,當移動狀態欄改變目標物的坐標時,訓練好的神經網絡可以按照實際的吊取動作序列進行規劃,即在原始狀態下,經過起升、回轉、變幅、吊取4個狀態使吊鉤接觸到目標物,如圖6所示。
圖6 起重機目標位置
綜上所述,本文所設計的算法可以被應用到起重機的動作序列規劃中。
通過對算法的不斷優化以及通過VTK虛擬環境的仿真,說明了本文所應用的強化學習算法,可以應用到起重機的動作序列規劃中,可以快速地在無障礙物的情形下規劃出起重機所需執行的動作。本文的創新點主要有:
(1)創新性地將強化學習應用到起重機的動作序列規劃中,使得訓練完成后的算法可以更快的規劃出最優的動作序列使得起重機完成吊裝;
(2)應用強化學習,使得規劃起重機的動作序列時,不需要對環境進行坐標系建模,因為本文應用算法的輸入為起重機底盤和吊鉤到被吊物的距離,輸出為臂架的動作序列,所以在實際的吊裝情境中輸入的距離可以用傳感器直接測量得出,本文對環境進行建模是因為沒有坐標系,就無法得出算法所需要的距離輸入。