張瑞卿,鐘 睿,徐 毅
(1.北京航空航天大學 宇航學院,北京 102206;2.上海衛星工程研究所,上海 201109)
航天器姿態控制系統是航天器系統中關鍵的分系統,姿態控制的效果直接影響到航天器有效載荷能否在軌正常工作,如低軌氣象衛星需要通過姿態控制系統實現對月定標來完成任務[1]。傳統廣泛使用的比例-積分-微分(Proportion Integration Differentiation,PID)控制在設計控制器過程中,需要掌握準確的航天器質量參數。但航天器姿態動力學系統十分復雜,模型高度非線性,當航天器的質量參數發生較大改變且無法準備預測時(如捕獲非合作對象[2]、燃料長期消耗[3]),PID 控制設計的控制器會出現控制效果不佳,甚至是失效的情況[4]。此外,太空環境還存在很多不確定因素[5],這些都要求設計具備良好魯棒性和自適應能力的姿態控制器。
傳統強化學習方法,如Q-Learning 算法,只能解決小規模、離散空間問題,并沒有得到廣泛的使用[6]。近年來,深度學習的研究得到快速發展,研究者們也嘗試將深度學習和傳統強化學習方法結合起來進行研究,進而研究出了很多著名的算法[7],如深度Q 學習算法(Deep Q-Network,DQN)[8]、深度確定性策略梯度算法(Deep Deterministic Policy Gradient,DDPG)[9]。其中,DDPG 算法由于其狀態空間和動作空間連續,被廣泛應用于連續控制領域[10-13]。
將深度強化學習應用到控制領域時,通常需要根據控制系統的特點設計回報函數[14]。對于航天器的姿態鎮定問題,如果認為只在進入精度范圍內時獲得獎勵,那么當訓練步數越多時,獲得獎勵的概率就越小,最終導致訓練失敗,這被稱為稀疏回報問題[15]。吳恩達[16]提出了回報塑造概念,通過人為設計輔助回報函數引導算法收斂,可以減少訓練時間,提升訓練效果。在連續控制領域中,通常會設計與距離相關的輔助回報函數進行引導[17]。
擬使用DDPG 算法對航天器姿態控制器進行設計。在設計過程中,首先,建立深度強化學習方法訓練控制器所需的環境,設定回報函數,搭建基于Actor-Critic 的神經網絡框架;然后,使用DDPG算法對姿態控制器進行訓練,迭代若干回合完成對姿態控制器的訓練。
為了描述航天器姿態,規定參考坐標系為軌道坐標系ox0y0z0。在軌道坐標系ox0y0z0中,原點為航天器的質心o,z0軸指向地心,x0軸指向軌道速度方向且與z0軸方向垂直,y0軸與x0軸、z0軸垂直且共同構成右手直角坐標系。采用由軌道坐標系(ox0y0z0) 按z、x、y的順序旋轉到本體坐標系(oxbybzb)的歐拉角來描述航天器姿態,使用ψ、φ、θ分別表示偏航角、俯仰角、滾轉角。
航天器姿態動力學方程為
式中:I為航天器轉動慣量;ω為姿態角速度;M為作用在航天器上的力矩。
將此方程投影到航天器本體主軸坐標系中:
式中:Ix、Iy、Iz為航天器投影到本體系中的轉動慣量;ωx、ωy、ωz為航天器投影到本體系的角速度;Mx、My、Mz為航天器受到的力矩投影到本體系上的分量。
若只考慮航天器姿態鎮定控制問題時,航天器姿態的歐拉角都是小量。考慮航天器繞地球旋轉的軌道角速度,將姿態運動學方程代入式(2)后,可進一步將姿態動力學方程線化為線性常系數微分方程,即
式中:Ω為軌道角速度;Tcx、Tcy、Tcz為控制力矩;分別為ψ、φ的一階導數;分別是ψ、φ、θ的二階導數。
考慮重力梯度力矩,當衛星在小姿態角的情況下,投影到主坐標系下的重力梯度力矩為Tdgx和Tdgy,其表達式為
DDPG 算法是一種基于Actor-Critic 框架的算法。基于Actor-Critic 框架的強化學習算法將值函數逼近的方法和策略逼近的方法結合在一起,使用策略逼近的思想來設計Actor,讓Actor 進行動作選擇,保證了動作的連續性;而使用值函數逼近的思想設計Critic,Critic 告訴Actor 選擇的動作是否合適,由于基于值函數逼近的方法可以做到單步更新,因此也提高了學習效率。在Actor 和Critic 交互過程中,Actor 不斷迭代,得到每一個狀態下選擇每一動作的合理概率,Critic 也不斷迭代,不斷完善每個狀態下選擇每一個動作的獎懲值。
DDPG 算法在Actor-Critic 框架的基礎上,將值函數逼近和策略函數逼近結合的同時,應用了DQN算法記憶庫和凍結目標網絡的方法,做到了動作空間和狀態空間連續,也提高了學習效率。
DDPG 算法在選擇動作時,采用確定性策略μ,即輸出概率最大的動作,然后也采用了參數噪聲N來增加對環境的探索:
式中:a為實際得到的動作;μ(st|θμ)為神經網絡參數θμ在狀態s下根據確定性策略μ得到的動作。
可將DDPG 算法的目標函數J(θμ)表示為
式中:γ為Agent 短視的程度,也就是回報的衰減程度;ri為第i步的獎勵;E(·)為數學期望。
可以證明在采用確定性策略μ的DDPG 算法中,目標函數J(θμ)的梯度與動作值函數Q的期望梯度相等,故Actor 網絡的梯度為
式中:?θ為網絡梯度;μθ為網絡選擇的策略。
而Critic 網絡的梯度為
式 中:Qtarget=r+γQ′(s′,π(s′|θμ)|θQ);θQ為Critic 網絡的神經網絡參數。
根據式(9)、式(10),可以對Actor 網絡、Critic網絡的網絡參數進行更新[9]。
使用DDPG 算法對姿態控制器進行訓練時,首先建立航天器姿態動力學環境,并對姿態控制器隨機進行初始化;然后姿態控制器根據當前姿態角和姿態角速度輸出控制力矩,在控制力矩作用下航天器姿態角和姿態角速度發生改變,設置的回報函數會根據變化后的狀態給出回報,算法將當前時刻的狀態st姿態控制器輸出的控制力矩at、回報rt和下一個時刻的狀態st+1生成樣本(st,at,rt,st+1),并存放在緩存區R中,之后從緩存區中隨機抽取樣本,對控制器進行訓練,調整神經網絡的參數,迭代若干次之后便可完成對姿態控制器的訓練。具體訓練流程如下。
步驟1隨機初始化Critic 網絡Q(s,a|θQ)和Actor 網絡μ(s|θμ),權重分別為θQ和θμ。
步驟2初始化目標網絡的Q′和μ′,權重分別為θQ′=θQ和θμ′=θμ。
步驟3初始化緩存區R。
步驟4設定訓練的總回合數M,開始循環,循環步驟如下。
1)為動作探索初始化一個參數噪聲Nt;初始化狀態s1,并得到姿態角和姿態角速度的觀測值;設定每回合的總控制時長T,開始每回合的循環;根據當前策略和探索動作的參數噪聲選擇動作,也即選擇控制力矩at=μ(st|θμ)+Nt。
2)執行控制力矩at,根據航天器姿態動力學模型,航天器的姿態角和姿態角速度發生改變。得到獎勵或懲罰rt,并觀測新狀態st+1。
3)把(st,at,rt,st+1)作為樣本傳輸到R中儲存。
4)從R中隨機抽取 minibatch 個樣本(st,at,rt,st+1)。
5)設yi=ri+γQ′(si+1,μ′(si+1|θμ′)|θQ′)。
6)通過最小化誤差來更新Critic 網絡:L=
7)使用 SGD 更新 Actor 網絡:?θμ J≈
8)更新目標網絡:θQ′←τθQ+(1-τ)θQ′,θμ′←τθμ+(1-τ)θμ′。
在每個步長中,循環上述1~8 步,直到該回合結束。
步驟5 循環結束,得到訓練好的姿態控制器。
將回報函數設計為3 部分:
式中:r1為當回合中姿態角和姿態角速度都滿足目標精度范圍內時的獎勵,設置為常數,在訓練后期,r1的設置能夠使姿態角和姿態角速度更快收斂到目標精度范圍內,提高學習效率;r2為當回合中姿態角或姿態角速度不滿足目標精度時的懲罰,也即設計的輔助回報函數;r3為當回合中姿態角或姿態角速度嚴重超出允許范圍時的懲罰,設置為常數。r3的設置,一方面可以避免控制時航天器出現翻滾的情況,另一方面也可以避免計算過程中因數值過大導致訓練失敗。
設輔助回報函數r2為
式中:αi=|ψ|i+|θ|i+|φ|i、ωi=|ωx|i+|ωy|i+|ωz|i、Mi=|Tcx|i+|Tcy|i+|Tcz|i分別為姿態角、角速度和控制力矩的懲罰項;參數i為計算時所取的指數。輔助回報函數在訓練前期時,可引導姿態角,角速度和控制力矩通過訓練收斂到0;l0、l1、l2為比例系數,用于調整各懲罰項的大小關系,保證每一項都可以起作用。比例系數的設定應滿足當達到目標精度時,使回報函數數值大小落在[-1,1]內,此時訓練過程中數值比較穩定。
在進行參數調整時,首先,只保留姿態角懲罰項,調整l0的大小,使得訓練出來的控制器能夠滿足姿態角的目標精度;其次,加入角速度懲罰項,調整l1的大小,使得訓練出來的控制器能夠滿足角速度的目標精度;最后,加入力矩懲罰項,調整l2的大小,使得角速度能夠不再震蕩。
使用DDPG 算法對姿態控制器進行訓練,訓練流程參考2.2 節,對仿真中姿態動力學環境搭建和神經網絡搭建的參數進行說明。
針對三軸穩定航天器的姿態鎮定控制進行仿真。設航天器本體轉動慣量I=diag[220,210,58] kg·m2。航天器繞地球圓軌道運行,軌道角速度Ω=0.001 rad/s。仿真時需考慮重力梯度力矩的影響。
為了能夠更加充分地探索狀態空間,訓練時每回合初始時刻的姿態角和姿態角速度由系統在一定范圍內隨機生成。設訓練時每回合初始時刻,航天器3 個通道的姿態角和姿態角速度的分量在-30°~30°和-10~10 (°)/s 的范圍內隨機選擇。
使用飛輪控制,設控制力矩范圍為-5~5 N·m。在選擇控制力矩時加入Ornstein-Uhlenbeck 噪聲,噪聲可以幫助算法更加充分地探索周圍的環境,使訓練效率和效果都大大提升。
進行訓練的最大步數為106,每回合最大時長40 s,采樣時間為0.5 s,獎勵衰減值γ為0.99。建立Actor 部分的動作現實網絡和動作估計網絡、Critic部分的狀態現實網絡和狀態估計網絡時,所建立的神經網絡均為結構相同的BP 神經網絡,使用ReLU函數作為神經網絡的激活函數,中間的隱藏層神經元個數為256 個,訓練控制器使用的輔助回報函數為式(11),選擇i=1,其他條件保持不變。
為了測試使用強化學習方法訓練得到的姿態控制器不依賴于航天器的質量參數,使用訓練好的姿態控制器對不同質量參數的受擾航天器實施控制。設初始時刻受擾航天器3 個通道的姿態角均為30°,姿態角速度均為10 (°)/s。設置3 組不同質量參數的航天器,分別為訓練時使用的航天器轉動慣量I,將轉動慣量減小50%的I/2 和將轉動慣量增加100%的2I。3 組測試中受擾航天器的姿態角、姿態角速度隨時間的變化曲線如圖1 所示。

