王偉, 吳昊, 劉鴻勛, 楊溢
(南京信息工程大學自動化學院, 南京 210000)
四旋翼無人機誕生于20世紀,在軍事、運輸、農業、航拍等活動中被廣泛運用,無人機作為一種有4個控制輸入以及6種狀態輸出的多輸入多輸出的強耦合的非線性的欠驅動系統,加上外界環境對無人機的各種干擾,無人機控制也面臨著諸多難點。無人機控制主要包括位置控制、速度控制以及姿態控制,而姿態控制作為無人機的底層控制,尤為重要。學者們提出了眾多姿態控制算法來優化無人機控制。
目前,比例積分微分(proportional-integral-derivative PID)算法是工業中被用到的主流的無人機控制算法,但PID的參數是通過多次實驗和經驗判斷來選取的,所以難以滿足動態性能的要求[1]。模型預測控制(model predictive control,MPC),是一種基于模型的閉環優化控制策略,在工業界的影響力僅次于PID控制,被廣泛應用于機器人控制,相對于線性二次調節(linear quadratic regulator, LQR)和PID等只能考慮輸入輸出的約束,MPC可以綜合考慮各種狀態的約束,王曉海等[2]提出了一種基于模型預測控制和擴張狀態觀測器的復合控制器來解決無人機在干擾下的姿態跟蹤問題,但也存在著比如對模型建立的準確度較高,優化問題計算量龐大,針對不同的環境需要設置不同的損失函數以及建立不同的模型,泛化性弱等問題。模糊控制不需要求解被控對象的數學模型,適用于大多模型參數不確定或者有著較大波動的系統,劉用等[3]提出了基于模糊控制的姿態控制算法來提升機器人的姿態穩定性,但其自適應能力有限,精度也不高,控制規則的優化也有著一定的困難。還有許多先進控制算法如滑模控制[4]、魯棒控制[5]等也被廣泛運用,但這些算法都有著一定的局限性,對環境變化的適應性較差,也不能適用于所有類型的無人機。
隨著人工智能的發展,無人駕駛、人臉識別、圖像識別、同步定位與建圖[6]等領域都取得了重大的成功,基于深度學習的控制也展現出了巨大的潛力,強化學習作為機器學習的代表之一,已經被成功應用于各種控制算法,智能體通過利用行動與環境進行交互,根據所獲得的獎懲來不斷地學習與成長[7]。
在強化學習算法中,Q-learning和Sarsa是用于優化解決馬爾科夫決策過程(Markov decision process, MDP)中的主流算法,但由于傳統的強化學習有著一定局限性,因為其動作空間和狀態空間往往都是有限大小的,且大多都是離散的情況,然而在實際無人機控制中,狀態空間和動作空間都是龐大且連續的[8],所以確定性策略梯度(deterministic policy gradient, DPG)以及其優化版本Deep DPG(DDPG)等算法都能解決傳統強化學習中的短板問題[9]。
李岸蕎等[10]使用基于模仿專家經驗的深度強化學習方法,實現了四足機器人的后空翻動作的學習,Zhang等[11]提出了基于模型的強化學習實現衛星的控制方法,Liu等[12]利用強化學習應用于水下航行器設計。此外,為了使強化學習算法更具有實用性,很多學者提出了一些優化算法,Long等[13]提出了一種基于單一批評家的神經網絡的強化學習算法用于系統的最優跟蹤,以及Han等[14]通過雙重回放記憶來設計神經網絡。Wang等[15]通過使用積分補償器來消除DDPG方法中的穩定誤差,但積分補償器是一種外部的方法,他并不會直接解決控制器內部的問題。付宇鵬等[16]提出了一種基于強化學習的無人機姿態控制器設計,但其在追蹤目標值的過程中雖然響應非常快速,但不可避免地帶來了較大的超調。
基于此,現提出一種基于DDPG來設計的一種無穩態誤差、魯棒性強、動態穩定且快速響應的四旋翼控制算法,針對強化學習算法設計的控制器帶來的超調的問題。在該方法中,結合Actor-Critic結構與參考模型,期望解決系統過于追求目標跟蹤的快速性,從而導致控制量過大的問題。以期改進后的算法能有效地處理外部干擾和環境變化,對目標值響應快速,而且可以有效地解決超調和穩態誤差的問題。
強化學習的目的是為找到一個策略,智能體根據該策略在環境中采取行為動作(action)[17],每次動作都會帶來不同的獎勵(reward),最后獲得了最大的獎勵值的總和(total reward)。這個獎勵與控制的目標相關[18]。強化學習解決的是馬爾可夫決策過程(MDP),其正式框架如下:一個馬爾可夫決策過程由一個四元組(S,A,P,R)組成,其中S是狀態集,A是動作集,P表示狀態轉換概率函數,R表示獎勵函數,其迭代過程如圖1所示。

