趙寅甫,馮正勇
(西華師范大學電子信息工程學院,四川南充 637009)
機械臂作為機器人領域中使用最廣的一種機械裝置,被應用在各個行業,如從工業生產中的倉庫管理、汽車制造,到農業生產中的碼垛和瓜果產品的采摘分揀。在工業生產中,許多工廠都是使用示教法對機械臂進行控制的,即事先通過手動拖拽或是使用示教器調整的方式,在移動機械臂到達每一個目標位置時保存各個目標的位置信息,然后使機械臂按照目標點的順序移動。然而,如果在新的應用中目標位置產生變化,則需要重新示教,因此,這種采用示教的方法不僅耗費人力,靈活性也有所欠缺。除了示教法,應用最為普遍的傳統控制方法通過運動規劃理論對機械臂進行控制。目前的運動規劃理論包括正運動學和逆運動學,正運動學的作用是根據機械臂的各軸轉動角度計算得到機械臂末端的位置,而逆運動學則根據機械臂末端的目標位置計算得到各軸所需的轉動角度。為了實現更靈活的機械臂應用,越來越多的研究人員開始將人工智能的數據驅動方法應用在機械臂的控制中。本文也將引入數據驅動的深度強化學習算法來解決機械臂的智能控制問題。
強化學習是人工智能的一個分支,其通過與環境的交互得到訓練數據,利用數據的訓練得到控制模型,進而實現智能決策。當前,為了提升模型的表征能力,研究者將深度神經網絡引入到強化學習中,將兩者優勢互補,提出了可在復雜環境中感知并決策的深度強化學習算法。深度強化學習算法能夠在高維度和連續狀態空間下有效工作,其研究已經在圍棋對弈、Atari 游戲等領域取得了較大進展。對于同屬連續狀態空間的機械臂控制問題,深度強化學習算法也可以很好地加以解決,但存在訓練時間消耗巨大的問題。本文提出針對機械臂控制模型先2D 后3D 的訓練方法,在保證應用效果的情況下縮短訓練時間。
深度強化學習算法作為一種端到端的學習算法,具有很強的通用性,研究者已經利用深度強化學習算法解決了很多智能決策問題:文獻[1]提出深度強化學習算法DQN,使智能體學會了玩Atari 游戲,并打破了人類保持的記錄;文獻[2]同樣在Atari 游戲中使用深度強化學習實現了多智能體之間的對戰與合作;文獻[3]利用深度強化學習優化了仿人機器人的行走穩定性;文獻[4]通過策略搜索的方式完成了飛行器的自主飛行;文獻[5]在OpenAI Gym 環境下,使用深度強化學習算法完成了對不同結構的雙足、四足機器人的仿真訓練,并比較了不同算法在訓練效果上的差異;文獻[6]將深度強化學習加入到目標檢測算法中,加快了目標外框的檢測速度;文獻[7]在超參數的優化中使用強化學習算法,并提出了狀態向量、獎勵函數和動作的定義方法。
在深度強化學習算法中有以下5 大要素:智能體(Agent),環境(Environment),動作(Action),狀態(State),獎勵(Reward)。如圖1 所示,智能體實時地和環境進行交互,智能體觀測到狀態(狀態由狀態向量表征,即描述當前狀態的物理量個數和取值)后根據策略輸出動作(機械臂各個關節電機的旋轉角度),而動作會作用于環境進而影響狀態。此外,環境還會根據動作和狀態給智能體一個獎勵(由獎勵函數表征,描述是否達到了目標的一個反饋量化值),而智能體則根據動作狀態和獎勵更新自身選擇動作的策略[8]。通過在環境中的不斷嘗試,獲得最大的獎勵值,學習到從狀態到動作的映射,這種映射就是策略,以參數化的深度神經網絡表示。

