?

基于逆強化學習與行為樹的機械臂復雜操作技能學習方法

2024-04-02 03:42宋越杰馬陳昊孟子晗劉元歸
現代電子技術 2024年7期
關鍵詞:操作技能底層機械

宋越杰,馬陳昊,孟子晗,劉元歸

(南京郵電大學自動化學院人工智能學院,江蘇南京 210023)

0 引 言

社會老齡化的加劇與各種意外事故的發生,導致老殘人群數量日益增加,不同程度的肢體殘障對老殘人群的日常生活產生了較大影響。為在一定程度上解決上述問題,除了提供社會支持和無障礙環境外,助老助殘輔助設備的開發也非常重要。隨著機器人技術的發展,機器人在改善或替代受損肢體功能方面的研究,近年來取得了較多有影響力的成果[1],特別是伴隨人工智能技術的引入,機器人在輔助老殘人群日常生活活動操作方面,尤其是在機械臂學習人類的日常生活活動操作技能方面,國內外研究非常深入并取得了較好的進展[2]。

在機械臂學習人類的日常生活活動操作技能方面,針對較為簡單的操作任務,可以分為模仿學習與強化學習兩種不同類型的機器學習方法。模仿學習是一種監督學習方法,它通過觀察和模仿專家的行為來獲取人類操作技能的仿生學習方式[3],具體又可分為軌跡編碼、動態系統及策略過程三種不同類型。在軌跡編碼模仿學習方面,文獻[4]運用基于參數化的高斯混合模型學習了人機協作搬運與裝配操作技能,文獻[5]基于Baxter 協作機器人平臺并運用隱半馬爾科夫模型學習了人類的穿衣技能。動態運動基元作為動態系統模仿學習方法的典型代表,在機器人輔助操作技能學習方面也得到了較好的應用。文獻[6]通過融合動態運動基元與概率運動基元兩類不同的動態系統模仿學習方法,構建了概率動態運動基元學習框架,并在機器人輔助日常生活拾取操作中進行了較好的驗證。針對策略過程模仿學習方法,文獻[7]為提高技能的泛化性能,運用逆強化學習方法學習了變阻抗控制參數及獎勵函數,并通過機器人輔助插孔和杯盤放置實驗驗證了算法的有效性。同模仿學習不同的是,強化學習是通過智能體與環境的交互試錯來學習最優策略的一種方法。文獻[8]運用基于近端策略優化的強化學習算法,通過設計連續獎勵函數,學習了雙臂機器人從床上扶起患者的操作技能軌跡。文獻[9]為在一定程度上解決深度強化學習在機器人本體上的部署問題,通過聯合深度P 網絡及對決深度P 網絡,以減少樣本數量并提高樣本學習效率與穩定性。

上述單純基于模仿學習與強化學習的機器人輔助操作技能,在相對較為簡單的操作任務場景中具有較好的效果,但是面對復雜多階段的操作任務仍存在一定的欠缺。為解決上述問題,基于分層學習的機器人操作技能學習框架日益受到關注。文獻[10]針對復雜多階段的機器人輔助電纜布線任務,提出了一種分層模仿學習框架,其中底層采用行為克隆學習單個夾子布線操作技能,上層采用深度網絡學習不同布線階段的執行順序,二者結合較好地完成了整個布線任務。作者所在課題組前期提出了一種基于分層強化學習的機械臂復雜操作技能學習方法,底層運用SAC(Soft Actor Critic)算法學習子任務操作技能,根據底層得到的子任務最優策略,上層進一步通過改進的最大熵目標強化學習算法學習子任務執行順序[11]。文獻[12]提出了一種基于層次強化學習的機械臂手內魯棒控制方法,通過定義底層操作基元并結合中層深度強化學習網絡,實現了物體位姿及手指接觸點位置發生改變情況下的機器人操作方法,三指機械手的仿真實驗驗證了所提方法的有效性。

上述分層強化學習方法雖取得了一定的效果,但在實際應用中,一方面,底層子任務學習存在樣本效率低、獎勵稀疏等問題,上層任務規劃學習面臨學習時間過長甚至難以完全學會整個復雜任務的問題;另一方面,由于仿真與真實環境之間存在差異,導致仿真環境遷移到真實環境后的策略可能會失效。針對上述問題,本文提出了一種基于逆強化學習與行為樹的機械臂復雜操作技能學習框架,其中,逆強化學習用于學習底層子任務最優策略,然后將具有最優策略的子任務作為節點,在上層構建行為樹來實現不同子任務間的任務規劃,進而實現機械臂復雜操作技能的學習與再現。

1 方 法

1.1 基于逆強化學習和行為樹的機械臂復雜操作技能學習系統