圖1 智能體環境交互迭代Fig.1 Agent-environment interaction iteration
智能體首先觀察當前環境的狀態St∈S,然后根據策略πa,a是表示該策略的參數,采取一個行動at∈A,與環境進行交互。在動作at作用下狀態由St∈S轉化為St+1∈S,同時環境會立即給Agent一個獎勵rt∈R(st,at),作為MDP問題,對于每一個狀態-動作s1a1...snan之間的轉化都要遵守具有條件概率的平穩轉換動態分布:P(St+1|S1,a1,…,St,at),即狀態S1轉化為狀態Sn的概率為P。


(1)
式(1)中:Vπ(st,at)為狀態s的價值函數,表示在狀態s下的預期累計獎勵;R(s)為在狀態s下采取動作后取得的及時獎勵;γ為折扣因子,表示未來獎勵的折扣比例;Vπ(s′)表示下一個狀態s′的價值函數,無人機控制的主要目標是找到合適的控制策略,可以幫助無人機快速穩定地到達所期望的狀態,現在可以用一個全新的方法--強化學習來實現這個目標,在時域中,選擇了適當的動作和狀態,將無人機的動態模型形式假設為MDP。在處理連續的狀態和動作的問題的時候,策略梯度算法是一個很好的選擇,參數化的隨機策略πθ(s,a)可以直接生成控制動作,使用參數?,在給定狀態S的情況下,采取動作a。然后根據梯度來調整參數以此來改善策略。
?θJ(πθ)=Es~ρπ,a~πθ[?θlnπθ(s,a)Qπθ(s,a)]
(2)
式(2)中:?θJ(πθ)為關于策略參數θ的梯度;E為智能體在不同狀態下根據策略做出動作的概率的期望值;πθ(s,a)為根據策略參數θ做出動作a的概率分布;Qπθ(s,a)為選取動作a的動作價值函數,表示采取動作后的累積獎勵,這是一種隨機策略選擇算法,但在實際無人機控制中,隨機策略是危險且無法預測的,這種基本方法無法處理無人機復雜的非線性控制問題。
這些年來,通常使用一些確定性策略來改進算法,本文就是在它們的基礎上建立起來的。
四旋翼無人機的動力學模型構建較為復雜,如圖2所示。

F1~F4為電機控制產生的升力;θ為無人機的俯仰角;γ為無人機的橫滾角;φ為無人機的偏航角圖2 四旋翼無人機模型Fig.2 Quadcopter drone model
四旋翼無人機控制系統XY軸上主要由姿態控制、速度控制、位置控制組成,Z軸上主要由高度方向的速度控制以及高度方向的位置控制組成,本文主要研究的為四旋翼無人機的姿態控制器,所以只需建立四旋翼無人機的子系統的數學模型。由于無人機的俯仰和橫滾姿態角速度目標值和姿態角速度之間存在著一階慣性環節,即

(3)

(4)

(5)

由式(3)可以得到其狀態方程系數A和B以及輸出方程的C表示式為

(6)

(7)

(8)
D=[0]
(9)
在經過無人機實地飛行后,采集飛行數據,之后由MATLAB的IDENT工具箱,根據式(3)進行數據擬合,可以得到K=1,T=0.072 172。
如圖3所示是飛機實際飛行數據以及模型數據的對比,其中藍線為模型擬合的數據,黑線為實際飛行的數據,可以看到兩個曲線基本保持一致,可以認為本文動力學模型的建立是正確有效的。