圖1 強化學習算法流程Fig.1 Procedure of reinforcement learning algorithm
本文中使用的深度強化學習算法是深度確定性策略梯度(Deep Deterministic Policy Gradient,DDPG)算法[9],該算法流程如圖2 所示。DDPG 算法使用確定性策略梯度(Deterministic Policy Gradient,DPG)算法[10]中的策略網絡,采用Actor-Critic 框架[11],并結合深度Q 網絡(Deep Q-Network,DQN)[1]中的經驗回放以及目標網絡(Target_Net)和評估網絡(Eval_Net)分開的技巧,在針對連續動作空間的環境中取得了不錯的效果。在DDPG 算法架構中包含4 個神經網絡,分別是Actor 的目標網絡和評估網絡以及Critic 的目標網絡和評估網絡,且2 個Actor 網絡的結構完全相同,2 個Critic 網絡的結構完全相同。

圖2 DDPG 算法流程Fig.2 Procedure of DDPG algorithm
DDPG 算法描述如下:
算法1DDPG
輸入Actor 評估網絡,參數為θ;Actor 目標網絡,參數為θ′;Critic 評估網絡,參數為ω;Actor 目標網絡,參數為ω′;衰減因子γ;軟更新權重系數τ;批量梯度下降的樣本數m;目標網絡參數更新步數C;最大迭代次數T
輸出最優的Actor 評估網絡參數θ,最優的Critic 評估網絡參數ω
1)隨機初始化θ、ω,令θ′=θ,ω′=ω,并清空經驗回放集合D。
2)從1 到T(訓練總回合)進行迭代。
(1)初始化最初狀態s。
(2)Actor 評估網絡基于狀態s得到動作a=πθ(s)+N。
(3)執行動作a,得到新的狀態s′和獎勵r,判斷是否為終止狀態done。
(4)將{s,a,r,s′,done}保存在經驗回放集合D中。

