周友行,趙晗妘,劉漢江,李昱澤,肖雨琴
湘潭大學(xué) 機(jī)械工程學(xué)院,湖南 湘潭 411105
步態(tài)規(guī)劃是機(jī)器人控制領(lǐng)域的研究熱點(diǎn)和重要的研究內(nèi)容。雙足機(jī)器人結(jié)構(gòu)復(fù)雜,其行走過程是由連續(xù)的擺腿和離散的碰撞組成,具有眾多自由度,難以通過傳統(tǒng)控制理論方法建立動力學(xué)模型[1]。即便勉強(qiáng)采用此類方法,也會導(dǎo)致雙足機(jī)器人運(yùn)動過程消耗大,行走速度低,環(huán)境適應(yīng)性差。實(shí)際上相比精準(zhǔn)的步態(tài),功能性和抗干擾性更為重要,也能使雙足機(jī)器人能面對不同環(huán)境的需求。
隨著信息技術(shù)的發(fā)展,以強(qiáng)化學(xué)習(xí)為代表的智能算法以其自適應(yīng)特性越來越多運(yùn)用于機(jī)器人控制領(lǐng)域[2-3],但過去強(qiáng)化學(xué)習(xí)在機(jī)器人控制領(lǐng)域的實(shí)踐都局限于低維的狀態(tài)空間和動作空間,且一般是離散的情境下。然而現(xiàn)實(shí)世界的復(fù)雜任務(wù)通常有著高維的狀態(tài)空間和連續(xù)的動作空間。2013 年,DeepMind 團(tuán)隊(duì)提出了結(jié)合深度神經(jīng)網(wǎng)絡(luò)和強(qiáng)化學(xué)習(xí)的DQN算法[4],解決了高維輸入問題。但DQN 仍是一個(gè)面向離散控制的算法,對連續(xù)動作處理能力不足。在機(jī)器人的實(shí)際控制中,每個(gè)關(guān)節(jié)的角度輸出是連續(xù)值,若把每個(gè)關(guān)節(jié)角取值范圍離散化,則行為的數(shù)量隨自由度的數(shù)量呈指數(shù)增長。若進(jìn)一步提升這個(gè)精度,取值的數(shù)量將成倍增長。
為了將DQN 拓展到連續(xù)控制領(lǐng)域,眾多學(xué)者展開了研究,目前來看,顧世翔等提出的NAF[5]和DeepMind提出的DDPG[6]是有效的解決方案,但相比這兩種算法,NAF實(shí)現(xiàn)起來過于復(fù)雜,DDPG則是基于Actor-Critic方法[7],包含一個(gè)策略網(wǎng)絡(luò)(Actor)用來生成動作,一個(gè)價(jià)值網(wǎng)絡(luò)(Critic)用來評判動作的好壞,并吸取DQN 的優(yōu)秀特性,同樣使用了樣本經(jīng)驗(yàn)回放池和固定目標(biāo)網(wǎng)絡(luò)[8]。
盡管DDPG學(xué)習(xí)算法已經(jīng)接近于現(xiàn)實(shí)應(yīng)用,但考慮到雙足機(jī)器人模型的復(fù)雜度和動態(tài)規(guī)劃對實(shí)時(shí)性的要求,仍有進(jìn)行優(yōu)化的必要。因此,提出一種自學(xué)習(xí)步態(tài)規(guī)劃算法,在DDPG 算法的基礎(chǔ)上,將具有局部映射特性的RBF 神經(jīng)網(wǎng)絡(luò)運(yùn)用于DDPG 中非線性函數(shù)的計(jì)算[9],提高學(xué)習(xí)收斂速度。然后采用梯度下降算法更新神經(jīng)網(wǎng)絡(luò)權(quán)值,采用SumTree 來篩選樣本,進(jìn)一步提高算法的效率。最后在Gazebo環(huán)境中對雙足機(jī)器人進(jìn)行了模擬學(xué)習(xí)訓(xùn)練,經(jīng)數(shù)據(jù)仿真表明,該算法能使雙足機(jī)器人自主學(xué)習(xí)穩(wěn)定自然的動態(tài)行走[10-11]。
以如圖1 所示雙足步行機(jī)器人為例展開研究。機(jī)器人左右對稱,由七個(gè)部分組成:兩大腿、兩小腿、兩足和一個(gè)軀干。由于軀干以上部分對行走過程的影響相對下肢較小,因此在研究過程抽象成質(zhì)心和轉(zhuǎn)動慣量不變的連桿,只在模擬過程加入適量擾動模擬雙臂擺動對步行過程穩(wěn)定性的影響。
圖1 雙足機(jī)器人模型
雙足機(jī)器人包含8 個(gè)自由度:兩個(gè)髖關(guān)節(jié)4 個(gè)自由度,兩個(gè)膝關(guān)節(jié)2個(gè)自由度,兩踝關(guān)節(jié)2個(gè)自由度。各關(guān)節(jié)自由度在笛卡爾坐標(biāo)系中的分布方式如圖2所示。
雙足機(jī)器人樣機(jī)基本參數(shù)如表1所示。
表1 雙足機(jī)器人樣機(jī)參數(shù)
圖2 雙足機(jī)器人各關(guān)節(jié)自由度分布
由于在人類步行過程中,以矢狀面的屈伸運(yùn)動為主導(dǎo),包括髖、膝的屈伸運(yùn)動,而冠狀面的活動對行走過程影響較少。因此在實(shí)際步態(tài)分析中,主要考慮髖關(guān)節(jié)和膝關(guān)節(jié)的數(shù)據(jù)結(jié)果[12]。
矢狀面關(guān)節(jié)上的屈伸范圍如表2所示。
表2 矢狀面上各關(guān)節(jié)轉(zhuǎn)矩和最大屈伸范圍
利用智能體與環(huán)境交互所得的獎懲信息來指導(dǎo)智能體的行為的策略,叫做強(qiáng)化學(xué)習(xí)。DDPG是強(qiáng)化學(xué)習(xí)中基于Actor-Critic 的算法,它的核心思想是利用Actor網(wǎng)絡(luò)用來生成智能體的行為策略,Critic 網(wǎng)絡(luò)來評判動作好壞,并指導(dǎo)動作的更新方向。如圖3所示,DDPG結(jié)構(gòu)中包含一個(gè)參數(shù)為θπ的Actor 網(wǎng)絡(luò)和一個(gè)參數(shù)為θQ的Critic 網(wǎng)絡(luò)來分別計(jì)算確定性策略a=π(s|θπ)和動作價(jià)值函數(shù)Q(s,a|θQ)[13]。由于單個(gè)網(wǎng)絡(luò)學(xué)習(xí)過程并不穩(wěn)定,因此借鑒了DQN 固定目標(biāo)網(wǎng)絡(luò)的成功經(jīng)驗(yàn),將Actor 網(wǎng)絡(luò)和Critic 網(wǎng)絡(luò)又各自細(xì)分為一個(gè)現(xiàn)實(shí)網(wǎng)絡(luò)和一個(gè)目標(biāo)網(wǎng)絡(luò)?,F(xiàn)實(shí)網(wǎng)絡(luò)和目標(biāo)網(wǎng)絡(luò)結(jié)構(gòu)相同,目標(biāo)網(wǎng)絡(luò)參數(shù)以一定頻率由現(xiàn)實(shí)網(wǎng)絡(luò)參數(shù)軟更新。
圖3 DDPG算法結(jié)構(gòu)
現(xiàn)實(shí)Critic網(wǎng)絡(luò)的損失函數(shù)為:
其中
m為樣本數(shù)量,ωj為所采用的不同樣本的權(quán)重,為樣本j在狀態(tài)為St時(shí)采取動作At,通過現(xiàn)實(shí)Critic網(wǎng)絡(luò)計(jì)算出來的動作價(jià)值,yj為通過樣本計(jì)算出的目標(biāo)動作價(jià)值,由目標(biāo)Critic 網(wǎng)絡(luò)推算得出,Rj為樣本j在狀態(tài)為St時(shí)采取動作At獲得的即時(shí)獎勵(lì),γ為折扣因子。
現(xiàn)實(shí)Actor網(wǎng)絡(luò)的損失函數(shù)為:
其中,用梯度下降法尋找該損失函數(shù)J(θπ)的極小值等價(jià)于最大化動作價(jià)值的過程。
目標(biāo)Critic 網(wǎng)絡(luò)和目標(biāo)Actor 網(wǎng)絡(luò)參數(shù)采取以下方式更新方式:
τ為更新系數(shù),為避免參數(shù)變化幅度過大,范圍取0.01~0.1。更新頻率為時(shí)間步走過1 500次,目標(biāo)網(wǎng)絡(luò)更新一次。
RBF 神經(jīng)網(wǎng)絡(luò)是一種三層神經(jīng)網(wǎng)絡(luò),如圖4 所示。由于它的結(jié)構(gòu)簡單,且具有局部映射特性,即重點(diǎn)考慮離徑向基函數(shù)中心近的數(shù)據(jù),可以極大減少迭代中需要調(diào)整的參數(shù)的數(shù)量,極大提高了學(xué)習(xí)收斂的速度,相比較BP神經(jīng)網(wǎng)絡(luò)更符合機(jī)器人動態(tài)步行這一有實(shí)時(shí)性要求的情景[14]。
圖4 RBF神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖
RBF 神經(jīng)網(wǎng)絡(luò)中輸入層到隱藏層為權(quán)值為1 的全連接,隱藏層到輸出層通過權(quán)值矩陣相連接。隱藏層神經(jīng)元的激活函數(shù)選用高斯徑向基函數(shù),第i個(gè)神經(jīng)元的輸出結(jié)果為:
其中,βi為擴(kuò)展常數(shù),x=( )x1,x2,…,xm表示第i個(gè)神經(jīng)元接收到的輸入,ci為第i個(gè)神經(jīng)元的核函數(shù)中心。
輸出層輸出結(jié)果為:
其中,ωi為隱藏層到輸出層的對應(yīng)權(quán)值。
由于不同樣本對訓(xùn)練過程的貢獻(xiàn)有所不同,篩選出優(yōu)質(zhì)的樣本,為提高算法利用率,減少機(jī)器人無效的訓(xùn)練次數(shù)至關(guān)重要。SumTree 作為一個(gè)二叉樹數(shù)據(jù)存取結(jié)構(gòu),已經(jīng)有學(xué)者將其應(yīng)用于DQN算法的經(jīng)驗(yàn)回放中,并起到了驚艷的效果[11-12]。在此,也將SumTree 運(yùn)用于DDPG算法的經(jīng)驗(yàn)回放中。由于DDPG算法中,策略網(wǎng)絡(luò)的參數(shù)依賴價(jià)值網(wǎng)絡(luò)的選取,而價(jià)值網(wǎng)絡(luò)中的參數(shù)由價(jià)值網(wǎng)絡(luò)的損失函數(shù),即目標(biāo)Q值與現(xiàn)實(shí)Q值差值的期望來更新。差值越大,代表網(wǎng)絡(luò)參數(shù)的預(yù)測準(zhǔn)確度還很遠(yuǎn),即該樣本更需要被學(xué)習(xí),即優(yōu)先值越高。在此,將目標(biāo)Q 值與現(xiàn)實(shí)Q 值差值的絕對值定為量化樣本優(yōu)先級的標(biāo)準(zhǔn),設(shè)為|δ(t) |。如圖5 所示,SumTree 的總?cè)萘繛?99 999,葉節(jié)點(diǎn)個(gè)數(shù)為200 000。葉節(jié)點(diǎn)內(nèi)存放樣本的優(yōu)先級,每個(gè)葉節(jié)點(diǎn)對應(yīng)一個(gè)索引值,利用索引值,可以實(shí)現(xiàn)對應(yīng)樣本的存取。每兩個(gè)葉節(jié)點(diǎn)對應(yīng)一個(gè)上級的父節(jié)點(diǎn),父節(jié)點(diǎn)的優(yōu)先級等于左右兩個(gè)子節(jié)點(diǎn)優(yōu)先級之和,最后收斂到根節(jié)點(diǎn)。
圖5 SumTree結(jié)構(gòu)
分別采用兩個(gè)一維數(shù)組來存放優(yōu)先級和樣本池,其中樹的結(jié)構(gòu)映射到一維數(shù)組的順序是按從上到下,從左到右展開。存儲優(yōu)先級時(shí),從葉節(jié)點(diǎn)開始,即從索引值為199 999開始,每存入一個(gè)數(shù)據(jù),更新一次與該葉節(jié)點(diǎn)相關(guān)的父節(jié)點(diǎn)的數(shù)據(jù)以及對應(yīng)樣本池?cái)?shù)據(jù)。當(dāng)需要采集樣本時(shí),用根節(jié)點(diǎn)的優(yōu)先級(所有葉節(jié)點(diǎn)優(yōu)先級之和)除以樣本數(shù)m,將優(yōu)先級按順序從0到優(yōu)先級之和分成m個(gè)區(qū)間。接下來,是在每個(gè)區(qū)間隨機(jī)抽取一個(gè)數(shù),因?yàn)閮?yōu)先級較大的節(jié)點(diǎn)也會占據(jù)較長的區(qū)間,因此被抽到的概率也會較高,這樣便達(dá)到了最初的目的。每抽到一個(gè)葉節(jié)點(diǎn),返回其優(yōu)先級,及對應(yīng)的樣本池?cái)?shù)據(jù)。
輸入:環(huán)境E,狀態(tài)空間S,動作空間A。
過程:
(1)初始化 Actor 網(wǎng)絡(luò)和 Critic 網(wǎng)絡(luò),初始化 Sum-Tree并定義容量大小。
(2)從第一回合的第一步開始,進(jìn)行循環(huán)。
①初始化St為當(dāng)前的第一個(gè)狀態(tài);
②把狀態(tài)St作為現(xiàn)實(shí)Actor 網(wǎng)絡(luò)的輸入計(jì)算,與隨機(jī)噪聲疊加后得到
③執(zhí)行動作At,得到獎勵(lì)Rt和新狀態(tài)St+1;
④將{St,At,Rt,St+1}四元組存入SumTree;
目前,軟件缺陷分析統(tǒng)計(jì)方法主要包括:柏拉圖分析法、根本原因分析法、正交缺陷分類法(Orthogonal Defect Classifica?tion,簡稱ODC)等。其中,利用缺陷正交分類法既可以對缺陷本質(zhì)特性進(jìn)行分析,同時(shí)又對缺陷類型做了深層次劃分,使得該方法既適用于分類缺陷,又能夠用來對缺陷進(jìn)行統(tǒng)計(jì)和分析,是目前應(yīng)用較為廣泛的缺陷分析方法[2]。
⑤St=St+1;
⑥ 當(dāng)len(data)>m時(shí),從 SumTree 中采集m個(gè)樣本,其中采樣概率依據(jù),權(quán)重,計(jì)算當(dāng)前目標(biāo)Q值:
⑦計(jì)算損失函數(shù)J(θQ),利用梯度下降反向更新現(xiàn)實(shí)Critic網(wǎng)絡(luò)的所有參數(shù)θQ;
⑧計(jì)算損失函數(shù)J(θπ),利用梯度下降反向更新現(xiàn)實(shí)Actor網(wǎng)絡(luò)的所有參數(shù)θπ;
⑨重新計(jì)算所有樣本的誤差|δ(t) |,更新SumTree中所有節(jié)點(diǎn)的優(yōu)先值pj=|δj|;
⑩每時(shí)間步走過1 500 次,則更新目標(biāo)Actor 網(wǎng)絡(luò)和目標(biāo)Q網(wǎng)絡(luò)的參數(shù);
采用ROS+Gazebo+Tensorflow聯(lián)合仿真,其中ROS是一個(gè)機(jī)器人軟件平臺,充當(dāng)了仿真器Gazebo 和機(jī)器學(xué)習(xí)平臺Tensorflow 的接口。為了簡便流程,首先在Solidworks 中建立雙足機(jī)器人的三維模型并通過SW2URDF 插件導(dǎo)出雙足機(jī)器人的URDF 文件(統(tǒng)一機(jī)器人描述格式),如圖6。URDF 文件主要由<Link>和<Joint>兩個(gè)標(biāo)簽組成。其中<Link>定義了雙足機(jī)器人的結(jié)構(gòu)件的外觀和物理屬性,包括形狀、尺寸、質(zhì)量、相對坐標(biāo)、碰撞參數(shù)等,<Joint>描述了機(jī)器人關(guān)節(jié)的運(yùn)動學(xué)和動力學(xué)屬性,包括關(guān)節(jié)運(yùn)動的位置和速度限制范圍。由于Joint 是用來鏈接兩個(gè)Link,因此對每個(gè)Joint都必須指定Parent Link 和Child Link。完成URDF 模型的設(shè)計(jì)后,便可通過ROS功能包的C++解析器解析出文件所描述的機(jī)器人模型,也可以通過ROS 中嵌入的可視化工具Rviz顯示出來,如圖7所示。通過給URDF文件添加<gazebo>標(biāo)簽,便可將模型加載到Gazebo 仿真環(huán)境。使用Tensorflow創(chuàng)建算法源碼,算法相關(guān)參數(shù)見表3,并將其可執(zhí)行文件整合到ROS 中,來與機(jī)器人模型對接,以實(shí)現(xiàn)預(yù)定的算法功能。
圖6 雙足機(jī)器人三維模型
圖7 ROS中雙足機(jī)器人模型
表3 DDPG/DDPG改進(jìn)算法相關(guān)參數(shù)
為了驗(yàn)證所提方法的有效性,分別采用DDPG算法和改進(jìn)后的DDPG 算法進(jìn)行雙足機(jī)器人步態(tài)規(guī)劃的模擬仿真,并進(jìn)行對比分析。根據(jù)控制變量法原則,兩種情況下均采用相同的仿真環(huán)境。在該仿真環(huán)境中,機(jī)器人要在水平地面上步行完成從起點(diǎn)到終點(diǎn)總長88 m的距離的任務(wù),每一次成功到達(dá)終點(diǎn)或中途倒下,一個(gè)回合結(jié)束。關(guān)節(jié)的轉(zhuǎn)矩和角度范圍限定如上文所述。摩擦力系數(shù)為0.5,設(shè)立旋轉(zhuǎn)副的位置,并在動作上施加適度擾動,設(shè)置狀態(tài)為質(zhì)心速度,關(guān)節(jié)位置和關(guān)節(jié)角速度,腿與地面接觸等參數(shù),利用相對坐標(biāo)系將機(jī)器人的6個(gè)關(guān)節(jié)每個(gè)關(guān)節(jié)的轉(zhuǎn)角按弧度劃分為(-1,1),動作為6個(gè)關(guān)節(jié)的轉(zhuǎn)角數(shù)組,當(dāng)機(jī)器人到達(dá)目標(biāo)位置或者機(jī)器人倒下時(shí),系統(tǒng)復(fù)位??傆?xùn)練回合數(shù)為5 000次。
圖8為兩種算法每平均100回合中所取得平均累積獎勵(lì)曲線對比,累積獎勵(lì)越高,代表機(jī)器人按照期待的目標(biāo)選出來更優(yōu)的動作。從圖上看來,兩條曲線都呈遞增趨勢,且當(dāng)訓(xùn)練回合超過某一定值后,均趨于穩(wěn)定。但是比較表4數(shù)據(jù),DDPG算法用了4 323回合到達(dá)最大累積獎勵(lì),而改進(jìn)后的DDPG 算法迭代2 037 次即到達(dá)最大累積獎勵(lì),比前者提升了45.7%??梢?,RBF 改進(jìn)后的DDPG算法具有更高的效率。
圖8 兩種算法所取得累積獎勵(lì)對比
表4 求解迭代總次數(shù)比較
圖9為兩種算法下機(jī)器人每平均100回合中成功步行到達(dá)的距離曲線對比??梢钥吹剑谟?xùn)練初期,上升速度較快,但學(xué)習(xí)程度不夠充分,且隨機(jī)性大,成功幾率小。且前期為了充分遍歷,找到最優(yōu)策略,探索率比較高,受到環(huán)境干擾的影響,曲線波動較大,隨訓(xùn)練次數(shù)增加,探索率減少,充分學(xué)習(xí)后,機(jī)器人由探索環(huán)境的狀態(tài)逐步轉(zhuǎn)為利用經(jīng)驗(yàn)知識的狀態(tài),成功率瞬間升高并趨于穩(wěn)定。2 000 回合以后,機(jī)器人能步行到的距離也更加穩(wěn)定,愈來愈接近于給定值。比較表5 數(shù)據(jù),可以看到兩種算法在給定任務(wù)的執(zhí)行力上有較大區(qū)別,在仿真的5 000 回合中,用DDPG 算法下機(jī)器人到達(dá)終點(diǎn)的次數(shù)為102次,成功率為2.04%,用改進(jìn)后的DDPG算法成功次數(shù)為547次,成功率10.94%,提高了8.9個(gè)百分點(diǎn)。
圖9 兩種算法步行到達(dá)距離對比
表5 成功率比較
圖10、圖11 為 DDPG 算法及 DDPG 改進(jìn)算法下機(jī)器人均達(dá)到規(guī)律周期運(yùn)動后的髖、膝關(guān)節(jié)的姿態(tài)角度對比。從關(guān)節(jié)的順暢性,平穩(wěn)度來看,在使用改進(jìn)后的DDPG算法相比改進(jìn)前具有更好的效果。
(1)針對雙足機(jī)器人步行控制中高維非線性規(guī)劃難題,提出一種基于DDPG 的深度強(qiáng)化學(xué)習(xí)算法,來解決雙足機(jī)器人步行控制中高維非線性規(guī)劃難題,從動力學(xué)角度出發(fā)對雙足機(jī)器人步行進(jìn)行動態(tài)控制。利用RBF神經(jīng)網(wǎng)絡(luò)的局部映射特效,來提高DDPG算法的學(xué)習(xí)速度,采用梯度下降算法更新神經(jīng)網(wǎng)絡(luò)權(quán)值,并采用Sum-Tree來篩選優(yōu)先級別高的樣本,進(jìn)一步提高權(quán)值的更新速度。
圖10 DDPG算法關(guān)節(jié)姿態(tài)角度曲線對比
圖11 DDPG改進(jìn)算法關(guān)節(jié)姿態(tài)角度曲線對比
(2)運(yùn)用所提出方法對雙足機(jī)器人的步行過程進(jìn)行仿真模擬,結(jié)果顯示機(jī)器人平均達(dá)到最大累積獎勵(lì)的時(shí)間提前了45.7%,成功率也提升了8.9個(gè)百分點(diǎn),且改進(jìn)后的DDPG 算法訓(xùn)練下的各關(guān)節(jié)力矩、角度變化平穩(wěn),且較好貼合預(yù)定運(yùn)動軌跡,證明了該方法的有效性。