賈振宇,劉子龍
(上海理工大學 光電信息與計算機工程學院,上海 200093)
四旋翼在二十世紀初進入人們視野,且有數篇文章提取具體的建模方法和控制方法.作為一個典型的多輸入多輸出的非線性系統,具有強耦合,欠驅動等等一系列控制難點[1,2].針對四旋翼無人機控制系統的特點,研究人員提出了眾多控制算法來優化無人機的姿態控制.盡管四旋翼這些年中取得了重大進展,但仍然面臨諸多難點.首先,鑒于飛機的實時控制需要實時地采集和計算數據,所以就需要高度的時間敏感性.其次,飛機在飛行過程中應該能夠適應各種復雜和惡劣的環境下保持姿態的穩定.考慮到這些因素,飛行控制仍然是一個機器熱門的研究問題.
目前的主流控制算法還是以PID為主[3,4],然而其抗干擾依托于積分項,當積分誤差實時變化時,其抗干擾能力會很差,更重要的是PID的增益需要根據環境變化反復實現進行選擇,難以滿足其動態性能.因此,諸多研究者為了更好的克服這些問題,提出了許多高級控制策略來保證姿態的穩定:通過模型預測控制[5],魯棒控制[6]和滑模控制[7]等,但這些方法卻都又存在一個共同的問題,控制策略與當前模型的確定性關系很大.如果模型不夠準確即忽視外部干擾,那么這些控制方案就無法實現理想的控制效果.但如果模型為了準確性而過于復雜,這會使控制率也變得異常復雜.
在過去數十年,人工智能技術的飛速發展也切實影響到了傳統控制領域.以機器學習構建控制系統成為了一個熱門話題[8],因為就算是不確定的非線性模型,神經網絡也能有著相當出色的表現[9].但是一般通過監督學習方法實現行為克隆往往效果會很差,原因是網絡收集數據和正確數據的不匹配的原因造成的[10].為了克服監督學習方法的不足,強化學習提了出來.在2005年,首次通過強化學習來實現四旋翼的模型控制[11],采用局部加權的線性回歸將四旋翼建模構成一個馬爾可夫鏈,學習的控制策略與積分滑模控制有著接近的性能.近些年,大量深度學習算法施加在強化學習構成新的深度強化學習,這些算法都有著更加卓越的性能.諸如確定性策略梯度DPG[12],深度確定性策略梯度DDPG[13],信任域策略優化TRPO[14]和近端策略優化PPO[15]都在連續狀態行動空間中展示出卓越的控制性能[16].最近通過自然梯度下降方法優化確定性策略,神經網絡將給定狀態映射到飛機可執行動作向量集,從而成功學習了控制策略實現飛機姿態的控制的同時,在相對惡劣的條件下都有著出色的性能[17].但是,實際環境與模擬環境之間存在許多差異.從模擬環境中學到的飛機模型直接應用于實際環境會引起很多問題.例如準確性和穩定性下降,此外飛行任務的變化和環境的變化會造成飛行策略的不穩定.
故本文在上述的基礎上提出通過模型改進強化學習算法(MB-PPO).以近端策略優化算法為基礎并結合模型提出改進,修改了原先近端策略優化算法的價值判斷和策略優化算法.經過驗證,可以發現改進后的算法在四旋翼姿態穩定中更具泛用性且更快收斂.
本文使用的強化學習方法是采取確定性策略和自然梯度下降[18]的一種結合.確定性策略普遍相較于隨即策略存在一些缺點.確定性策略不像隨機性策略,并不能很好的探索所有狀態空間,而且從一般角度出發,隨機策略一般也能比確定性策略在解決問題上面有著更好的表現.雖然沒有確切的證明,但猜測是隨機性策略比起確定性策略不那么容易陷入局部最小點.
本文依舊采用確定性策略是因為相較于隨機性策略還是有如下幾點主要優勢:首先比起隨機性策略有著更低的方差,這樣可以使學習更較穩定.其次就是可以將策略梯度更加簡潔,便于計算,對于隨機性策略這種非連續動作空間算法來說,列舉所有的動作空間過于困難.
一個確定性環境馬爾可夫決策過程可以通過一些可能的輸出A和狀態S.因為真實四旋翼的動力學模型是可以通過微分方程表示f:S×A→S,對應的獎勵函數為r:S×A→.于是馬爾可夫鏈如式(1)所示:
(s1:T+1,a1:T,r1:T)
(1)
本文的目標就是尋找到一個最優的確定性策略πθ,其中θ表示策略的參數,在隨機性策略中的目標要最大化策略生成可能軌跡下軌跡獎勵的期望:
(2)
其中dπθ(s)表示訪問頻率函數,Vπθ(s)表示某個狀態之后產生所有可能的軌跡獎勵的期望,也被稱為價值函數:
dπθ(s)=P(s0=s)+γP(s1=s)+…
此處采用的是確定型策略,于是自然將得出如下兩個結論:
st+1=fπ(st)=f(st,at)|at=π(st)
(3)
其中Qπθ被稱為動作價值函數.這個函數的輸出可以理解成特定策略下特定狀態做出特定動作的價值函數.
本文對策略πθ改進成確定性策略的深度神經網絡結構.確定性策略梯度下降可以寫成:
本文采取的基準是Vπθ(s),即價值函數,則策略梯度下降可以進一步寫成:
(4)
其中Aπθ(s,πθ(s))=Qπθ(s,πθ(s))-Vπθ(s)也被稱為優勢函數.這個函數的輸出可以理解成特定策略下特定狀態做出特定動作本身的獎勵.
一般在策略梯度算法中有人次策略梯度能夠提升的算法極限,構成(5)式中上半段無條件優化問題,但因為兩個策略之間比值差距過大過小將會造成期望本身要么趨向于無窮要么趨向于0,不利于計算,于是為了解決這個問題,自然梯度下降提出每次更新兩個分布之間的差距要趨向于1,于是引入KL散度,構成約束優化問題:
maxmizeθLπθ(πθ′)
s.t.DKL(πθ‖πθ′)≤
(5)
其中Lπθ(πθ′)表示參數變化后的策略獎勵差距:
隨之可以將公式(5)中的約束項轉換成規劃中的懲罰項,并通過對其中規劃主體線性近似和對懲罰項進行二次近似,進一步寫成如下形式:
(6)
其中g是η(πθ)的一階近似,F是KL散度作為懲罰項的二階近似,且為費舍爾信息陣:
F=πθ[?θlogπθ(s)?θlogπθ(s)T]
最后求解得出的自然策略梯度如下
(7)
自然梯度下降的問題在于費舍爾矩陣難以計算,對此有兩個經典改進:TRPO和PPO.TRPO提出F這個費舍爾矩陣求逆可以通過共軛梯度法簡化了運算.
但就算如此整個計算式也相當復雜,故引入新的自然梯度做法,即PPO.PPO并沒有解決費舍爾矩陣,而是另辟蹊徑,直接提出單次梯度更新不要讓分布差距過大,如果差距過大,直接裁剪掉,設置單次更新距離極限.于是策略差距演化成如下形式,這很大程度簡化了運算和編程的復雜度.
訓練網絡正如上方所述,通過無模型強化學習和基于模型進行結合構成新的網絡結構構成的新算法MB-PPO.
如圖1所示,MB-PPO的輸入分成兩個部分,一部分是通過完全基于模型的反步法得出的運動,另一部分是一般神經網絡.