圖3 模型建立數據對比Fig.3 Data comparison of models
本文所用的RM-DDPG(reference model-deep deterministic policy gradient)算法的基礎是DDPG算法,對于隨機策略梯度而言,在一個狀態下選取動作的依據是一個概率分布,即具有不確定性。而確定性策略梯度采用確定性策略來逼近actor函數,取代了原策略梯度法中的隨機策略。事實上,確定性策略是隨機策略的一種極限情況。該算法的核心思想就是使用動作函數πμ中的參數μ來表示策略,然后沿著式(10)的梯度的方向不斷優化參數μ[19]。

Es~ρπ,a~πα[?απα(s)?aQπα(s,a)]
(10)
式(10)中:?μJ(πμ)為Actor網絡的梯度;ρπ(s)為狀態分布;?α為取動作的梯度。
式(10)中Qπα(s,a)實際上是狀態價值函數,其中很重要的一點是,如上文所說,對于確定性策略,給定狀態s和策略參數θ時,其選取的動作是固定的。也就是說,當初始狀態已知時,用確定性策略所得到的行為軌跡永遠都是不變的,所以用什么來選取行動價值函數Qπ(s,a)是極為重要的,所以本文研究中整個確定性策略的學習框架都采用AC(actor-ritic)算法的方法。在AC體系中,包括兩個地位相同的元素,一個元素是Actor即行動策略,另一個元素是Critic即評估策略。價值函數Qπ(s,a)被另外一個價值函Qω(s,a)代替,用Qω(s,a)來逼近Qπ(s,a),使得Qω(s,a)[20],其中ω為待逼近的參數,actor函數的參數以確定性策略梯度的方法更新策略參數。
θt+1=θt+αθ?θπθ(st)?aQω(St,at)|a=πμ(s)
(11)
式(11)中:αθ為學習率。
DDPG算法中的AC結構如圖4所示。

Actor為策略網絡;critic為評價網絡;Action為智能體根據策略而采取的行動圖4 Actor-Critic結構Fig.4 Actor-Critic structure
根據貝爾曼方程,利用值函數逼近的方法更新值函數參數[21],所以本文研究中定義了TD差誤差(temporal difference error,TD error)。
δt=rt+γQω[St+1,πμ(St+1)]-Qω(St,at)
(12)
并且選取了一種簡單的確定性梯度下降策略來減小TD誤差,即
ωt+1=ωt+αωδt?ωQω(St,at)
(13)
式(13)中:ωt為策略參數;αω為學習率;δt為關于參數的梯度;?ωQω(St,at)為動作價值函數關于動作a的梯度,表示狀態S下采取動作a的梯度。
由于四旋翼無人機控制是一個復雜的非線性問題[22],而且它的狀態和動作都是連續且龐大的,因此,通常很難估計actor函數和critic函數,所以本文研究使用神經網絡來代替actor函數和critic函數。為了提高訓練的效率和穩定性,還應用了經驗數據重放并且設計了目標網絡。
大多數優化算法通常都是假設實驗數據樣本是相同分布且獨立的,當樣本是在同一個環境中選取的時候,就會出現經驗數據的相關性和非平穩分布的問題,所以本文研究設計一個大小為M的回放緩沖區D={e1,e2,…,em}來存儲樣本,e表示單位訓練時間步長中的經驗數據,其數據類型為{st,at,rt,st+1}。緩沖區的長度是有限的,當緩沖區存儲滿的時候,最早的樣本數據會被丟棄。每個單位訓練時間步長都會隨機均勻隨機從緩沖區內采樣,來更新Actor網絡和Critic網絡。通過這種方法數據的相關性將大大減小。此外,還設定了一個目標網絡,以進一步提高學習的穩定性,針對Actor-Critic網絡的更新不僅僅是簡單的權重的復制,而是進行數據的軟更新,在訓練開始的時候,用Critic網絡克隆一個目標網絡,在每次學習迭代的時候,目標網絡的權重將以較小的更新率緩慢地與Critic網絡同步,假設速率μ≤1,則有ω′=μω+(1-μ)ω′。其中分別定義Qω′(s,a)表示Critic目標網絡,ω′為Critic目標網絡的權重。由于參數更新比較緩慢,學習的穩定性大大提高。因為需要加入經驗回放的方法,還需要重寫Critic目標網絡的更新方程,對經驗緩沖區內的經驗數據(si,ai,ri,s′i)進行重新采樣后,通過最小化損失函數,來更新Critic網絡。

