許軻, 吳鳳鴿, 趙軍鎖
(中國科學院軟件研究所, 北京 100190)
近年來,隨著衛星軟硬件技術的迅速發展,衛星逐漸向小型化、低成本化、快速設計及部署的方向發展,每年有過百顆小衛星成功發射,這些小衛星有著不同的載荷和任務目標、物理參數和軌道等,因此對其姿態控制系統的要求也不盡相同。而隨著軟件定義衛星概念的提出,利用可重組的動態載荷和智能性更強的姿態控制算法,有助于研發出更加通用的姿態控制系統。此外,隨著衛星數量的增加,地面測控系統也越來越難以滿足需求,太空環境的不穩定性[1]和衛星本身可能出現的故障[2-3]等因素也對衛星姿態控制系統的自主性和適應性提出了更高的要求。因此,有必要研發新型的衛星姿態智能控制系統。
基于深度學習和強化學習算法已經成功地解決了很多具有挑戰性的問題,如圍棋程序和機器人學習[4]。AlphaZero[5]作為基于深度強化學習的圍棋程序新版本,在棋類游戲的離散狀態空間下已經體現出了其在沒有棋譜等先驗知識的情況下學會多種棋類游戲并且超越人類的能力。引導策略搜索(Guided Policy Search,GPS)[4]作為一種基于模型(model-based)的算法,可以在機器人控制這種高維連續狀態空間下重復實驗中不斷優化控制效果,完成機器人拾取物體等動作。而深度確定性策略梯度(Deep Deterministic Policy Gradient,DDPG)算法[6]作為一種非基于模型(model-free)的算法,也在OpenAI Gym[7]仿真平臺上實現了多種控制任務的自主學習,完成傳統控制算法難以完成的復雜控制目標,如自主學習雙足行走等。這些實驗結果表明深度強化學習(Deep Reinforcement Learning,DRL)算法可以達到軟件定義衛星姿態控制系統對自主性、智能性、適應性的要求。
然而機器學習算法普遍對計算平臺的計算能力和存儲能力有較高的要求,衛星姿態控制系統往往使用的是PID控制[8-9]、滑模控制[10]、模糊控制[11-12]等傳統控制算法。PID控制算法易于理解和實現,需要的計算資源少,仍然是目前衛星姿態控制使用的主流基礎控制算法,然而該算法需要針對不同的硬件系統和軟件進行調節,無法快速適應空間環境的變化和空間任務的變化。滑模控制的主要目的是處理控制系統的非線性,和PID控制一樣,有自適應能力的問題。智能控制算法如模糊控制,提升了系統的適應能力,然而模糊控制系統需要專家知識進行系統設計,而不是根據實時生成的數據進行調節。軟件定義衛星搭載的超算平臺大大提升了衛星的計算能力,因此使得基于機器學習的控制算法成為可能,從而進一步提升控制算法的自適應能力和自主性。
本文使用了基于模型的深度強化學習算法來建立姿態控制系統。該算法主要由3部分構成:動力學模型網絡、控制策略網絡以及基于啟發式搜索的優化方法。其中,動力學模型網絡使用深度學習網絡、可以根據地面仿真和在線生成數據的學習生成動力學模型,使用基于模型的算法比非基于模型的算法收斂速度更快,可以更快的速度找到優化策略。控制策略網絡同樣使用深度學習網絡,可以根據地面仿真和啟發式搜索優化的效果來學習控制策略,同時為啟發式搜索的優化提供具有一定效果的初始策略,加速算法的收斂。啟發式搜索根據動力學模型和強化學習原理進行策略迭代,在每一步實際執行控制策略時尋找更優的策略。通過這種深度強化學習算法,姿態控制系統可以在衛星物理參數未知、執行機構和傳感器不同、衛星軌道不同的情況下根據在線生成的數據不斷優化姿態控制的效果。
背景分為3個部分,包括姿態仿真系統、傳統控制算法和強化學習算法。首先介紹姿態仿真系統,由于衛星發射成本較高,在進行姿態控制算法實驗時,需要在仿真環境下進行仿真實驗,仿真系統主要考慮到衛星姿態動力學、運動學模型和空間干擾力矩。衛星的姿態動力學介紹衛星角速度隨執行機構控制力矩的變化規律,運動學模型介紹衛星姿態四元數隨角速度的變化規律。衛星姿態動力學和運動學模型是進行衛星姿態控制的基礎模型。然后介紹傳統控制算法,PID控制算法仍然是衛星姿態控制的主流算法,因此主要介紹基于PID的衛星姿態控制算法相關研究進展。最后介紹強化學習算法的基礎,主要介紹應用較為廣泛的Q學習算法,以及在Q學習基礎上結合深度學習發展起來的深度強化學習。
如圖1所示,衛星姿態動力學模型的輸入為衛星所受的空間環境力矩,輸出為衛星姿態角速度,動力學模型主要依賴于衛星的動力學方程。
如果假設衛星為剛體,那么衛星姿態的動力學模型表達式為
(1)
式中:M為衛星的控制力矩,為3維空間矢量;H為衛星的角動量;ω為衛星的角速度;t為時間。式(1)表示了衛星的角速度和控制力矩根據轉動慣量變化的關系。
以四元數表示衛星的姿態,那么衛星姿態運動學表達式為
(2)