(7)使用J(θ)=作為損失函數,通過神經網絡的反向傳播來更新Actor評估網絡的參數θ。
(8)若T%C=1,則通過θ′←τθ+(1-τ)θ′,ω′←τω+(1-τ)ω′更新Actor 目標網絡和Critic 目標網絡的參數θ′和ω′。
(9)若s′為終止狀態,則本輪迭代結束,否則s=s′,并回到步驟(2)。
在深度強化學習中,狀態向量、獎勵函數是決定算法性能的重要組成部分。一個好的狀態向量,能夠全面地表征當前所處環境的特征,加快模型訓練速度。一個適合的獎勵函數,能夠準確地表征模型任務目標,加快模型收斂速度。在將深度強化學習算法應用于真實問題時,如何設置狀態向量和獎勵函數是算法成功的關鍵,因此,需要使用不同的設置方式進行訓練,對兩者的收斂性和穩定性進行比較分析,尋找最優的設置方式。
對于狀態向量的設置方式,往往根據具體問題的物理量通過經驗設置。對于獎勵函數的設置方式:文獻[12]分析了不同獎勵方式對強化學習模型最終效果的影響;文獻[13]針對傳統Q 算法對于機器人獎勵函數的定義較為寬泛,導致機器人學習效率不高的問題,提出一種回報詳細分類Q(RDC-Q)學習算法,算法的收斂速度相對傳統回報Q算法有明顯提高。文獻[14-16]都是基于內在啟發的思路對環境的感知和外部獎勵信號進行處理,轉化成自己的內在獎勵。
關于針對機械臂的深度強化學習算法訓練,已有許多研究者進行了不同的研究和嘗試:文獻[17]使用DDPG 算法以機械臂各個關節角度作為狀態向量,針對獎勵函數設置問題,提出包含單步獎勵、回合稀疏獎勵和方向獎勵的復合獎勵函數,并加入優先經驗回放的概念,提升了算法的訓練速度;文獻[18]在OpenAI Gym 的FetchPickAndPlace-v1 環境中,專門針對機械臂控制進行了獎勵函數的設計,通過不同獎勵函數訓練,得到了機械臂通過不同的軌跡到達目標位置的策略;文獻[19]采用人工免疫原理對RBF 網絡訓練數據集的泛化能力在線調整隱層結構,生成RBF 網絡隱層,當網絡結構確定時,采用遞推最小二乘法確定網絡連接權值,由此對神經網絡的網絡結構和連接權進行自適應調整和學習,大幅提高了機械臂逆運動學求解精度。文獻[20]提出了基于增廣示教的機械臂軌跡規劃方法,在經驗回放中提前加入少量的示教信息,有效地降低了訓練初期的難度,獲得了更優秀的性能,并在Gazebo仿真平臺下的Kent6 V2 機械臂上得到了驗證。在訓練耗時方面:文獻[21]在Unity 中搭建了包括機械臂和目標物品的3D 模型,直接在3D 模型中通過DDPG 算法控制機械臂到達目標下方,并將其托舉起,整個訓練過程平均消耗33 h,相較于傳統調試方法效率提升近61%。
本文提出先簡化模型(2D 模型)再復雜模型(3D模型)的訓練方法,使尋找合理的狀態向量設置和獎勵函數形式的訓練時長大幅縮短,由此構建能控制3D 機械臂到達目標位置的深度強化學習算法模型,提升算法效率。
本文通過深度強化學習算法進行訓練得到機械臂的控制模型(一個深度神經網絡),其動作是機械臂各轉動軸的轉動角度,而對于狀態向量和獎勵函數形式的選取,則根據經驗使用不同的設置方式進行訓練。
深度強化學習算法的訓練過程是異常耗時的,通過對訓練模型采取不同的狀態向量和獎勵函數形式來尋找合理的設置方式,會使得訓練時長成倍增長。為縮減訓練時間,本文先在不具備物理屬性的2D 機械臂仿真模型上進行訓練,這一過程主要目的是找到合理的狀態向量和獎勵函數設置方式,然后基于此設置方式,遷移到具備物理屬性的3D 仿真環境中進行訓練,3D 仿真環境中的機械臂和現實世界的真實機械臂在物理屬性上已經非常接近。本文采用的真實機械臂是越疆科技的Dobot Magician,其在3D 仿真環境Gazebo中的模型與真是機械臂物理屬性一致。
本文所使用的2D 機械臂仿真效果如圖3 所示[22](彩色效果見《計算機工程》官網HTML 版)。該2D 機械臂環境以圖中左下角為坐標原點,長寬均為400;圖中藍色方塊為目標區域,中心點坐標為(100,100),長寬均為40;兩連桿為一個二軸機械臂,a 點為固定關節,在整個環境的正中心,坐標為(200,200),b 點和c 點均為自由關節,c 點為機械臂末端,連桿ab 和連桿bc 的長度均為200,用l代替,兩者與水平正方向的夾角分別記為θ、α,活動范圍均為[0,2π]。根據θ、α和l可以得到中端b 和末端c 的坐標分別為(200+l×cosθ,200+l×sinθ)、(200+l×cosθ+l×cosα,200+l×sinθ+l×sinα)。本文根據目標位置坐標點、自身狀態等環境信息,使用不同的狀態向量和獎勵函數設置方式進行訓練,輸出θ、α的改變量,從而控制末端c到達目標區域(藍色方塊)。收集每回合的總獎勵值和總步數,對比不同設置方式的收斂速度和穩定性,找到合理的狀態向量和獎勵函數設置方式。

圖3 2D 機械臂仿真效果示意圖Fig.3 Schematic diagram of 2D manipulator simulation effect
2.1.1 狀態向量設置
一個好的狀態向量能夠完整地展示整個學習的環境特征,這樣深度強化學習模型就能夠依據這些狀態從中學到有價值的策略。好的狀態向量在加速模型的收斂速度以及提高模型穩定性上起到了至關重要的作用。
經過分析,最終得到如表1 所示的6 種針對2D機械臂的狀態向量設置方法,其中各個參數的具體含義見表2。

表1 2D 機械臂狀態向量設置方式Table 1 2D manipulator status vector setting patterns