(14)
yi=ri+γQ′[si+1,μ′(si+1|θμ′)|θQ′]
(15)
式中:Qω(si,ai)|θQ為Critic網絡在當前狀態和動作下的估計動作值函數;yi為帶有行動獎勵的Critic目標網絡的輸出;ri為當下狀態的實時獎勵;γ為折扣因子,即未來獎勵的折扣比例;μ′(si+1|θμ′)|θQ′為目標策略網絡在下一狀態下的預測動作。
更新Critic網絡參數的公式為

(16)
ωt+1=ωt+αω?ωLoss(ω)
(17)
同時,需要按照DDPG算法更新actor網絡參數,即

(18)
μt+1=μt+αμ?μJ(μ)
(19)
根據文獻[14]和文獻[16]中的研究究可以發現,DDPG算法在四旋翼無人機控制中存在兩個問題分別是控制飽和以及穩態誤差。
關于穩態誤差,實驗結果表明,在大多數情況下,無論給予控制器多長時間,或者什么樣的訓練策略,或者訓練需要多少次迭代,穩態誤差總是存在的。其中有兩個原因:第一個原因是,動作值函數估計不準確,即使在非常簡單的控制任務中,也無法準確地獲得動作值。對于四旋翼無人機控制等復雜任務,估計動作值的準確性要低得多。另一個更重要的原因是,由DDPG算法訓練的控制器不是伺服系統,因為它沒有考慮誤差積分,對于具有阻尼和外部干擾的系統,穩態誤差無法通過這種方式消除。通過采用角速度誤差的積分作為擴展狀態代入控制器,可以有效地消除穩態誤差。
控制量飽是一個在控制算法設計中常見的問題[23]。在算法中總是以被控對象能否快速追上目標值作為判斷算法是否優秀的一個指標,但在四旋翼無人機的控制中,假如控制量過大,會導致無人機直接側翻,與無人機實際物理運動原則不符??梢园l現,獎勵的設置是解決這一問題的關鍵,在通過最小化損失函數更新批評家網絡的過程中,獎勵是每次迭代的重要基礎。當前TD誤差算法獲得的獎勵是一個簡單的標量,僅僅為四旋翼無人機的目標姿態角和反饋姿態角之間的誤差。這種獲得獎勵的策略對于復雜的任務而言不能滿足需求,在四旋翼無人機中受控對象有許多重要的狀態量:角、角速度、角加速度,所以控制目標不僅是盡快跟蹤目標的姿態角,系統的穩定性也要被考慮在內。為了解決這個問題,進一步改進了獎勵的形式,即

(20)
式(20)中:Ref(sj)為所有狀態的目標值;sj為所有狀態變量,包括角度、角速度和角加速度;αk為可設定的權重。
本文研究中添加了一個參考模型,來設計一個具有高穩定性和動態性能的四旋翼無人機控制系統。根據目標產生參考信號,并對四旋翼無人機模型進行重新分析,選擇角度、角速度、角加速度和角度誤差積分作為狀態變量,建立指定的參考模型,即

(21)
ym=Cmxm
(22)
式中:um為參考輸入。
設置e=x-xm,可以獲得狀態變量誤差,為了消除穩態誤差,提出了一種新的狀態估計方法ζy,即

(23)
最后,得到了一個三階參考模型,狀態變量分別為角加速度、角速度和角度目標值。四旋翼無人機的模型的狀態變量為角加速度、角速度和角,角誤差的積分。這是一個標準的可以快速穩定響應的伺服系統。