為了解決分層強化學習算法底層子任務學習存在的樣本效率低、獎勵稀疏等問題,上層任務規劃學習面臨學習時間過長甚至難以完全學會整個復雜任務的問題,本文提出了基于逆強化學習和行為樹的機械臂復雜操作技能學習框架。

本文提出的基于逆強化學習和行為樹的機械臂復雜操作技能學習系統框圖如圖1 所示。該系統框圖分為底層子任務學習和上層復雜任務規劃,其中底層子任務學習主要包括復雜任務分割模塊、RL 參數設計模塊、逆強化學習模塊;上層任務規劃主要包括真實環境部署模塊和行為樹構建模塊。主要實現方案為:通過仿真環境構建模塊建立相應的仿真環境,并進行復雜操作任務演示,得到復雜任務演示軌跡;接著通過復雜任務分割模塊進行分割,并確定分割后每個子任務的RL 參數,得到子任務專家策略集合;然后通過逆強化學習模塊獲取每個子任務的最優策略,并部署到真實環境中;最后通過行為樹構建模塊構建行為樹,得到整體最優策略,在真實環境中執行復雜操作任務。

圖1 基于逆強化學習和行為樹的機械臂復雜操作技能學習系統框圖

1.2 基于GAIL 和SAC 的底層子任務學習方法

本文使用文獻[11]所在課題組分割復雜任務的方法,采用基于β過程的自回歸隱馬爾科夫模型分割復雜任務,并且設計了底層子任務的學習方法。

1.2.1 底層子任務學習框架

逆強化學習是利用有限的專家樣本推斷獎勵函數,并根據該獎勵函數尋找最優策略的一種方法。本文采用生成對抗模仿學習[13]從專家演示軌跡中學習到子任務的獎勵函數,在此基礎上進一步根據獎勵函數并通過SAC算法尋找到子任務最優策略,其算法框圖如圖2 所示。

圖2 GAIL+SAC 算法框圖

生成對抗模仿學習主要由生成器和判別器兩個部分組成。生成器根據專家策略產生生成策略,力求使判別器無法分辨其與專家策略的差異;而判別器則旨在辨別生成器產生的生成策略是否是專家策略。生成器和判別器相互博弈,通過不斷對抗,最終訓練出一個優越的獎勵函數和策略網絡。

在得到獎勵函數和策略網絡后,使用SAC 算法進行訓練,通過GAIL 得到獎勵函數和生成策略,SAC 算法不再從頭開始訓練策略,而是在有限的專家經驗基礎上,更高效地訓練出適應性強、性能優越的子任務智能體。

1.2.2 底層子任務學習方法

底層子任務通過GAIL+SAC 框架來學習得到子任務最優策略。

GAIL 包括生成器和判別器的網絡結構。首先為生成器提供少量的專家策略,記為πE,記生成器網絡輸入為子任務專家策略集合πE中的狀態動作對(s,a),輸出為生成器模仿子任務專家策略生成的子任務生成策略πg,記為策略Gw(s,a),生成器的損失函數LG為:

式中:Eπg表示期望值;DΦ(Gw(s,a) )表示判別器D 判斷策略,DΦ(Gw(s,a) )= sigmoid(Gw(s,a)),其中sigmoid 是一種激活函數,Gw(s,a)是專家軌跡的概率。

通過添加熵來鼓勵生成器生成多變的軌跡,熵損失LE為:

式中:σ為熵損失系數;softplus 是一種激活函數。

判別器的輸入為Gw(s,a),輸出為DΦ(Gw(s,a) ),判別器的損失函數LD為:

因此,生成對抗模仿學習模型的總損失函數為:Ltotal=LG+LE+LD。

通過訓練好的判別器D 的輸出作為獎勵函數訓練模仿者策略,所述獎勵函數R(s,a)為:

式中:β表示熵損失權重;DΦ(Gw(s,a) )表示判別器D 判斷策略Gw(s,a)是專家軌跡的概率。

通過GAIL 預訓練得到獎勵函數和策略網絡后,將其引入到SAC 算法進行正式訓練。

SAC 算法的過程是:

1)從經驗池中采樣當前時刻的狀態st、動作at、獎勵r、下一時刻的狀態st+1后,送入策略網絡,輸出下一時刻的策略πθ(st+1)和熵log (πθ(at|st)),同時更新策略網絡參數,更新公式如下:

其中:

2)將經驗池中當前時刻的狀態st、動作at、獎勵r輸出至主值網絡,通過主值網絡中的兩個Q網絡Net1 和Net2 來計算估計Q值Qt(?1)、Qt(?2)。

3)將策略網絡輸出的策略和熵通過目標值網絡中的兩個Q網絡Net1 和Net2 來計算目標Q值,并輸出兩個目標Q值中的較小值,與主值網絡計算的估計Q值作均方誤差計算,其目標函數如下:

同時目標值網絡參數通過主值網絡參數進行軟更新,更新方式如下:

4)主值網絡的參數更新方式如下:

1.3 基于行為樹的上層子任務規劃方法

1.3.1 真實環境部署

現有強化學習方法大多采用先在仿真環境中進行訓練,再部署到真實環境中的方法,但由于仿真環境和真實環境存在一定的誤差,比如建模差異、環境差異、姿態差異等,導致在部署過程中會產生策略失效的問題。

在本文的實驗中,仿真環境與真實環境的差距主要為機械臂末端的姿態差距。為了彌補姿態差距,首先將真實環境中的機械臂置于初始位姿,獲取此時機械臂每個關節的旋轉角度JR1、JR2、JR3、JR4、JR5、JR6以及真實環境中機械臂末端位置xR、yR、zR和姿態的四元數dxR、dyR、dzR、dwR;接著將姿態四元數dxR、dyR、dzR、dwR轉換為歐拉角XR、YR、ZR,在仿真環境中機械臂每個關節的旋轉角度JS1、JS2、JS3、JS4、JS5、JS6置為JR1、JR2、JR3、JR4、JR5、JR6,并獲取此時仿真環境中機械臂的歐拉角XS、YS、ZS;最后求出仿真環境與真實環境中機械臂的姿態差ΔX=XR-XS、ΔY=YR-YS、ΔZ=ZR-ZS。

1.3.2 基于行為樹的上層子任務規劃

行為樹是一種用于描述和控制智能體行為的圖形化模型。它是一種樹形結構,其中每個節點代表一種行為或控制邏輯,主要包括控制節點、裝飾器節點、條件節點、動作節點等。

行為樹的節點構建如圖3 所示。子任務的行為樹執行由一個帶記憶功能的順序節點來確定執行順序,該順序節點的子節點包括一個條件節點和一個動作節點。其中條件節點根據當前環境狀態和任務目標判斷是否滿足執行子策略的前提條件,如果滿足執行條件,則向順序節點返回成功,順序節點繼續執行;如果不滿足執行條件,則返回失敗,順序節點向其父節點返回失敗,直接結束當前回合。動作節點根據當前環境的狀態執行強化學習子策略,并接收實時獎勵,如果實時獎勵大于任務成功獎勵,則向順序節點返回成功,順序節點繼續執行下一個子任務;如果在一定時間后未達到成功獎勵,則向順序節點返回失敗,順序節點向其父節點返回失敗,直接結束當前回合。

圖3 行為樹節點構建

2 實驗與仿真

2.1 實驗任務設計

本實驗的仿真環境通過物理仿真引擎MuJoCo 對基于逆強化學習和行為樹的機械臂復雜操作技能學習進行驗證,所使用的是Kinova Jaco2 機械臂,型號為j2n6s300;真實環境通過rviz 可視化機械臂操作,并通過行為樹來控制機械臂。

為了充分考慮家庭環境中任務的多樣性和復雜性,同時考慮到老年人日常需求,本文將拉開抽屜拿取藥瓶作為實驗任務。

首先建立拉開抽屜拿取藥瓶的實驗場景,如圖4所示。

接著執行拉開抽屜拿取藥瓶的實驗任務,記錄下機械臂末端的軌跡,0 即機械臂末端的位置和姿態。然后采用基于β過程的自回歸隱馬爾科夫模型對所采集的演示數據進行分割,分割結果如圖5 所示。

圖5 機械臂復雜操作任務分割結果

圖5 為位置和四元數隨時間變化的曲線圖,不同顏色的區間表示基于β過程的自回歸隱馬爾科夫模型算法分割得到的不同任務區間。根據四元數可以看出分割出了4 段具有明顯物理意義的分段,分別為抓取抽屜把手(分段①)、拉開抽屜(分段②)、抓取物體(分段⑥)、放置物體(分段⑨)。

最后為所有分割的子任務建立仿真訓練環境,圖6為4個子任務的訓練環境。圖6a)為抓取抽屜把手,任務目標為機械臂末端抓取抽屜把手;圖6b)為拉開抽屜,任務目標為機械臂末端將抽屜把手拉至目標點;圖6c)為抓取物體,任務目標為機械臂抓取抽屜中的物體;圖6d)為放置物體,任務目標為將物體放置到藍色小球處。

圖6 子任務仿真訓練環境

在所有子任務的仿真環境都建立好后,接下來進行實驗參數設置。

2.2 實驗參數設置

2.2.1 子任務專家策略的RL 參數設置