(3)
式中:ωx、ωy和ωz分別為衛星姿態角速度在三維坐標軸的分量。
此外,衛星的姿態還會受到空間干擾力矩的影響,主要包括重力梯度力矩、空氣阻力力矩、太陽光壓力矩和潮汐力矩等。
根據文獻[13]的攝動力數據,結合經驗公式推算出干擾力矩如表1所示,可見在不同的軌道高度下,不同類型的干擾力矩對姿態的影響也有所不同。在低軌狀態下,地球重力梯度力矩和空氣阻力力矩是主要的干擾力矩;在中軌狀態下,地球重力梯度力矩依舊是主要的干擾力矩,而空氣阻力力矩已經大幅下降,太陽光壓力矩、月球和太陽重力梯度力矩影響增大;而在地球同步軌道狀態下,地球重力梯度力矩也大幅下降,空氣阻力力矩則可以忽略不計。

圖1 衛星姿態控制系統過程圖Fig.1 Procedure chart of satellite attitude control system

表1 3種經典軌道狀態下的干擾力矩Table 1 Disturbance torque under three classic orbit statesN·m
主要考慮了3種干擾力矩的影響:地球重力梯度力矩、空氣阻力力矩和太陽光壓力矩。每種干擾力矩的影響主要依據文獻中使用的經驗公式進行仿真計算。
地球重力梯度力矩計算式為[14]
(4)