表2 2D 機械臂狀態向量中各參數含義Table 2 Definition of each parameter in 2D manipulator state vector
本文將以上狀態設置方法應用在深度強化學習算法中,進行500 回合每回合最大200 步的訓練,得到結果如圖4~圖9 所示。可以看出:使用標準化后的末端和中端坐標以及末端和中端與目標之間的直線距離和x、y兩軸距離作為狀態的效果最好,收斂速度快,且收斂后穩定其原因如下:

圖4 使用2D 機械臂狀態向量設置方式1 的訓練結果Fig.4 Training results while using 2D manipulator status vector setting pattern 1

圖5 使用2D 機械臂狀態向量設置方式2 的訓練結果Fig.5 Training results while using 2D manipulator status vector setting pattern 2

圖6 使用2D 機械臂狀態向量設置方式3 的訓練結果Fig.6 Training results while using 2D manipulator status vector setting pattern 3

圖7 使用2D 機械臂狀態向量設置方式4 的訓練結果Fig.7 Training results while using 2D manipulator status vector setting pattern 4

圖8 使用2D 機械臂狀態向量設置方式5 的訓練結果Fig.8 Training results while using 2D manipulator status vector setting pattern 5

圖9 使用2D 機械臂狀態向量設置方式6 的訓練結果Fig.9 Training results while using 2D manipulator status vector setting pattern 6
1)狀態向量中不僅包含了末端坐標,而且還包含了末端與目標的位置關系和中端與目標的位置關系,這樣的狀態向量能夠更詳細地描述機械臂整體與目標之間相對位置信息,也使算法模型能夠更全面地了解和學習環境。
2)使用標準化或歸一化對神經網絡訓練的輸入量進行預處理能夠消除奇異樣本對訓練的影響,加快網絡模型的收斂速度。
綜合考慮以上因素,本文最終選擇表1 中第6 種設置方式作為針對2D 機械臂的最優狀態向量。
2.1.2 獎勵函數設置
在強化學習領域,獎勵函數的設計對于算法收斂速度和穩定性方面也起到關鍵作用。一個好的獎勵函數能夠清晰地告訴強化學習算法任務目標是什么,強化學習算法就能夠依據獎勵函數快速學習。
本文分別選用如表3 中的4 種獎勵函數設置方式,各參數的具體含義見表4。選用以上4 種獎勵函數設置方式進行500 回合每回合最大200 步的訓練,得到結果如圖10~圖13 所示。

圖10 使用2 維機械臂獎勵函數設置方式1 的訓練結果Fig.10 Training results while using 2D manipulator reward function setting pattern 1

圖11 使用2 維機械臂獎勵函數設置方式2 的訓練結果Fig.11 Training results while using 2D manipulator reward function setting pattern 2

圖12 使用2 維機械臂獎勵函數設置方式3 的訓練結果Fig.12 Training results while using 2D manipulator reward function setting pattern 3

圖13 使用2 維機械臂獎勵函數設置方式4 的訓練結果Fig.13 Training results while using 2D manipulator reward function setting pattern 4

表3 2 維機械臂獎勵函數設置方式Table 3 2D manipulator reward function setting patterns

表4 2 維機械臂獎勵函數中各參數含義Table 4 Definition of each parameter in 2D manipulator reward function
可以看出:使用執行動作前后距離差作為獎勵并沒有使強化學習算法很好地了解到任務目的,每回合步數和每回合獎勵均未收斂;當單純地使用末端與目標之間直線距離的負值時,收斂后的穩定性最好;而使用末端與目標之間x、y兩軸距離和的負值作為獎勵時,收斂速度最快,但是收斂后的穩定性不足;在使用負的距離獎勵加上到達目標獎勵時,雖然每回合獎勵的收斂速度快,但是在收斂后會出現“甩手”的現象(每回合步數大,但是獎勵值小,機械臂末端在目標區域邊緣晃動)。最終,本文選擇使用結果最為穩定的末端與目標之間直線距離的負值作為針對2D 機械臂的最優獎勵函數。
Dobot Magician 機械臂結構如圖14 所示,由圖中可知,該機械臂主要由底座、大臂、小臂和末端執行器4 個部分組成,連接處有4 個旋轉關節Joint1~Joint4,其中,Joint1~Joint3 用于控制末端位置,而Joint4 則用于控制末端執行器的角度。圖15 為在Gazebo 仿真環境下的3D 機械臂,是通過越疆公司給出的Urdf模型導出的,其中并沒有包含末端執行器,其余機械結構和實物一致。圖16 為實物機械臂的圖片。