圖1 不同轉動慣量時姿態角和姿態角速度變化曲線Fig.1 Curves of the attitude angle and attitude angle velocity at different values of the inertia moment
由圖1(a)可知,盡管質量參數發生較大的改變,姿態角3 條曲線最終都收斂到了0 附近,并且滿足精度要求,由于轉動慣量發生變化,而力矩限制范圍沒有變,因此控制時間會隨著轉動慣量增大而增大。由圖1(b)可知,當轉動慣量減小50%時,角速度曲線出現了小幅的震蕩,其中z軸的震蕩幅度最大,但仍然在誤差允許范圍內,沒有出現發散的情況。通過對比圖1 中的曲線可以發現,盡管質量參數發生較大改變,經過DDPG 算法訓練的姿態控制器仍然能夠較好地完成姿態控制任務,控制器對質量參數變化具有良好的魯棒性。
測試訓練好的控制器是否可以應對系統存在測量誤差和存在外界干擾力矩的情況。設測量噪聲在-1°≤φ、θ、ψ≤1°和-1 (°)/s ≤ωx、ωy、ωz≤1 (°)/s內隨機產生,力矩噪聲均值為通過策略選擇得到的力矩值,噪聲方差為2 N·m。仿真結果如圖2所示。

圖2 有無噪聲時姿態角和姿態角速度變化曲線Fig.2 Curves of the attitude angle and attitude angle velocity with and without noise
圖2 為同時加入測量噪聲和干擾力矩后,受擾航天器的姿態角、姿態角速度和控制力矩隨時間的變化曲線圖。由圖2 可知,當加入測量噪聲和干擾力矩之后,控制系統的調節時間變化不大,但穩態誤差有所增大,說明強化學習控制器可以做到在一定范圍內的測量噪聲和干擾力矩的作用下,使受擾控制器恢復姿態鎮定。
對不同輔助回報函數進行實驗,訓練控制器使用的輔助回報函數為式(11),參數i分別選擇0.5、1.0、2.0,分別代表選擇了凸函數、線性函數、凹函數。使用不同輔助回報函數進行訓練,訓練得到的滿足要求的控制器訓練需要的步數和最終控制器的性能均有所不同。對不同輔助函數訓練得到的控制器進行測試,并將測試結果進行整理,見表1。