圖1 網絡結構圖
兩邊網絡都是以四旋翼的狀態作為初始輸入.使用的狀態輸入為表示旋轉姿態的旋轉矩陣的9個元素,再額外加上位置,線速度和角速度.價值網絡和策略網絡的區別在于策略網絡額外通過反步法[19]計算得出的動作額外添加在狀態輸入,即決策網絡從兩邊同時獲取輸入:無模型的18維輸入和另外4維的動作輸入,價值網絡只有當前狀態的18維作為輸入.
PPO能只通過相對粗糙的神經網絡得出哪怕在惡劣的條件下都能良好控制的控制效果,但這是通過大量試錯下產生的.而反步法在給出確定的模型時雖然也能有良好的控制效果,但是這需要極其準確的模型而得出極其復雜的控制律,所以將兩者結合.在給反步法一個合理的模型并給出控制并將這份控制作為額外知識輸入到強化學習網絡進一步減少強化學習試錯的過程提升學習效率.
具體網絡結構是價值網絡輸入18和策略網絡輸入22維的狀態向量和對應的1維價值輸出和4維的動作輸出,采用具體的網絡結構是2層分別為96個節點和64個節點.
確定性策略下如果環境是唯一確定的,那么其價值函數是準確的,如(3)式所示.但采樣數據隨著傳感器精度變化而變換,導致采樣不穩定,造成獎勵存在干擾.
所以強化學習需求大量真實數據來擬合,需要收集大量數據才能對真實狀態價值做出準確的判斷,但是這對機器人來說進行大量的數據采樣是極其困難的.其次更糟糕的在于仿真環境中機器人環境是唯一確定的,造成了其價值唯一確定且與真實世界不符,難以在真實世界復現.
故此處為了在仿真中能采樣到合適的數據,使用的方法和一種稱為vane[17]的方法類似.
通過對仿真中構成的唯一確定的初始軌跡中的狀態,人工對其疊加協方差Σ的高斯噪聲構成的狀態偏移,在這偏移的軌跡下構成新的分支軌跡.具體形式結構請參考圖2,圖2是對一個狀態下擴展出兩個新的狀態構成額外的2條分支軌跡.這種方法可以有效解決確定性策略在仿真環境中無法很好探索狀態空間的問題.