圖14 Dobot Magician 結構Fig.14 Structure of Dobot Magician

圖15 Gazebo 中 的Dobot Magician 模型Fig.15 Dobot Magician model in Gazebo

圖16 實物Dobot Magician 機械臂Fig.16 Real Dobot Magician
根據2.1 節中仿真訓練確定的2D 機械臂環境下的最優狀態向量和獎勵函數,本文將其遷移到3D 環境中,加入了z軸的信息,并對3D 機械臂進行標定,使用機械臂的第三軸Joint3 作為中端mid,末端執行器作為末端end,得到狀態向量如下:

使用末端與目標之間的距離的負值作為獎勵:

各參數的具體含義見表5。

表5 3 維機械臂各參數含義Table 5 Definition of each parameter in 3D manipulator
在對獎勵函數和狀態向量設置完成后,使用固定的目標位置,在Gazebo 仿真環境下進行訓練,每次500 回合,每回合最大200 步,最終得到的訓練結果如圖17~圖18 所示??梢钥闯觯罕疚氖褂玫莫剟詈瘮岛蜖顟B向量設置在3D 機械臂環境下,針對固定目標位置的訓練效果好,收斂速度快,且收斂后穩定,并沒有出現“甩手”的情況。

圖17 固定目標位置的訓練結果1Fig.17 Training result 1 for fixed target positions

圖18 固定目標位置的訓練結果2Fig.18 Training result 2 for fixtarget positions
在完成對固定目標位置的訓練后,為了能夠在真實場景下應用,對目標位置在每回合開始前進行隨機的初始化,使用相同的獎勵函數和狀態向量設置進行訓練,每次3 000 回合,每回合最大200 步,最終得到的訓練結果如圖19~圖20 所示??梢钥闯觯好炕睾系目偛綌岛涂偑剟钤? 000 回合左右收斂,且收斂后的穩定性良好。

圖19 隨機目標位置的訓練結果1Fig.19 Training result 1 for random target positions

圖20 隨機目標位置的訓練結果2Fig.20 Training result 2 for random target positions
以上結果充分說明了本文所使用的獎勵函數和狀態向量能夠很好地描述機械臂所處的環境與任務目標,同時加快強化學習模型的收斂速度,提高收斂后的穩定性。
本文采用2D 機械臂仿真完成狀態向量和獎勵函數的設置方式選擇,并成功遷移到3D 機械臂的訓練上。在總耗時方面,包括2D 機械臂仿真中狀態向量和獎勵函數的探索以及3D 機械臂針對隨機目標的訓練,平均共消耗約16 h。與文獻[21]中直接在3D 機械臂上訓練方式相比,訓練時間提升了近52%。最終,訓練得到的控制模型部署在真實機械臂上,其控制效果達到了應用要求,具體可見https://www.bilibili.com/video/BV12v41117jQ 視頻。
在機器人應用領域,一個可以快速控制機械臂到達目標位置完成抓取和擺放的機械臂控制器,能夠在很大程度上提高生產效率。本文使用基于數據驅動的深度強化學習算法DDPG 代替傳統運動學求解方法,針對2D 機械臂進行訓練仿真找到合理的狀態向量和獎勵函數設置方式,并將其遷移到3D 機械臂的仿真環境中進行訓練,最終得到能夠快速控制真實機械臂的控制模型。在訓練中考慮到強化學習算法訓練時間冗長,本文提出先2D 后3D 的訓練方式,訓練時間相較于直接3D 訓練縮短近52%。后續將構建存在障礙物的機械臂操作環境,通過深度強化學習算法訓練得到控制模型,進一步提升機械臂操控的智能化水平。