Critic網絡的輸入是四旋翼無人機的狀態、參考模型的狀態以及Actor網絡生成的控制輸入,其隱藏層和激活函數類似于Actor網絡。此外,為了更快更好地訓練Actor網絡,Critic的輸出層更換為一個線性的激活函數。
Reward為所有狀態誤差error的總和,作為反饋輸入到系統,這樣處理就可以使得Actor網絡在輸出的時候規避系統存在的穩態誤差。
在做完以上處理后,可以使得控制信號可以快速而穩定地追上參考模型的輸出,同時可以避免控制量太大導致追蹤目標角度的速度過快從而產生的系統超調,并且可以有效地彌補穩態誤差。
由于四旋翼無人機具有對稱的結構,所以俯仰和滾轉的控制器結構是相同的。
如表1所示是算法的流程,首先克隆一個Critic網絡作為Critic目標網絡,之后Actor網絡給四旋翼無人機模型輸出控制信號,參考模型也會輸出一個目標值,同時,對于每一訓練步長而言,訓練的模型的狀態都會被存儲在記憶緩存區內,當存在了足夠多的樣本時就開始訓練。

表1 RM-DDPG算法Table 1 RM-DDPG algorithm
對于無人機模型,選擇了一種電力四旋翼無人機。然后用測量的無人機參數識別了動態模型為了使系統在快速響應的基礎上,更具有穩定性,設計了姿態參考模型,階躍響應如圖6所示。

圖6 參考模型設計效果圖Fig.6 Design diagram of the reference model
神經網絡和模型的建立用的是python和pytorch,如圖7所示,是每個訓練步驟的累積獎勵,可以看到reward不斷地在收斂。

圖7 Reward值Fig.7 Reward value
設計了一個模擬測試,設置目標姿態角為0.3弧度,圖8是無人機在追蹤目標姿態角的性能圖,可以看到姿態追蹤過程中,沒有出現超調與穩態誤差。圖9顯示的是姿態角與目標姿態角隨著時間變化的誤差,在追蹤的過程中始終保持較小的值。圖10表示的是角速度的追蹤性能,圖11顯示的是其角速度與目標角速度的誤差變化,可以發現與角度追蹤一樣,角速度的追蹤也沒有出現超調與穩態誤差,追蹤誤差也始終保持在較小的范圍內。

圖8 階躍響應-角度狀態變化Fig.8 Step response-angular state change

圖9 階躍響應-角度誤差變化Fig.9 Step response-angle error change

圖10 階躍響應-角速度狀態變化Fig.10 Step response-angular velocity state change

圖11 階躍響應-角速度誤差變化Fig.11 Step response-angular velocity error change
由RM-DDPG算法的實驗結果可知,無人機的控制輸入因為參考模型的加入不會直接達到最大值而飽和,它可以比較緩和地追上目標值,因此該控制器較為穩定,并且從圖11可以發現消除了穩態誤差。
為了進一步驗證控制器的魯棒性,在原有模型的基礎之上對部分參數進行修改,來模擬無人機在實際飛行過程中可能出現的未建模誤差以及干擾,模擬了不同模型下的無人機進行實驗。圖12是不同機型的在姿態角追蹤上的表現,圖13為不同機型的姿態角追蹤誤差,實驗表明,RM-DDPG算法在不同的機型上,姿態角的追蹤效果都是較為良好的,可以平緩地追上目標值,追蹤誤差始終保持在較小的范圍內,并且都沒有穩態誤差以及超調,具有較好的魯棒性。

圖12 魯棒性測試-角度追蹤Fig.12 Robust test-angle tracking
針對四旋翼無人機的非線性的強耦合以及欠驅動的特性,設計了一種基于深度確定性策略梯度算法和參考模型的四旋翼無人機的姿態控制器,對無人機模型進行了分析及簡化,建立了四旋翼無人機的姿態模型,找到造成控制量飽和以及存在穩態誤差的原因,通過設計參考模型解決了這兩個問題,經過訓練后,依據給定的目標姿態角的階躍響應測試結果表明:①該算法有效地提升了系統的穩定性,消除了穩態誤差具有良好的泛用性;②根據魯棒性實驗結果表明,該算法有優良的魯棒性。