空氣阻力力矩計算式為[14]
(5)
式中:CD為空氣阻力參數;ρ為大氣密度參數,由標準大氣模型計算得到;Vr為衛星相對于大氣的速度;A為衛星的迎風面積;Cp為壓力中心相對于衛星中心距離的向量;v為風速的單位方向向量。這些參數可以根據經驗進行初始化。
太陽光壓力矩計算式為[15]
Ts=-PAcosα(Cnen+Ctet)
(6)
式中:P為距離1 AU的太陽輻射壓力常數,1 AU≈1.496×1 011m;en和et分別為衛星的法向和切向向量;α為太陽角度;Cn和Ct表達式分別為
Cn=(1+crcs)cosα+Bfcr(1-cs)+
Ct=(1-crcs)sinα
其中:cr為表面反射率;cs為鏡面反射系數;ef和eb分別為前向和后向輻射系數;Bf和Bb分別為前向和后向的非朗伯系數。
將3種干擾力矩和控制力矩Tc相疊加,可以給出衛星所受的合力矩的影響,即本節所述的衛星姿態動力學方程中的M值:
M=Tc+Tg+Ta+Ts
(7)
雖然PID控制有前面所述的缺點,但因為其實現簡單,計算資源要求較低,仍然被大量衛星姿態控制系統所使用。PID控制算法的定義如下[16]:
(8)
式中:Kp、Ki和Kd是非負參數,分別為比例、積分和微分系數;e(t)為當前狀態和目標狀態的誤差值;τ為積分中間變量。PID控制算法的原理如圖2所示,反饋環節通過對3種誤差的調節實驗控制過程,y(t)表示當前狀態,r(t)表示目標狀態。
通常使用比例(P)和微分(D)環節設計衛星姿態控制算法,用式(9)表示:
a=Kpqe+Kdωe
(9)
式中:qe為衛星姿態四元數的誤差;ωe為衛星角速度的誤差;a為執行機構的控制力矩輸出。忽略積分環節可以增加控制算法對誤差的反應速度,但可能會導致控制的穩定度下降。
PID控制算法的性能會受到傳感器誤差和空間環境的干擾力矩的影響,導致衛星的姿態確定系統穩定性降低。因此一種平滑角速度觀測器[9]的方法被提出以提升衛星姿態的估計精度:
a=Kpqe+KdC(q)ωe
(10)
式中:C(q)為根據衛星姿態對角速度的補償矩陣。這類改進方法提升了控制算法輸入的精度和穩定度,從而提升了算法的性能。
PID控制算法的性能同樣會受到執行機構誤差的影響,導致衛星的姿態控制穩定性下降。因此一種非線性模型[2]被提出,用來處理執行機構飽和,死區非線性和動量輪速度限制的問題。一種基于最優控制的方法[8]被提出,使用磁力矩器幫助動量輪進行動量卸載,防止其到達速度上限。這一類改進可以提升控制系統輸出的性能。

圖2 PID控制算法原理圖Fig.2 Schematic diagram of PID control algorithm
為了提升控制系統的整體性能,一種基于量化控制的方法[17]被提出用來改進PID控制的反饋機制。此外,一種使用線性二次型控制算法的方法被提出,能夠比傳統PID控制降低8%的能量消耗[18]。在能量有限的太空環境中,節約能源可以讓衛星整體的運行更加穩定。
這些在傳統PID控制基礎上改進的方法需要對不同問題分別建模分析并且加以改進,然而基于機器學習的深度強化學習姿態控制算法可以根據實時生成的數據利用神經網絡的泛化能力對這些問題進行整體優化。例如在輸入不穩定的情況下,狀態觀測器的補償矩陣可以通過深度強化學習中的模型網絡進行學習優化,同時執行機構的非線性誤差也可以通過深度強化學習中的策略網絡進行自適應的學習改進;此外,能量消耗也可以通過強化學習的價值函數給出,讓強化學習算法在優化控制效果的同時盡量降低系統的能量消耗。
PID控制仍可作為智能控制算法的基礎策略,為強化學習控制提供初始化功能。強化學習包含以下幾個部分:智能體、智能體所處的環境和所執行的動作。在每個離散時間步長t內智能體會觀測其所處的環境得到t時刻的狀態st,根據該狀態執行動作at,并且獲得此時的獎勵值rt以及達到下一時刻的狀態st+1。在一個具有隨機性的環境中,包含一個初始狀態分布p(s0),狀態轉移模型p(st+1st,at)和獎勵函數r。
Q學習[19]作為強化學習里的一類基本算法,使用:
(11)

隨著深度學習技術的發展,神經網絡對高維度且高度非線性的函數擬合能力越來越強,神經網絡對復雜Q值的表示能力也越來越強,因此在DDPG算法中,使用了神經網絡擬合Q值,加強了強化學習算法對高維空間內復雜任務的學習能力。假設擬合函數為θQ,那么損失函數的定義如下:

(12)
式中:Q(st,atθQ)為t時刻網絡對Q值的估計;最后兩項為t時刻執行動作之后的效果。DDPG算法通過最小化損失函數來擬合Q值。該算法同時使用神經網絡來擬合策略函數μ(sθμ),該函數會根據當前狀態和網絡中的參數確定執行的策略,因此網絡同時需要對策略網絡進行學習,更新算法定義如下:
(13)

μ′(s)=μ(sθμ)+N
(14)
式中:N為隨著時間衰減的噪聲值。不同于傳統有監督學習的是,直接對Q值網絡和策略網絡的更新收斂性能不佳,需要設計額外的目標網絡來穩定網絡參數,具體介紹在2.1節中。
機器學習算法通常使用梯度下降算法進行算法收斂的計算,但在模型梯度不可靠的時候,也會采取其他方案進行優化計算。對應于梯度下降算法,啟發式搜索類的算法是另一種對神經網絡等機器學習算法進行優化的方案。梯度下降算法的優點是收斂速度快,缺點是容易陷入局部最優。而啟發式搜索類的算法收斂速度較慢,但是一種全局性的優化算法。因此,在很多實際應用中,也會采用基于啟發式搜索的優化方法進行機器學習算法收斂過程的計算。
常用的啟發式搜索算法有很多種,如粒子群優化、人工蜂群算法、蟻群算法、螢火蟲算法、模擬退火算法和進化策略等。每種算法的優缺點和應用場景都有所不同。本文對啟發式搜索算法的具體選取在2.3節中介紹。
基于模型的深度強化學習算法由以下3個部分組成:模型網絡、策略網絡和啟發式搜索。如圖3所示,模型網絡為啟發式搜索提供動力學模型,并且從實際執行的數據中學習,提高模型的精度。策略網絡為模型預測控制提供根據經驗優化的初始策略,并且從實際執行的數據中學習,優化初始策略。模型策略根據模型網絡提供的動力學模型和策略網絡提供的初始策略進行優化,通過強化學習尋優,進一步優化策略,并且實際執行控制輸出。此外,本文算法在初始化時可用PID控制等對策略網絡和模型網絡進行初始化。

圖3 基于模型的深度強化學習算法原理圖Fig.3 Schematic diagram of model based deep reinforcement learning algorithm
本文算法的運行過程如下:
步驟1隨機初始化模型網絡和策略網絡,或者通過遷移學習等進行預初始化。
步驟2由策略網絡根據當前狀態計算出當前策略,然后使用模型網絡預測下一狀態并給出Q值,交給啟發式搜索進行下一步優化。
步驟3使用啟發式搜索在當前策略的鄰域進行搜索,以找到具有更高Q值的策略。
步驟4執行啟發式搜索給出的優化后的策略,并且獲取真實的狀態輸出和Q值,計算出模型預測誤差。
步驟5如果得到的Q值比初始化策略更好,則將此次結果作為策略網絡的訓練集。
步驟6如果到達的狀態空間超出了安全閾值,則使用如PID控制等引導策略使其回歸到安全區域。
步驟7每一次執行的結果都可以作為模型網絡的訓練集。
步驟8如果狀態達到且穩定在控制目標,則訓練結束,否則返回步驟2。
機器學習算法已經被應用于衛星姿態動力學構建。本文使用深度學習神經網絡構建動力學模型。模型網絡st+1=fθs(st,at)使用前一時間點的動作-狀態對作為輸入,下一時間點的狀態作為輸出,θs為網絡中的參數。系統狀態st包括四元數q和三維角速度ω,策略輸出at為三維力矩。參數可以隨機初始化,也可以通過地面仿真或事先獲取的數據進行初始化,使用遷移學習等方法進行應用。使用經過預訓練的網絡可以提高算法的在線性能。