圖2 探索策略
所有價值函數訓練用的價值函數都通過蒙特卡洛方法將軌跡的獎勵疊加.其中當仿真軌跡生成和真實四旋翼采樣一致的狀態時,其價值函數的計算略有不同:
(8)
前半部分是借于仿真模型方法生成的N條軌跡的狀態平均價值,N的具體數量由仿真產生相同狀態的數目決定;后半段是采樣的真實狀態價值,通過上述軌跡的均值產出的狀態價值.
所有訓練集和對應標簽都通過上述方法所述獲取,每獲取一條真實軌跡和大量仿真軌跡后使用監督學習方法優化價值函數.因為數據本身誤差存在可能比較大,本文沒有選擇平方損失函數,而是Huber損失函數.當誤差小于0.001時,視系統該輪價值函數優化完成:
(9)
本文通過Crazyflie(1)https://www.bitcraze.io/生成真實的軌跡,gazebo作為仿真模型生成額外的軌跡.之所以通過gazebo進行建模,是因為物理引擎強大且便于實現,另兩者都可以直接通過ROS實現控制,大幅度降低了代碼難度.
此處建立的是一個沒有外部干擾的簡單模型,通過牛頓歐拉方程構成:
JTT=Ma+h
(10)
其中J表示轉子中心的雅可比矩陣,T是推力,M是慣性矩陣,a是廣義加速度,h是重力和科氏力等.具體設置的參數可參考表1.

表1 仿真參數
此處是將集體角速度假設等于空間角速度構成的非線性動力學模型,具體形式如下:
(11)
此處是通過牛頓歐拉動力學展開的四旋翼控制模型.通過構造狀態向量,分成兩個子系統形成內外環控制,隨后通過反步法[19]得出如下具體的四旋翼控制輸入:
此外神經網絡訓練形式是完全的單對單模型,故此處還需要進一步轉換成發動機轉速.
在訓練過程中,算法的獎勵函數,定義如下:
rt=cp‖pt‖+cv‖vt‖+cω‖ωt‖
(12)
其中前3項表示成本系數,后3項分別是t時刻四旋翼速度,角速度與原點的距離的二范數.
綜上所述,將四旋翼訓練目標設定成走到原點上.訓練的輸入是當前姿態作為強化學習網絡的輸入到網絡中,并策略網絡產生控制,價值網絡產生對應狀態價值.具體算法流程可參照算法1,在上述飛行器和構造的模型中進行學習.具體網絡參數可參考表2.

表2 算法參數
算法1:MB-PPO
1.構建仿真模型
2.初始化價值網絡和策略網絡
3.設置網絡相關參數
4.While(一直到收斂為止)
{
5. 獲取初始狀態Si
6. 將Si輸入仿真模型采取仿真軌跡
7. 將Si作為初始狀態獲取飛機軌跡
8. 通過式(11)獲取所有狀態的獎勵ct
9. 通過式(8)獲取所有狀態的價值標簽vi
10. 通過梯度下降更新價值網絡參數φ
11. 進一步更新策略網絡參數θ
}
從圖3可以看出MB-PPO僅200次迭代左右四旋翼可以趨于穩定,比起傳統強化學習迭代更新速度提升更大.圖4是飛機算法開始迭代時抓拍的圖像.

圖3 不同結構網絡學習曲線

圖4 四旋翼訓練圖像
雖然飛行器趨于穩定,但通過學習曲線發現實際算法始終存在一定的穩態誤差,這一部分繼續嘗試訓練也并沒有有效收斂.然而穩態誤差相對較小,因此有提出直接通過常數偏移[17]或者通過引入狀態積分補償[20]來解決.
此處為了進一步驗證MB-PPO的優勢,將上述算法在上述標準情況下迭代訓練1000次后,修改任務目標,即系統的獎勵或者懲罰函數形式變化如式(13)所示:
rt=cp‖pt-pdes‖+cv‖vt‖+cω‖ωt‖+co‖ot‖
(13)
co表示成本系數,ot額外表示機頭的朝向,此處所處位置必須與地面系齊平,并且穩定位置于pdes不在原點.
圖5可以明顯看出當要求變化后,傳統PPO算法為了擺脫算法訓練回到原點的影響,在接近1000次迭代過程后才與MB-PPO初始迭代時齊平.

圖5 任務目標變化的學習曲線
圖6(a)更加明顯地給出了PPO算法在任務要求發生變化時的姿態角度變化,可以明顯看出傳統PPO算法在10s左右橫滾角和俯仰角趨向于0,使四旋翼姿態接近穩定,但是由于目標的改變,算法為了繼續收斂只能繼續不斷探索狀態空間,然而算法已經迭代到了一個相對較高的價值位置,很難跳出先收斂到訓練目標點這一步.

圖6 目標變化后的角度收斂曲線
本文針對四旋翼無人機的非線性,強耦合,欠驅動等控制難點提供了一個新的基于模型的強化學習網絡.在訓練中通過對控制模型的依賴.訓練好的策略模型顯示著出色的性能,同時計算復雜度很低.相比普通的強化學習能夠更快收斂,且在不同任務切換后,依舊快速收斂.實驗也證明了這個算法具有較快的響應速度,良好的泛用性.