宋越杰,馬陳昊,孟子晗,劉元歸
(南京郵電大學(xué)自動化學(xué)院人工智能學(xué)院,江蘇南京 210023)
社會老齡化的加劇與各種意外事故的發(fā)生,導(dǎo)致老殘人群數(shù)量日益增加,不同程度的肢體殘障對老殘人群的日常生活產(chǎn)生了較大影響。為在一定程度上解決上述問題,除了提供社會支持和無障礙環(huán)境外,助老助殘輔助設(shè)備的開發(fā)也非常重要。隨著機器人技術(shù)的發(fā)展,機器人在改善或替代受損肢體功能方面的研究,近年來取得了較多有影響力的成果[1],特別是伴隨人工智能技術(shù)的引入,機器人在輔助老殘人群日常生活活動操作方面,尤其是在機械臂學(xué)習(xí)人類的日常生活活動操作技能方面,國內(nèi)外研究非常深入并取得了較好的進展[2]。
在機械臂學(xué)習(xí)人類的日常生活活動操作技能方面,針對較為簡單的操作任務(wù),可以分為模仿學(xué)習(xí)與強化學(xué)習(xí)兩種不同類型的機器學(xué)習(xí)方法。模仿學(xué)習(xí)是一種監(jiān)督學(xué)習(xí)方法,它通過觀察和模仿專家的行為來獲取人類操作技能的仿生學(xué)習(xí)方式[3],具體又可分為軌跡編碼、動態(tài)系統(tǒng)及策略過程三種不同類型。在軌跡編碼模仿學(xué)習(xí)方面,文獻[4]運用基于參數(shù)化的高斯混合模型學(xué)習(xí)了人機協(xié)作搬運與裝配操作技能,文獻[5]基于Baxter 協(xié)作機器人平臺并運用隱半馬爾科夫模型學(xué)習(xí)了人類的穿衣技能。動態(tài)運動基元作為動態(tài)系統(tǒng)模仿學(xué)習(xí)方法的典型代表,在機器人輔助操作技能學(xué)習(xí)方面也得到了較好的應(yīng)用。文獻[6]通過融合動態(tài)運動基元與概率運動基元兩類不同的動態(tài)系統(tǒng)模仿學(xué)習(xí)方法,構(gòu)建了概率動態(tài)運動基元學(xué)習(xí)框架,并在機器人輔助日常生活拾取操作中進行了較好的驗證。針對策略過程模仿學(xué)習(xí)方法,文獻[7]為提高技能的泛化性能,運用逆強化學(xué)習(xí)方法學(xué)習(xí)了變阻抗控制參數(shù)及獎勵函數(shù),并通過機器人輔助插孔和杯盤放置實驗驗證了算法的有效性。同模仿學(xué)習(xí)不同的是,強化學(xué)習(xí)是通過智能體與環(huán)境的交互試錯來學(xué)習(xí)最優(yōu)策略的一種方法。文獻[8]運用基于近端策略優(yōu)化的強化學(xué)習(xí)算法,通過設(shè)計連續(xù)獎勵函數(shù),學(xué)習(xí)了雙臂機器人從床上扶起患者的操作技能軌跡。文獻[9]為在一定程度上解決深度強化學(xué)習(xí)在機器人本體上的部署問題,通過聯(lián)合深度P 網(wǎng)絡(luò)及對決深度P 網(wǎng)絡(luò),以減少樣本數(shù)量并提高樣本學(xué)習(xí)效率與穩(wěn)定性。
上述單純基于模仿學(xué)習(xí)與強化學(xué)習(xí)的機器人輔助操作技能,在相對較為簡單的操作任務(wù)場景中具有較好的效果,但是面對復(fù)雜多階段的操作任務(wù)仍存在一定的欠缺。為解決上述問題,基于分層學(xué)習(xí)的機器人操作技能學(xué)習(xí)框架日益受到關(guān)注。文獻[10]針對復(fù)雜多階段的機器人輔助電纜布線任務(wù),提出了一種分層模仿學(xué)習(xí)框架,其中底層采用行為克隆學(xué)習(xí)單個夾子布線操作技能,上層采用深度網(wǎng)絡(luò)學(xué)習(xí)不同布線階段的執(zhí)行順序,二者結(jié)合較好地完成了整個布線任務(wù)。作者所在課題組前期提出了一種基于分層強化學(xué)習(xí)的機械臂復(fù)雜操作技能學(xué)習(xí)方法,底層運用SAC(Soft Actor Critic)算法學(xué)習(xí)子任務(wù)操作技能,根據(jù)底層得到的子任務(wù)最優(yōu)策略,上層進一步通過改進的最大熵目標強化學(xué)習(xí)算法學(xué)習(xí)子任務(wù)執(zhí)行順序[11]。文獻[12]提出了一種基于層次強化學(xué)習(xí)的機械臂手內(nèi)魯棒控制方法,通過定義底層操作基元并結(jié)合中層深度強化學(xué)習(xí)網(wǎng)絡(luò),實現(xiàn)了物體位姿及手指接觸點位置發(fā)生改變情況下的機器人操作方法,三指機械手的仿真實驗驗證了所提方法的有效性。
上述分層強化學(xué)習(xí)方法雖取得了一定的效果,但在實際應(yīng)用中,一方面,底層子任務(wù)學(xué)習(xí)存在樣本效率低、獎勵稀疏等問題,上層任務(wù)規(guī)劃學(xué)習(xí)面臨學(xué)習(xí)時間過長甚至難以完全學(xué)會整個復(fù)雜任務(wù)的問題;另一方面,由于仿真與真實環(huán)境之間存在差異,導(dǎo)致仿真環(huán)境遷移到真實環(huán)境后的策略可能會失效。針對上述問題,本文提出了一種基于逆強化學(xué)習(xí)與行為樹的機械臂復(fù)雜操作技能學(xué)習(xí)框架,其中,逆強化學(xué)習(xí)用于學(xué)習(xí)底層子任務(wù)最優(yōu)策略,然后將具有最優(yōu)策略的子任務(wù)作為節(jié)點,在上層構(gòu)建行為樹來實現(xiàn)不同子任務(wù)間的任務(wù)規(guī)劃,進而實現(xiàn)機械臂復(fù)雜操作技能的學(xué)習(xí)與再現(xiàn)。
為了解決分層強化學(xué)習(xí)算法底層子任務(wù)學(xué)習(xí)存在的樣本效率低、獎勵稀疏等問題,上層任務(wù)規(guī)劃學(xué)習(xí)面臨學(xué)習(xí)時間過長甚至難以完全學(xué)會整個復(fù)雜任務(wù)的問題,本文提出了基于逆強化學(xué)習(xí)和行為樹的機械臂復(fù)雜操作技能學(xué)習(xí)框架。
本文提出的基于逆強化學(xué)習(xí)和行為樹的機械臂復(fù)雜操作技能學(xué)習(xí)系統(tǒng)框圖如圖1 所示。該系統(tǒng)框圖分為底層子任務(wù)學(xué)習(xí)和上層復(fù)雜任務(wù)規(guī)劃,其中底層子任務(wù)學(xué)習(xí)主要包括復(fù)雜任務(wù)分割模塊、RL 參數(shù)設(shè)計模塊、逆強化學(xué)習(xí)模塊;上層任務(wù)規(guī)劃主要包括真實環(huán)境部署模塊和行為樹構(gòu)建模塊。主要實現(xiàn)方案為:通過仿真環(huán)境構(gòu)建模塊建立相應(yīng)的仿真環(huán)境,并進行復(fù)雜操作任務(wù)演示,得到復(fù)雜任務(wù)演示軌跡;接著通過復(fù)雜任務(wù)分割模塊進行分割,并確定分割后每個子任務(wù)的RL 參數(shù),得到子任務(wù)專家策略集合;然后通過逆強化學(xué)習(xí)模塊獲取每個子任務(wù)的最優(yōu)策略,并部署到真實環(huán)境中;最后通過行為樹構(gòu)建模塊構(gòu)建行為樹,得到整體最優(yōu)策略,在真實環(huán)境中執(zhí)行復(fù)雜操作任務(wù)。
圖1 基于逆強化學(xué)習(xí)和行為樹的機械臂復(fù)雜操作技能學(xué)習(xí)系統(tǒng)框圖
本文使用文獻[11]所在課題組分割復(fù)雜任務(wù)的方法,采用基于β過程的自回歸隱馬爾科夫模型分割復(fù)雜任務(wù),并且設(shè)計了底層子任務(wù)的學(xué)習(xí)方法。
1.2.1 底層子任務(wù)學(xué)習(xí)框架
逆強化學(xué)習(xí)是利用有限的專家樣本推斷獎勵函數(shù),并根據(jù)該獎勵函數(shù)尋找最優(yōu)策略的一種方法。本文采用生成對抗模仿學(xué)習(xí)[13]從專家演示軌跡中學(xué)習(xí)到子任務(wù)的獎勵函數(shù),在此基礎(chǔ)上進一步根據(jù)獎勵函數(shù)并通過SAC算法尋找到子任務(wù)最優(yōu)策略,其算法框圖如圖2 所示。
圖2 GAIL+SAC 算法框圖
生成對抗模仿學(xué)習(xí)主要由生成器和判別器兩個部分組成。生成器根據(jù)專家策略產(chǎn)生生成策略,力求使判別器無法分辨其與專家策略的差異;而判別器則旨在辨別生成器產(chǎn)生的生成策略是否是專家策略。生成器和判別器相互博弈,通過不斷對抗,最終訓(xùn)練出一個優(yōu)越的獎勵函數(shù)和策略網(wǎng)絡(luò)。
在得到獎勵函數(shù)和策略網(wǎng)絡(luò)后,使用SAC 算法進行訓(xùn)練,通過GAIL 得到獎勵函數(shù)和生成策略,SAC 算法不再從頭開始訓(xùn)練策略,而是在有限的專家經(jīng)驗基礎(chǔ)上,更高效地訓(xùn)練出適應(yīng)性強、性能優(yōu)越的子任務(wù)智能體。
1.2.2 底層子任務(wù)學(xué)習(xí)方法
底層子任務(wù)通過GAIL+SAC 框架來學(xué)習(xí)得到子任務(wù)最優(yōu)策略。
GAIL 包括生成器和判別器的網(wǎng)絡(luò)結(jié)構(gòu)。首先為生成器提供少量的專家策略,記為πE,記生成器網(wǎng)絡(luò)輸入為子任務(wù)專家策略集合πE中的狀態(tài)動作對(s,a),輸出為生成器模仿子任務(wù)專家策略生成的子任務(wù)生成策略πg(shù),記為策略Gw(s,a),生成器的損失函數(shù)LG為:
式中:Eπg(shù)表示期望值;DΦ(Gw(s,a) )表示判別器D 判斷策略,DΦ(Gw(s,a) )= sigmoid(Gw(s,a)),其中sigmoid 是一種激活函數(shù),Gw(s,a)是專家軌跡的概率。
通過添加熵來鼓勵生成器生成多變的軌跡,熵損失LE為:
式中:σ為熵損失系數(shù);softplus 是一種激活函數(shù)。
判別器的輸入為Gw(s,a),輸出為DΦ(Gw(s,a) ),判別器的損失函數(shù)LD為:
因此,生成對抗模仿學(xué)習(xí)模型的總損失函數(shù)為:Ltotal=LG+LE+LD。
通過訓(xùn)練好的判別器D 的輸出作為獎勵函數(shù)訓(xùn)練模仿者策略,所述獎勵函數(shù)R(s,a)為:
式中:β表示熵損失權(quán)重;DΦ(Gw(s,a) )表示判別器D 判斷策略Gw(s,a)是專家軌跡的概率。
通過GAIL 預(yù)訓(xùn)練得到獎勵函數(shù)和策略網(wǎng)絡(luò)后,將其引入到SAC 算法進行正式訓(xùn)練。
SAC 算法的過程是:
1)從經(jīng)驗池中采樣當前時刻的狀態(tài)st、動作at、獎勵r、下一時刻的狀態(tài)st+1后,送入策略網(wǎng)絡(luò),輸出下一時刻的策略πθ(st+1)和熵log (πθ(at|st)),同時更新策略網(wǎng)絡(luò)參數(shù),更新公式如下:
其中:
2)將經(jīng)驗池中當前時刻的狀態(tài)st、動作at、獎勵r輸出至主值網(wǎng)絡(luò),通過主值網(wǎng)絡(luò)中的兩個Q網(wǎng)絡(luò)Net1 和Net2 來計算估計Q值Qt(?1)、Qt(?2)。
3)將策略網(wǎng)絡(luò)輸出的策略和熵通過目標值網(wǎng)絡(luò)中的兩個Q網(wǎng)絡(luò)Net1 和Net2 來計算目標Q值,并輸出兩個目標Q值中的較小值,與主值網(wǎng)絡(luò)計算的估計Q值作均方誤差計算,其目標函數(shù)如下:
同時目標值網(wǎng)絡(luò)參數(shù)通過主值網(wǎng)絡(luò)參數(shù)進行軟更新,更新方式如下:
4)主值網(wǎng)絡(luò)的參數(shù)更新方式如下:
1.3.1 真實環(huán)境部署
現(xiàn)有強化學(xué)習(xí)方法大多采用先在仿真環(huán)境中進行訓(xùn)練,再部署到真實環(huán)境中的方法,但由于仿真環(huán)境和真實環(huán)境存在一定的誤差,比如建模差異、環(huán)境差異、姿態(tài)差異等,導(dǎo)致在部署過程中會產(chǎn)生策略失效的問題。
在本文的實驗中,仿真環(huán)境與真實環(huán)境的差距主要為機械臂末端的姿態(tài)差距。為了彌補姿態(tài)差距,首先將真實環(huán)境中的機械臂置于初始位姿,獲取此時機械臂每個關(guān)節(jié)的旋轉(zhuǎn)角度JR1、JR2、JR3、JR4、JR5、JR6以及真實環(huán)境中機械臂末端位置xR、yR、zR和姿態(tài)的四元數(shù)dxR、dyR、dzR、dwR;接著將姿態(tài)四元數(shù)dxR、dyR、dzR、dwR轉(zhuǎn)換為歐拉角XR、YR、ZR,在仿真環(huán)境中機械臂每個關(guān)節(jié)的旋轉(zhuǎn)角度JS1、JS2、JS3、JS4、JS5、JS6置為JR1、JR2、JR3、JR4、JR5、JR6,并獲取此時仿真環(huán)境中機械臂的歐拉角XS、YS、ZS;最后求出仿真環(huán)境與真實環(huán)境中機械臂的姿態(tài)差ΔX=XR-XS、ΔY=YR-YS、ΔZ=ZR-ZS。
1.3.2 基于行為樹的上層子任務(wù)規(guī)劃
行為樹是一種用于描述和控制智能體行為的圖形化模型。它是一種樹形結(jié)構(gòu),其中每個節(jié)點代表一種行為或控制邏輯,主要包括控制節(jié)點、裝飾器節(jié)點、條件節(jié)點、動作節(jié)點等。
行為樹的節(jié)點構(gòu)建如圖3 所示。子任務(wù)的行為樹執(zhí)行由一個帶記憶功能的順序節(jié)點來確定執(zhí)行順序,該順序節(jié)點的子節(jié)點包括一個條件節(jié)點和一個動作節(jié)點。其中條件節(jié)點根據(jù)當前環(huán)境狀態(tài)和任務(wù)目標判斷是否滿足執(zhí)行子策略的前提條件,如果滿足執(zhí)行條件,則向順序節(jié)點返回成功,順序節(jié)點繼續(xù)執(zhí)行;如果不滿足執(zhí)行條件,則返回失敗,順序節(jié)點向其父節(jié)點返回失敗,直接結(jié)束當前回合。動作節(jié)點根據(jù)當前環(huán)境的狀態(tài)執(zhí)行強化學(xué)習(xí)子策略,并接收實時獎勵,如果實時獎勵大于任務(wù)成功獎勵,則向順序節(jié)點返回成功,順序節(jié)點繼續(xù)執(zhí)行下一個子任務(wù);如果在一定時間后未達到成功獎勵,則向順序節(jié)點返回失敗,順序節(jié)點向其父節(jié)點返回失敗,直接結(jié)束當前回合。
圖3 行為樹節(jié)點構(gòu)建
本實驗的仿真環(huán)境通過物理仿真引擎MuJoCo 對基于逆強化學(xué)習(xí)和行為樹的機械臂復(fù)雜操作技能學(xué)習(xí)進行驗證,所使用的是Kinova Jaco2 機械臂,型號為j2n6s300;真實環(huán)境通過rviz 可視化機械臂操作,并通過行為樹來控制機械臂。
為了充分考慮家庭環(huán)境中任務(wù)的多樣性和復(fù)雜性,同時考慮到老年人日常需求,本文將拉開抽屜拿取藥瓶作為實驗任務(wù)。
首先建立拉開抽屜拿取藥瓶的實驗場景,如圖4所示。
接著執(zhí)行拉開抽屜拿取藥瓶的實驗任務(wù),記錄下機械臂末端的軌跡,0 即機械臂末端的位置和姿態(tài)。然后采用基于β過程的自回歸隱馬爾科夫模型對所采集的演示數(shù)據(jù)進行分割,分割結(jié)果如圖5 所示。
圖5 機械臂復(fù)雜操作任務(wù)分割結(jié)果
圖5 為位置和四元數(shù)隨時間變化的曲線圖,不同顏色的區(qū)間表示基于β過程的自回歸隱馬爾科夫模型算法分割得到的不同任務(wù)區(qū)間。根據(jù)四元數(shù)可以看出分割出了4 段具有明顯物理意義的分段,分別為抓取抽屜把手(分段①)、拉開抽屜(分段②)、抓取物體(分段⑥)、放置物體(分段⑨)。
最后為所有分割的子任務(wù)建立仿真訓(xùn)練環(huán)境,圖6為4個子任務(wù)的訓(xùn)練環(huán)境。圖6a)為抓取抽屜把手,任務(wù)目標為機械臂末端抓取抽屜把手;圖6b)為拉開抽屜,任務(wù)目標為機械臂末端將抽屜把手拉至目標點;圖6c)為抓取物體,任務(wù)目標為機械臂抓取抽屜中的物體;圖6d)為放置物體,任務(wù)目標為將物體放置到藍色小球處。
圖6 子任務(wù)仿真訓(xùn)練環(huán)境
在所有子任務(wù)的仿真環(huán)境都建立好后,接下來進行實驗參數(shù)設(shè)置。
2.2.1 子任務(wù)專家策略的RL 參數(shù)設(shè)置
每個子任務(wù)的專家策略包括:機械臂當前時刻t的狀態(tài)空間St、當前時刻t的動作空間At、下一時刻t+ 1 的狀態(tài)空間St+1、當前時刻t的實時獎勵Rt、一個回合結(jié)束的最終獎勵Repisode和一個回合開始的標志位Estart。其中狀態(tài)空間為所有子任務(wù)狀態(tài)空間的并集,包括機械臂夾持器1 維、機械臂位置3 維、機械臂姿態(tài)3 維、藥瓶位置3 維、抽屜把手位置3 維、藥瓶放置位置3 維、藥瓶放置姿態(tài)3 維、目標點位置3 維、目標點姿態(tài)3 維,總計25 維;所有子任務(wù)的動作空間都是7 維,其中前6 維表示機械臂末端的位置和姿態(tài),第7 維表示末端夾持器開合程度;實時獎勵Rt為機械臂在狀態(tài)St時的獎勵函數(shù);最終獎勵Repisode為回合結(jié)束后機械臂得到的獎勵;標志位Estart在開始時為1,表示回合開始,其余時刻均為0。
2.2.2 GAIL 與SAC 網(wǎng)絡(luò)參數(shù)設(shè)計
在GAIL 算法的網(wǎng)絡(luò)結(jié)構(gòu)中,預(yù)訓(xùn)練的總時間步total_timestep 設(shè)為100 萬,學(xué)習(xí)率learning_rate 設(shè)為7×10-9,預(yù)訓(xùn)練的迭代次數(shù)n_epochs 設(shè)為10 000,驗證間隔interval 設(shè)置為100,每個epoch 中訓(xùn)練策略的步數(shù)g_step設(shè)為3,每個epoch 中訓(xùn)練鑒別器的步數(shù)d_step 設(shè)為3,獎勵分配器步長d_stepsize 設(shè)為0.000 3,生成器熵損失系數(shù)σ設(shè)為0.001,判別器輸出獎勵函數(shù)的熵損失權(quán)重β設(shè)為10-8。
在SAC算法的網(wǎng)絡(luò)結(jié)構(gòu)中,每個網(wǎng)絡(luò)層之間的激活函數(shù)采用ReLU函數(shù),經(jīng)驗池大小buffer_size設(shè)置為16 384,每次訓(xùn)練從經(jīng)驗池中采樣樣本數(shù)量batch_size 設(shè)為256,學(xué)習(xí)率learning_rate 為7×10-5,折扣因子gamma 為0.99,Actor網(wǎng)絡(luò)和Critic網(wǎng)絡(luò)均采用Adam 優(yōu)化器進行優(yōu)化。
2.3.1 底層子任務(wù)訓(xùn)練結(jié)果
底層子任務(wù)的訓(xùn)練過程中采用GAIL+SAC 算法對子策略進行訓(xùn)練,并將其與僅采用SAC 算法的訓(xùn)練進行對比,對比結(jié)果展示在圖7 中。
圖7 底層子任務(wù)訓(xùn)練結(jié)果
觀察到GAIL+SAC 方法所需的時間步遠遠少于僅采用SAC 方法的情況。在放置物體任務(wù)的過程中,由于龐大的狀態(tài)空間,SAC 算法訓(xùn)練的模型甚至出現(xiàn)了局部最優(yōu)的情況。
接著對每個子任務(wù)的最優(yōu)策略在仿真環(huán)境中進行25 次測試,測試結(jié)果見表1。研究表明,采用GAIL+SAC 算法的成功率明顯高于僅采用SAC 算法的情況。
表1 子任務(wù)最優(yōu)策略在仿真環(huán)境中的成功率 %
2.3.2 上層復(fù)雜任務(wù)執(zhí)行結(jié)果
基于復(fù)雜任務(wù)的執(zhí)行邏輯,構(gòu)建了如圖8 所示的行為樹。其中行為樹的葉子節(jié)點為已完成真實環(huán)境部署的強化學(xué)習(xí)子策略,在執(zhí)行前需要判斷是否滿足條件,如果滿足就執(zhí)行子策略,如果沒有滿足條件,直接結(jié)束當前回合。
圖8 基于行為樹的子任務(wù)規(guī)劃
為與傳統(tǒng)強化學(xué)習(xí)算法進行對比,根據(jù)所構(gòu)建的行為樹,分別采用傳統(tǒng)SAC 算法和本文所提出的GAIL+SAC 算法,進行了真實環(huán)境中的機械臂復(fù)雜操作技能對比實驗,結(jié)果分別如圖9 和圖10 所示,在25 次測試實驗中,傳統(tǒng)SAC 算法的成功率為28%,GAIL+SAC 在真實環(huán)境中成功率為76%。由于傳統(tǒng)SAC 算法在仿真環(huán)境中放置物體子策略的成功率較低,導(dǎo)致整體任務(wù)的成功率偏低。而本文提出的算法在仿真環(huán)境中成功率較高,但由于并不能完全消除仿真環(huán)境和真實環(huán)境的差距,在真實環(huán)境中的成功率有所降低。
圖9 真實環(huán)境中基于SAC 的機械臂復(fù)雜操作技能再現(xiàn)
圖10 真實環(huán)境中基于GAIL+SAC 的機械臂復(fù)雜操作技能再現(xiàn)
以上實驗結(jié)果表明,基于逆強化學(xué)習(xí)和行為樹的復(fù)雜操作技能學(xué)習(xí)方法成功完成了從仿真環(huán)境到真實環(huán)境的部署,并且在真實場景中的成功率高于傳統(tǒng)強化學(xué)習(xí)算法。
本文提出一種基于逆強化學(xué)習(xí)和行為樹的機械臂復(fù)雜操作技能學(xué)習(xí)方法,用于解決傳統(tǒng)分層強化學(xué)習(xí)方法底層子任務(wù)樣本效率低、獎勵稀疏,上層學(xué)習(xí)時間過長,以及策略在真實環(huán)境中部署困難的問題。該方法底層采用逆強化算法學(xué)習(xí)子策略,保證了子任務(wù)的學(xué)習(xí)效率;上層通過行為樹來規(guī)劃子任務(wù),構(gòu)建整體策略。實驗結(jié)果表明,該方法成功學(xué)習(xí)到了復(fù)雜操作任務(wù),大大減少了訓(xùn)練的時間,并在性能上優(yōu)于其他算法。