加入模型網絡的算法比非基于模型的算法可以更快地收斂,因為模型網絡可以根據每次得到的數據進行優化,而非基于模型的算法在找到合理的解之前會進行漫長的探索,從而收斂得更慢。而且模型網絡在使用其他控制算法時也可以進行優化,讓算法的適應性更強。
策略網絡同樣使用深度網絡構建網絡模型:at=gθa(st),當前狀態st為模型的輸入,θa為網絡參數,生成的策略at為模型的輸出。類似地,模型參數可以隨機初始化,也可以通過PID控制等引導策略進行初始化,從而加快算法的收斂速度,并且降低算法進入發散不可控區域的可能性。
與模型網絡不同的是,數據中的策略并不是一個“正確的策略”,實際執行的策略也是在不斷優化中生成的,無法保證每次學習都讓策略得到優化。因此,需要使用模型預測控制作為優化方法使得生成的數據可以保證不斷優化,從而讓策略網絡的學習進一步優化。策略網絡的輸出也并不直接給出控制輸出,而是作為模型預測控制的輸入給出合理的初始策略。
和GPS算法不同的是,基于深度學習的策略網絡可以給出一個全局的初始化策略,和任務路徑無關,并且可以根據不同的任務學習模仿新的引導策略,提升在線適應的能力。
啟發式搜索包括多種性能優異的算法,如:模擬退火算法[20]、粒子群算法[21]和進化策略[22]算法等。它們使用策略網絡的輸出作為輸入,輸出獎勵值最高的動作作為最優策略。每個時間點內的獎勵函數為
t時刻的獎勵函數為狀態st下執行動作at導致的狀態st+1和目標sT之間的二次差值。負號代表二者距離越近獎勵值越高。
模擬退火算法和AlphaGo中使用的蒙特卡羅搜索樹同屬于蒙特卡羅-馬爾可夫鏈(Monte Carlo-Markov Chain,MCMC)方法,較適合于應用在多維連續空間的控制算法中。然而該算法的隨機游走過程不利于并行化實現,因此本文使用易于并行化且同樣在強化學習中被證明有效的自然進化策略算法來進行優化,以提高算法的收斂速度。
自然進化策略計算式為


式中:左邊為參數的更新梯度;右邊為計算方法;θa為策略網絡的參數,也可以直接對動作輸出進行直接優化;N(0,I)為標準差為0,方差為單位矩陣的正態分布矩陣,目的是生成一個與θ維度相同的隨機變量;σ為該隨機變量的標準差;為一個小量的正數;F函數是強化學習的價值函數,該更新公式可以使得θ參數朝F值最大的方向移動。
通過并行化執行該過程,同時生成n個隨機正態分布,并且統一對θ參數執行更新過程:

該并行化更新算法可以大幅降低運行時間。
算法1基于模型的深度強化學習算法
初始化:θa和θs。
while未到控制目標 do
生成初始策略ain←gθa(st)和最優策略aopt
while啟發式搜索 do
在范圍內搜索:aout←ain+rand()
狀態預測:st+1←fθs(st,aout)
進化策略更新:aopt
end while
執行aopt并得到數據
根據數據優化θa和θs
end while
本文使用基于STK(Satellite Tool Kit)開發的衛星姿態控制仿真系統進行仿真實驗,仿真系統結構如圖4所示,衛星軌道和空間環境參數由STK生成,并且傳遞給仿真系統。控制器會根據當前姿態,控制指令和控制目標確定當前策略輸出給執行器執行,執行器會輸出控制力拒,衛星的姿態動力學會根據控制力矩和空間干擾力矩得到新的姿態信息,傳感器會將帶有測量誤差的姿態信息交給姿態確定系統,并且返回給控制器,進行下一次控制循環。


圖4 衛星姿態控制仿真系統結構Fig.4 Satellite attitude control simulation system structure