表1 不同輔助回報函數訓練效果比較Tab.1 Comparison of the training effects of different auxiliary reward functions
由表1 可知,訓練得到控制器的精度隨著i的增大而減小,而訓練的步數則是當i=1 時最少,但數量級相同。分析其原因,由于設置最終的控制精度絕對值小于1,此時若輔助回報函數取凹函數,則算法訓練到后期接近目標控制精度時,輔助回報函數的數量級將會更小,計算出來的更新Critic 梯度也會更小,導致后期輔助回報函數失效,此時無法再向更高的精度收斂,而使用凸函數則可以使精度更高。訓練步數方面說明不同i的取值對訓練步數的影響不大,需要考慮其他參數設置。
使用強化學習方法對航天器進行了姿態控制器設計。強化學習中,選擇了能夠用于連續控制領域的DDPG 算法。DDPG 算法能夠通過與航天器姿態動力學環境進行互動,得到訓練樣本,然后隨機選擇訓練樣本,根據回報函數計算誤差,并對Actor 和Critic 神經網絡進行更新,最終通過迭代得到訓練好的控制器。強化學習在整個訓練過程中沒有用到航天器的相關參數,表現出更好的魯棒性。
通過仿真測試,驗證了DDPG 算法設計的控制器對航天器質量參數具有良好的魯棒性,并且發現了控制器在環境中的力矩干擾和測量噪聲也具有一定的控制能力。回報函數設計對強化學習訓練效果具有很大影響,因此還對不同回報函數進行對比,實驗結果表明,當控制精度絕對值小于1 時,設置凹函數會提高控制器的精度。
但只考慮了強化學習在地面訓練控制器后再上天在軌控制,而未考慮強化學習直接在軌進行學習控制,后面將進行在軌學習方面的研究。