每個子任務的專家策略包括:機械臂當前時刻t的狀態空間St、當前時刻t的動作空間At、下一時刻t+ 1 的狀態空間St+1、當前時刻t的實時獎勵Rt、一個回合結束的最終獎勵Repisode和一個回合開始的標志位Estart。其中狀態空間為所有子任務狀態空間的并集,包括機械臂夾持器1 維、機械臂位置3 維、機械臂姿態3 維、藥瓶位置3 維、抽屜把手位置3 維、藥瓶放置位置3 維、藥瓶放置姿態3 維、目標點位置3 維、目標點姿態3 維,總計25 維;所有子任務的動作空間都是7 維,其中前6 維表示機械臂末端的位置和姿態,第7 維表示末端夾持器開合程度;實時獎勵Rt為機械臂在狀態St時的獎勵函數;最終獎勵Repisode為回合結束后機械臂得到的獎勵;標志位Estart在開始時為1,表示回合開始,其余時刻均為0。

2.2.2 GAIL 與SAC 網絡參數設計

在GAIL 算法的網絡結構中,預訓練的總時間步total_timestep 設為100 萬,學習率learning_rate 設為7×10-9,預訓練的迭代次數n_epochs 設為10 000,驗證間隔interval 設置為100,每個epoch 中訓練策略的步數g_step設為3,每個epoch 中訓練鑒別器的步數d_step 設為3,獎勵分配器步長d_stepsize 設為0.000 3,生成器熵損失系數σ設為0.001,判別器輸出獎勵函數的熵損失權重β設為10-8。

在SAC算法的網絡結構中,每個網絡層之間的激活函數采用ReLU函數,經驗池大小buffer_size設置為16 384,每次訓練從經驗池中采樣樣本數量batch_size 設為256,學習率learning_rate 為7×10-5,折扣因子gamma 為0.99,Actor網絡和Critic網絡均采用Adam 優化器進行優化。

2.3 實驗結果

2.3.1 底層子任務訓練結果

底層子任務的訓練過程中采用GAIL+SAC 算法對子策略進行訓練,并將其與僅采用SAC 算法的訓練進行對比,對比結果展示在圖7 中。

圖7 底層子任務訓練結果

觀察到GAIL+SAC 方法所需的時間步遠遠少于僅采用SAC 方法的情況。在放置物體任務的過程中,由于龐大的狀態空間,SAC 算法訓練的模型甚至出現了局部最優的情況。

接著對每個子任務的最優策略在仿真環境中進行25 次測試,測試結果見表1。研究表明,采用GAIL+SAC 算法的成功率明顯高于僅采用SAC 算法的情況。

表1 子任務最優策略在仿真環境中的成功率 %

2.3.2 上層復雜任務執行結果

基于復雜任務的執行邏輯,構建了如圖8 所示的行為樹。其中行為樹的葉子節點為已完成真實環境部署的強化學習子策略,在執行前需要判斷是否滿足條件,如果滿足就執行子策略,如果沒有滿足條件,直接結束當前回合。

圖8 基于行為樹的子任務規劃

為與傳統強化學習算法進行對比,根據所構建的行為樹,分別采用傳統SAC 算法和本文所提出的GAIL+SAC 算法,進行了真實環境中的機械臂復雜操作技能對比實驗,結果分別如圖9 和圖10 所示,在25 次測試實驗中,傳統SAC 算法的成功率為28%,GAIL+SAC 在真實環境中成功率為76%。由于傳統SAC 算法在仿真環境中放置物體子策略的成功率較低,導致整體任務的成功率偏低。而本文提出的算法在仿真環境中成功率較高,但由于并不能完全消除仿真環境和真實環境的差距,在真實環境中的成功率有所降低。

圖9 真實環境中基于SAC 的機械臂復雜操作技能再現

圖10 真實環境中基于GAIL+SAC 的機械臂復雜操作技能再現

以上實驗結果表明,基于逆強化學習和行為樹的復雜操作技能學習方法成功完成了從仿真環境到真實環境的部署,并且在真實場景中的成功率高于傳統強化學習算法。

3 結 語

本文提出一種基于逆強化學習和行為樹的機械臂復雜操作技能學習方法,用于解決傳統分層強化學習方法底層子任務樣本效率低、獎勵稀疏,上層學習時間過長,以及策略在真實環境中部署困難的問題。該方法底層采用逆強化算法學習子策略,保證了子任務的學習效率;上層通過行為樹來規劃子任務,構建整體策略。實驗結果表明,該方法成功學習到了復雜操作任務,大大減少了訓練的時間,并在性能上優于其他算法。

猜你喜歡
操作技能底層機械
航天企業提升采購能力的底層邏輯
機械裝配中鉗工的操作技能分析
關于學生實驗操作技能省級測試的思考——以高中生物學為例
調試機械臂
簡單機械
按摩機械臂
北京再辦塔機司機操作技能競賽
PDCA循環在護生中醫操作技能培訓中的應用研究
回到現實底層與悲憫情懷
中國底層電影研究探略
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合