圖5 控制算法比較Fig.5 Comparison of control algorithms
姿態仿真實驗對比了全連接網絡和基于目標網絡的模型網絡精度,同時對比了并行化前后算法的執行時間。使用tanh作為激活函數,3層全連接網絡神經元個數分別為64、128和64,5層全連接網絡神經元個數分別為32、128、512、128和32,目標網絡使用的神經網絡設置與3層全連接網絡相同,學習速率設置為0.000 1。此外,進化策略使用1 024個線程同時進行策略計算,學習速率設置為0.01,為了提高搜索精度,算法的搜索范圍會隨著迭代過程而減小。
實驗結果如圖6所示,分別對比了3層全連接網絡,5層全連接網絡和目標網絡的模型網絡收斂精度。每組實驗進行了20次,圖中圓點代表均值,直線的兩端分別為模型收斂之后的最后100次模型預測誤差的最大值和最小值。圖6(a)為3層全連接網絡的實驗結果,可見均值基本在1.0以上,其中可見多次均值貼近最小值,因為模型最后基本穩定在最小值處,但仍然有小概率會出現模型效果變差的情況出現。圖6 (b)為5層全連接網絡的實驗結果,均值已經能達到1.0以下,相比于3層網絡有小幅改進,同樣出現了均值貼近最小值的情況。圖6 (c)為目標網絡的實驗結果,可見均值已經可以達到0.5左右,而最小值已經可以接近于0,相比于全連接網絡有了明顯的提高。而最大值接近2.0,說明網絡的穩定程度還需要改進。

圖6 不同網絡設置下的均方誤差Fig.6 Mean square error with different networks
對比圖6(a)~(c)可知,全連接網絡可以相對穩定地收斂,然而網絡的最小值和均值無法降低,證明了不帶目標網絡的算法的理論精度要低于目標網絡。而帶目標網絡的算法收斂的穩定程度有所不足,最小值和均值之間的間距偏大,但這一段距離都在全連接網絡的收斂精度之下,可見整體的收斂性能明顯高于全連接網絡,在實際應用時使用目標網絡會取得更好的預測結果。
總體統計結果如表2所示,結果表明,僅使用更深層的網絡對于動力學模型精度提升有限,且增加了系統的計算量。而使用基于目標網絡的算法能夠顯著提高動力學網絡的平均收斂精度,尤其是均值和最小值,均值平均收精度從0.913提升到0.448,最小值平均收精度從0.745提升到0.014。此外,經過并行化的進化策略也使得收斂速度提高了10倍左右,大大提升了算法的在線運行能力。

表2 不同算法收斂精度及速度對比Table 2 Comparison of convergence accuracy and speed among different algorithms
本文使用深度強化學習算法學習動力學模型和全局策略,并且使用模型預測控制優化控制策略。該算法框架下,可以使用不同的神經網絡模型和策略優化方法。得益于軟件定義衛星的發展,機器學習的算法可以在軌運行甚至于在軌學習,衛星姿態控制算法可以脫離傳統姿態控制算法使用機器學習算法,從而為整星提供更好的姿態控制服務。本文算法可以在衛星物理參數未知的情況下學習得到優化的控制策略,并且在引導策略效果變差時通過學習生成優化的控制策略,使得衛星姿態控制系統更加智能化、自主化,對環境的適應性也有所提高。
實驗結果表明,基于目標網絡的動力學模型網絡可以明顯提升算法的收斂精度,而基于進化策略的啟發式搜索并行化算法可以大大提升算法的收斂速度,從而提高強化學習姿態控制系統在軌運行在線計算的能力。
本文所使用的強化學習算法為貪心算法,在面對可能具有多個局部最優解的復雜控制問題如路徑跟蹤、目標追蹤等問題時較容易陷入局部最優解。因此需要使用動態規劃或模型預測控制等全局優化算法進一步提升算法的性能。神經網絡目前使用的是全連接網絡,泛化能力有限,在較為簡單的仿真環境中可以取得不錯的效果,然而實際空間環境更為復雜,需要使用泛化能力更強的卷積神經網絡構建學習算法,并且可以使用遞歸神經網絡擬合實際控制系統中的時間滯后效應。