李廣創(chuàng) 程良倫
摘? 要:為了解決現(xiàn)有的機械臂焊接系統(tǒng)調(diào)整動作的難度大,缺乏靈活性的問題,本文采用了深度強化學(xué)習(xí)算法來解決機械臂的路徑規(guī)劃問題;該方法使用一個三層的DNN網(wǎng)絡(luò),輸入為機械臂的狀態(tài)信息,輸出為機械臂的運動關(guān)節(jié)角度,通過離線訓(xùn)練,機械臂能夠自行訓(xùn)練出一條接近于最優(yōu)的運動軌跡,能夠成功地避開障礙物到達目標點;仿真在一個三自由度點焊機器人的模擬平臺上進行,仿真實驗表明,采用深度強化學(xué)習(xí)技術(shù)的機械臂能為焊接機械臂規(guī)劃出一條無碰撞的路徑,具有較強的避障能力。
關(guān)鍵詞:機械臂;強化學(xué)習(xí);碰撞檢測;路徑規(guī)劃
中圖分類號:TP391.9? ? ?文獻標識碼:A
Abstract:In order to solve the difficulty of adjusting the existing mechanical arm welding system and the lack of flexibility,this paper adopts a deep reinforcement learning algorithm to solve the path planning problem of the mechanical arm;the method uses a three-layer DNN network with the input of mechanical state information and the output of the joint angle of the arm.Through offline training,the mechanical arm can be trained to move a nearly optimal motion trajectory and successfully avoid obstacles to reach the target point;the simulation is carried out in a three-degree-of-freedom welding robot simulation platform.The simulation experiment shows that the mechanical arm with deep reinforcement learning technology can plan a collision-free path for the welding mechanical arm and has strong obstacle avoidance ability.
Keywords:mechanical arm;reinforcement learning;collision detection;path planning
1? ?引言(Introduction)
在集裝箱的焊接作業(yè)中,為了實現(xiàn)高效的作業(yè)需求,焊接機械臂大規(guī)模地應(yīng)用到集裝箱生產(chǎn)線中,而作業(yè)的空間存在較多的障礙物,需要在自動化焊接的過程中考慮碰撞的避免,為了順利地執(zhí)行焊接作業(yè),對機械臂的避障路徑規(guī)劃的研究十分有必要。
針對機械臂的避障路徑規(guī)劃的問題,國內(nèi)外很多學(xué)者都進行了深入的研究。賈慶軒等人[1]將笛卡爾空間障礙向構(gòu)型空間障礙進行轉(zhuǎn)換,然后使用A*算法進行無碰撞路徑規(guī)劃。張云峰等人[2]采用將機械臂從J空間(Joint Space)中隨機采樣后通過正向運動學(xué)映射到C空間(Configuration Space),然后采用改進的RRT算法進行路徑規(guī)劃。姬偉等人[3]采用人工勢場法進行機械臂的路徑規(guī)劃,在障礙物處人工模擬一個斥力場,在目標點處模擬一個引力場,機械臂在這兩個場的作用下運動。韓濤等人[4]采用遺傳算法來進行機械臂的路徑規(guī)劃。尹建軍等人[5]將機械臂工作空間映射到平面的二維空間,再在平面空間上使用A*算法進行路徑規(guī)劃,但是該方法只能使用與指定的場景,缺乏靈活性。以上的這些方法需要精確的環(huán)境構(gòu)建模型,在復(fù)雜的工業(yè)環(huán)境下不能很好地適用。
在本文中,采用強化學(xué)習(xí)的方法來解決避障路徑規(guī)劃的問題,這個方法可以使用一個通用的框架來解決指定的任務(wù)。對于高維空間的復(fù)雜任務(wù),例如機械臂系統(tǒng),基于強化學(xué)習(xí)的無模型方法可以解決這樣的問題。如利用DQN技術(shù)對三個關(guān)節(jié)的機械手臂進行端對端的控制[6],用將深度強化學(xué)習(xí)技術(shù)應(yīng)用于七自由度機械臂的插孔任務(wù)中[7]。q-learning是一個經(jīng)典的強化學(xué)習(xí)方法,由于q-learning算法需要一個巨大的Q表,導(dǎo)致在高維空間占用的內(nèi)存巨大,并且不易收斂,因此,本文使用一種DQN的算法。與以往大多數(shù)碰撞檢測算法不同,這個方法是一個無模型的方法,不需要針對每一種場景來建模,因此具有良好的通用性,該方法分為離線軌跡生成和在線應(yīng)用。最后通過仿真,對本文提出的方法的有效性進行了驗證。
2? 強化學(xué)習(xí)基礎(chǔ)(Foundation of reinforcementlearning)
2.1? ?馬爾科夫決策過程
大多數(shù)強化學(xué)習(xí)算法可以在同一個框架下描述,這個框架稱為馬爾科夫決策過程,簡稱MDP。一個完整的馬爾科夫決策過程可以利用元組(S,A,P,R,γ)來表示。其中S是狀態(tài)集,A是動作集,P是狀態(tài)轉(zhuǎn)移概率,也就是對應(yīng)著環(huán)境和智能體模型,R為回報函數(shù),γ為折扣因子,用于計算累計回報R[8,9],累計回報的計算公式為,其中0≤γ≤1。
定義策略π為在給定狀態(tài)S時,動作集上的分布。
定義狀態(tài)—動作值函數(shù)為:累計回報在狀態(tài)s和動作a處的期望值:
強化學(xué)習(xí)的目標是給定一個馬爾科夫決策過程,尋找最優(yōu)策略π,使該決策下的累計回報期望最大,即:
2.2? ?q-learning算法
機械臂的避障屬于強化學(xué)習(xí)的控制問題,控制問題可以表示為:給定強化學(xué)習(xí)的五個要素:狀態(tài)集S、動作集A、即時獎勵R、衰減因子γ、探索率,求解最優(yōu)的動作價值函數(shù)和最優(yōu)策略。
q-learning算法是一種使用時序差分求解強化學(xué)習(xí)控制問題的方法,這一類強化學(xué)習(xí)的問題求解不需要環(huán)境的狀態(tài)轉(zhuǎn)化模型,是不基于模型的強化學(xué)習(xí)問題求解方法。它屬于時序差分中的離線控制方法,也即會使用兩個控制策略,一個策略用于選擇新的動作,另一個策略用于更新價值函數(shù)[9,10]。
第一個策略,它先用策略在當前狀態(tài)S選擇出動作A,執(zhí)行動作A得到S';第二個策略,基于狀態(tài)S',使用貪婪法選擇A',也就是說,選擇使Q(S',a)最大的動作A'來更新價值函數(shù)。用數(shù)學(xué)公式表示為:
此時選擇的動作只會參與價值函數(shù)的更新,不會真正的執(zhí)行。價值函數(shù)更新后,新的執(zhí)行動作需要基于狀態(tài)S',基于策略一,用策略重新選擇得到用表格表示的動作價值函數(shù),使用貪婪策略,即每次尋找最優(yōu)的動作便可以得到機械臂的控制。
2.3? ?深度Q網(wǎng)絡(luò)(DQN)
在q-learning算法中,動作價值函數(shù)Q(S,a)對應(yīng)著一張表,索引對應(yīng)著狀態(tài)-行為對。值函數(shù)的迭代更新對應(yīng)實際上就是這張表的迭代更新,當狀態(tài)空間的維數(shù)很大,或者狀態(tài)空間是連續(xù)空間,則此時值函數(shù)無法用一張表格來表示,此時可以用函數(shù)逼近的方法來表示價值函數(shù),這個函數(shù)可以用參數(shù)w來表示,最常見的表示方法是使用神經(jīng)網(wǎng)絡(luò)[11],具體的形式為:。
一般情況,使用的網(wǎng)絡(luò)結(jié)構(gòu)為輸入是狀態(tài)S的特征向量,動作集合有多少個動作,神經(jīng)網(wǎng)絡(luò)就有多少個輸出,中間的結(jié)構(gòu)可以DNN、CNN、RNN等,沒有特別的限制。
神經(jīng)網(wǎng)絡(luò)的訓(xùn)練需要帶標簽的樣本,DQN使用經(jīng)驗回放技巧來解決這個問題,也即將每次和環(huán)境交互得到的獎勵與狀態(tài)更新情況都保存在經(jīng)驗池D中,然后從經(jīng)驗池D中采樣m個樣本用于后面目標Q值的更新。
在神經(jīng)網(wǎng)絡(luò)中使用作為輸入,得到所有動作對應(yīng)的Q值輸出。用策略在當前Q值輸出中選擇對應(yīng)的動作A,在狀態(tài)S執(zhí)行當前動作A,得到新狀態(tài)S'下,對應(yīng)的特征向量,獎勵R和終止狀態(tài)標志is_end;也即5元組:,它對應(yīng)的目標Q值為:
由此,根據(jù)反向傳播準則,可以使用均方差損失函數(shù)來更新神經(jīng)網(wǎng)絡(luò)的參數(shù)。
同時,為了減少目標Q值和當前Q值的相關(guān)性,DQN使用兩個結(jié)構(gòu)完全相同的網(wǎng)絡(luò),一個“當前網(wǎng)絡(luò)Q”用來選擇動作和更新模型參數(shù),另一個“目標網(wǎng)絡(luò)Q'”用來計算目標Q值。目標網(wǎng)絡(luò)Q'的網(wǎng)絡(luò)參數(shù)不需要迭代更新,而是每隔一段時間從當前網(wǎng)絡(luò)Q復(fù)制過來,即延時更新。
3? 機械臂避障系統(tǒng)(Obstacle avoidance system of the mechanical arm)
3.1? ?空間機械臂模型
本文將深度強化學(xué)習(xí)技術(shù)應(yīng)用于機械臂的路徑規(guī)劃中,首先要對機械臂進行建模,機械臂采用D-H法建立數(shù)學(xué)模型,如圖1和圖2所示。機械臂相鄰連杠的關(guān)系用一個4*4的齊次變換矩陣來描述,旋轉(zhuǎn)關(guān)節(jié)的齊次變換矩陣的一般形式為:
機械臂末端位置和姿態(tài)的求解是正運動學(xué)問題,表示為各個相鄰齊次變換矩陣的連乘,機械臂的正運動學(xué)方程為:。
3.2? ?碰撞檢測
三維空間障礙物一般具有不規(guī)則的形狀,為了分析專注于核心問題的分析,將三維障礙物簡化為空間球體。強化學(xué)習(xí)每一步需要檢測當前機械臂與環(huán)境的狀態(tài),也即需要判斷機器人的當前位置是否與障礙物發(fā)生碰撞,設(shè)球形障礙物的中心為,半徑為;圓柱體機械臂的半徑為;機械臂軸線的兩個端點分別為、,如圖3所示。
設(shè)障礙物到直線的投影點為:
直線的方向向量為:
根據(jù)AB的空間直線方程,得:
根據(jù)障礙物與投影點的連線與直線相交得:
根據(jù)上面兩式可以求出投影點坐標;進而確定障礙物到機械臂的距離:
障礙物到端點的距離:
碰撞檢測算法的描述為:
(1)對于每個軸
a.若障礙物的投影在線段區(qū)域內(nèi),即,則計算球心到線段AB的距離,如果,則判斷為安全,否則判斷為碰撞。
b.若障礙物的投影不在線段的區(qū)域內(nèi),即,則計算球心到端點的距離,如果,則判斷為安全,否則判斷為碰撞。
(2)若三個軸都不與障礙物發(fā)生碰撞,則判斷為安全,否則判斷為碰撞。
3.3? ?機械臂避障系統(tǒng)相關(guān)參數(shù)的設(shè)定
獎勵r:機械臂每執(zhí)行一個動作,環(huán)境會產(chǎn)生一個獎勵,獎勵函數(shù)的設(shè)置至關(guān)重要,直接影響著算法是否能收斂,針對機械臂路徑規(guī)劃問題,希望機械臂能順利避開障礙物并到達目標點,同時產(chǎn)生的步數(shù)盡量少,因此獎勵函數(shù)的設(shè)置為:
狀態(tài)s:機械臂與環(huán)境的交互產(chǎn)生的狀態(tài),分別用下面的變量表示:末端點的坐標,第三個端點的坐標,是否碰撞,是否到達目標點,末端點與目標點的距離,第三個端點與目標點的距離。將狀態(tài)量用一個向量的形式表示為:。
行為a:機械臂的行為是關(guān)節(jié)的轉(zhuǎn)動的角度,用一個向量的形式表示為:。
3.4? ?基于DQN的械臂路徑規(guī)劃算法的實施
本文采用三層DNN的網(wǎng)絡(luò)作為DQN的網(wǎng)絡(luò)主體,其具體的機械臂避障路徑規(guī)劃算法描述如下:
隨機初始化所有的動作和狀態(tài)對應(yīng)的價值Q,隨機初始化當前Q網(wǎng)絡(luò)的所有參數(shù)w,初始化目標網(wǎng)絡(luò)Q'的參數(shù)w'=w,清空經(jīng)驗回放集合D
1)從環(huán)境中獲得機械臂的初始狀態(tài)S。
4.1? ?實驗配置
本文的仿真環(huán)境在MATLAB和python下搭建,在MATLAB下完成機械臂及碰撞檢測模型的搭建,在python下完成深度強化學(xué)習(xí)模型的搭建。
神經(jīng)網(wǎng)絡(luò)的輸入是機械臂的狀態(tài),用一個10維向量表示:;輸出為機械臂的角度轉(zhuǎn)動量,本文允許機械臂的轉(zhuǎn)角為。
DQN迭代的最大輪數(shù)設(shè)置為10000輪,每一輪最大的步數(shù)設(shè)置為250步;本文設(shè)置的機械臂3個杠長為[50,100,100],起點坐標為(118.3,-68.3,13.3);終點坐標為(50,70,30)。障礙物1的坐標為(40,30,30),障礙物2的坐標為(70,-20,60),障礙物的半徑為20,為了簡化起見,將機械臂設(shè)置為點桿模型。
4.2? ?實驗結(jié)果與分析
機械臂經(jīng)過訓(xùn)練好的神經(jīng)網(wǎng)絡(luò),每一步輸出一個最大Q值得動作,然后使用正運動學(xué)來控制機械臂的行走;機械臂的避障結(jié)果如圖4所示:機械臂經(jīng)過強化學(xué)習(xí)模型的訓(xùn)練,成功地避開兩個障礙物,到達目標點,機械臂的運動步數(shù)為32步,接近于最優(yōu);從圖5可以看出,機械臂每一輪的累計回報逐漸增加,大約在6300輪迭代后收斂;從圖6可以看出,機械臂每一輪的迭代步數(shù)逐漸減少,并最終穩(wěn)定收斂。
5? ?結(jié)論(Conclusion)
本文以點焊機械臂為研究對象,將機械臂在三維空間的自動點焊轉(zhuǎn)化為機械臂的避障路徑規(guī)劃問題。本文首先介紹了強化學(xué)習(xí)的基本原理,然后通過建立機械臂模型,采用深度強化學(xué)習(xí)的方法進行機械臂避障路徑規(guī)劃的求解,分別在MATLAB和TensorFlow平臺上建立機械臂模型和強化學(xué)習(xí)模型;仿真結(jié)果表明,通過一定的訓(xùn)練步驟,機械臂能順利規(guī)劃處一條無碰撞的焊接路徑。相比于傳統(tǒng)的規(guī)劃方法,本文的基于強化學(xué)習(xí)的規(guī)劃方法簡單,而且具有較高的通用性。
參考文獻(References)
[1] 賈慶軒,陳鋼,孫漢旭,等.基于A~*算法的空間機械臂避障路徑規(guī)劃[J].機械工程學(xué)報,2010,46(13):109-115.
[2] 張云峰,馬振書,孫華剛,等.基于改進快速擴展隨機樹的機械臂路徑規(guī)劃[J].火力與指揮控制,2016,41(05):25-30.
[3] 姬偉,程風(fēng)儀,趙德安,等.基于改進人工勢場的蘋果采摘機器人機械手避障方法[J].農(nóng)業(yè)機械學(xué)報,2013,44(11):253-259.
[4] 韓濤,吳懷宇,杜釗君,等.基于遺傳算法的機械臂實時避障路徑規(guī)劃研究[J].計算機應(yīng)用研究,2013,30(05):1373-1376.
[5] 尹建軍,武傳宇,Yang Simon X,等.番茄采摘機器人機械臂避障路徑規(guī)劃[J].農(nóng)業(yè)機械學(xué)報,2012,43(12):171-175;157.
[6] Wonchul Kim,Taewan Kim,et al.Three-link Planar Arm Control Using Reinforcement Learning[C].International Conference on Ubiquitous Robots and Ambient Intelligence,2017:424-428.
[7] Tadanobu Inoue,Giovanni De Magistris,et al.Deep Reinforcement Learning for High Precision Assembly Tasks[C].IEEE International Conference on Intelligent Robots and Systems,2017:819-825.
[8] 劉全,翟建偉,章宗長,等.深度強化學(xué)習(xí)綜述[J].計算機學(xué)報,2018,41(01):1-27.
[9] Kober,Jens,J.Andrew Bagnell,et al.Reinforcement learning in robotics:A survey[C].The International Journal of Robotics Research,2013:1238-1274.
[10] 方小菊.基于強化學(xué)習(xí)的采摘機器人采摘臂避碰設(shè)計[J].農(nóng)機化研究,2017,39(11):198-202.
[11] 王曌,胡立生.基于深度Q學(xué)習(xí)的工業(yè)機械臂路徑規(guī)劃方法[J].化工自動化及儀表,2018,45(02):141-145;171.
作者簡介:
李廣創(chuàng)(1994-),男,碩士生.研究領(lǐng)域:機器學(xué)習(xí),機器人.
程良倫(1965-),男,博士,教授.研究領(lǐng)域:人工智能,工業(yè)大數(shù)據(jù).