西安微電子技術(shù)研究所,西安 710065
良好的姿態(tài)控制方法對空間衛(wèi)星的穩(wěn)定在軌運行至關(guān)重要。衛(wèi)星在軌運行中,由于燃料的長期消耗、載荷的在軌捕獲與釋放(如從宇宙飛船上釋放衛(wèi)星,捕獲目標(biāo)、清除軌道垃圾等)、與其他航天器的對接等,且星體本身具有非線性、高階、時變等特性[1],都會導(dǎo)致系統(tǒng)的運動狀態(tài)及質(zhì)量特性發(fā)生變化,且很多變化是劇烈的(如捕獲、釋放衛(wèi)星,與目標(biāo)的對接等)、無法確知的(如對非合作目標(biāo)的操作、軌道垃圾的清理等)[2]?,F(xiàn)有的姿態(tài)控制算法大部分依賴被控對象的質(zhì)量參數(shù)(包括質(zhì)量、轉(zhuǎn)動慣量等),需要通過各種手段辨識其質(zhì)量參數(shù),此種情況下難以給出準(zhǔn)確的參數(shù)辨識[3-4],且此類系統(tǒng)動力學(xué)模型復(fù)雜,具有較強(qiáng)的非線性,容易導(dǎo)致現(xiàn)有的姿態(tài)控制系統(tǒng)失效[5]。因此,迫切需要一種高自主的具備高度智能化程度的姿態(tài)控制技術(shù),解決傳統(tǒng)控制難以對付的航天器質(zhì)量特性在軌變化情況下的航天器高性能控制問題。
目前,衛(wèi)星姿態(tài)控制的實際問題是外部干擾、轉(zhuǎn)動慣量的不確定性和模型的非線性問題[6]。針對此類復(fù)雜情況下的姿態(tài)控制問題,文獻(xiàn)[7]基于Backstepping法,設(shè)計能解決轉(zhuǎn)動慣量不確定的自適應(yīng)控制律,可以解決系統(tǒng)Lyapunov函數(shù)構(gòu)造困難的問題。Yoon等人針對航天器姿態(tài)控制中存在慣量的不確定性,提出了一種非線性哈密頓MIMO系統(tǒng)新型控制律[8]。Queiroz等人利用完整系統(tǒng)的動力學(xué)模型設(shè)計了非線性自適應(yīng)控制,證明了在干擾為未知量的情況下閉環(huán)系統(tǒng)的跟蹤誤差全局漸進(jìn)收斂[9]。苗雙全利用一種自適應(yīng)滑??刂撇呗越鉀Q了大型撓性航天器機(jī)動過程中出現(xiàn)的振動問題[10]??偟膩砜?,目前面向空間飛行器姿態(tài)控制的算法智能化程度低,且通常都是針對具體應(yīng)用進(jìn)行設(shè)計,不具備普適性。所以,隨著航天探索任務(wù)復(fù)雜程度的不斷提高,需要設(shè)計一種具備高度智能化程度的姿態(tài)控制技術(shù)。
深度增強(qiáng)學(xué)習(xí)是直接從高維原始數(shù)據(jù)學(xué)習(xí)控制策略的一項技術(shù)[11],為了解決從感知到?jīng)Q策的計算機(jī)控制問題,從而實現(xiàn)通用人工智能。它在過去兩年中得到了迅速發(fā)展,并在視頻游戲和機(jī)器人領(lǐng)域取得了突破性進(jìn)展[12]。而DQN(Deep Q Network)是深度增強(qiáng)學(xué)習(xí)的典型算法之一,它將神經(jīng)網(wǎng)絡(luò)和Q-Learning結(jié)合起來,輸入是原始圖像數(shù)據(jù),輸出則是每個動作對應(yīng)的價值評估(Q值)[13]。2013年Google公司的DeepMind團(tuán)隊在NIPS的深度學(xué)習(xí)研討會上提出DQN算法[14],在Atari游戲平臺展示了此類算法在智能決策方面的巨大應(yīng)用潛力。
本文擬采用深度增強(qiáng)學(xué)習(xí)算法,針對空間衛(wèi)星智能姿態(tài)控制問題,提出一種通過自主學(xué)習(xí)實現(xiàn)衛(wèi)星智能姿態(tài)控制的方法,突破現(xiàn)有方法被控對象依賴復(fù)雜動力學(xué)模型和嚴(yán)格質(zhì)量參數(shù)的局限,解決遭遇突發(fā)隨機(jī)擾動的衛(wèi)星姿態(tài)不穩(wěn)定問題,提高姿態(tài)控制算法的姿態(tài)穩(wěn)定度和控制精度。
本文將衛(wèi)星智能姿態(tài)控制問題定義為:軌道坐標(biāo)系上保持穩(wěn)定姿態(tài)角速度運轉(zhuǎn)的空間衛(wèi)星,在遭遇突發(fā)擾動姿態(tài)發(fā)生變化后,如何操作控制力矩以穩(wěn)定衛(wèi)星的姿態(tài)為初始狀態(tài)。已有的傳統(tǒng)解決方法PD控制器由于依賴嚴(yán)格的質(zhì)量參數(shù)條件,往往使得輸出的姿態(tài)角速度發(fā)散。為此這里使用深度增強(qiáng)學(xué)習(xí)技術(shù)解決這一問題,過程分為如下兩步:1)搭建隨機(jī)擾動下控制力矩與姿態(tài)角速度互相反饋的動力學(xué)環(huán)境;2)使用DQN算法進(jìn)行控制力矩的深度增強(qiáng)訓(xùn)練。設(shè)計流程如圖1所示。
圖1 基于深度增強(qiáng)學(xué)習(xí)的衛(wèi)星姿態(tài)控制方法示意Fig.1 Sketch map of satellite attitude control method based on deep reinforcement learning
為了研究衛(wèi)星姿態(tài)控制問題,本文基于空間衛(wèi)星的動態(tài)特性建立了軌道坐標(biāo)系; 也就是說,坐標(biāo)原點位于衛(wèi)星的質(zhì)心,Z軸指向地球中心,Y軸位于衛(wèi)星軌道平面的負(fù)法線,X,Y和Z軸構(gòu)成一個右手系統(tǒng)。 同時為描述衛(wèi)星姿態(tài)在力矩作用下的運動情況,需建立正確的姿態(tài)動力學(xué)和運動學(xué)模型[15]。
(1)建立姿態(tài)動力學(xué)模型方程
衛(wèi)星的動力學(xué)模型由單剛體的歐拉動力學(xué)方程描述如下:
(1)
式中:T為作用于剛體質(zhì)心上的控制力矩;I為剛體的轉(zhuǎn)動慣量矩陣;ω=[ωxωyωz]T為剛體的姿態(tài)角速度。若已知姿態(tài)角速度的初值為ω0,給定控制力矩T,將I設(shè)為定值,則能夠通過積分式(1)得到任意時刻衛(wèi)星的姿態(tài)角速度。
(2)建立姿態(tài)運動學(xué)模型方程
由于衛(wèi)星的姿態(tài)可通過姿態(tài)四元數(shù)來表征。下式為衛(wèi)星基于四元數(shù)的姿態(tài)運動學(xué)方程,ω=[ωxωyωz]T為衛(wèi)星的姿態(tài)角速度,若已知衛(wèi)星在初始時刻的姿態(tài)四元數(shù)為Q0,則可通過積分表示衛(wèi)星在任意時刻的姿態(tài)。
(2)
(3)搭建動力學(xué)環(huán)境
搭建動力學(xué)環(huán)境過程如下:
第1步,初始化衛(wèi)星的姿態(tài)角速度ω0及姿態(tài)四元數(shù)Q0;
第2步,給定一個隨機(jī)擾動力矩Tr,設(shè)定周期為I;
第3步,依次對式(1)(2)積分,求解第i(i=1,…,I)個周期內(nèi)的姿態(tài)角速度ωi及姿態(tài)四元數(shù)Qi,循環(huán)輸出整個周期的姿態(tài)(ω,Q);
第4步,以(ω,Q)作為衛(wèi)星的初始姿態(tài)輸入到神經(jīng)網(wǎng)絡(luò)中,返回至第3步,不斷循環(huán)。
作為對比,引入PD控制的方法,同樣以此向量作為衛(wèi)星的初始姿態(tài)輸入到PD控制器中,輸出控制力矩。
本節(jié)在動力學(xué)環(huán)境的基礎(chǔ)上,以衛(wèi)星姿態(tài)為輸入,使用DQN算法智能輸出衛(wèi)星的控制力矩[16],并送入動力學(xué)環(huán)境中獲得衛(wèi)星姿態(tài),繼續(xù)輸入到神經(jīng)網(wǎng)絡(luò)中訓(xùn)練權(quán)重。
(1)離散化控制力矩的連續(xù)輸出
DQN是一個面向離散控制的算法,即輸出的Action是離散的,無法輸出連續(xù)的Action,因為Q值的更新需要通過求最大的Action來實現(xiàn)。然而在要解決的衛(wèi)星控制問題中,控制力矩的輸出是連續(xù)高維的,無法使用傳統(tǒng)的DQN解決,故此處對輸出的控制力矩進(jìn)行離散化。
衛(wèi)星的控制力矩是一個三維向量T=[TxTyTz]T,設(shè)定控制力矩中每一個方向分量的取值范圍,如Tx∈[ax,bx],Ty∈[ay,by],Tz∈[az,bz],分別等分Tx、Ty、Tz為5等份,為每一份設(shè)置標(biāo)志向量,分別為[1 0 0 0 0]、[0 1 0 0 0]、[0 0 1 0 0]、[0 0 0 1 0]、[0 0 0 0 1],以此向量代表控制力矩進(jìn)行Q值迭代。
(2) 定義reward函數(shù)及終止條件
深度增強(qiáng)訓(xùn)練的目標(biāo)是輸出衛(wèi)星的控制力矩,使得衛(wèi)星的姿態(tài)角速度與期望姿態(tài)角速度之間的誤差越來越小,衡量的標(biāo)準(zhǔn)是得到盡可能多的回報,因此獎勵(reward)函數(shù)需要具有角速度差值(定義為error)越小,reward越大的性質(zhì),適用的高斯函數(shù)如下:
(3)
前述DQN算法中提到了訓(xùn)練中需要設(shè)置任務(wù)的終止條件,要為每一次輸出的控制力矩進(jìn)行是否完成任務(wù)的判斷,即此力矩能否使衛(wèi)星姿態(tài)恢復(fù)穩(wěn)定。此處根據(jù)衛(wèi)星姿態(tài)角速度的取值范圍,定義每次迭代姿態(tài)角速度與期望姿態(tài)角速度之間的誤差處于某個確定范圍時,任務(wù)繼續(xù)訓(xùn)練,反之任務(wù)終止。
(3) 神經(jīng)網(wǎng)絡(luò)訓(xùn)練流程
本文使用兩層的全連接神經(jīng)網(wǎng)絡(luò),以衛(wèi)星當(dāng)前的姿態(tài)角速度和姿態(tài)四元數(shù)作為輸入,輸出一個數(shù)值指示控制力矩大小的概率。與卷積神經(jīng)網(wǎng)絡(luò)不同,每個神經(jīng)元僅連接到少量神經(jīng)元[17],全連接神經(jīng)網(wǎng)絡(luò)連接到上層的所有神經(jīng)元。綜上,基于DQN的深度增強(qiáng)訓(xùn)練流程如下:
1)初始化經(jīng)驗池D的容量為N,用于存儲訓(xùn)練的樣本。
2)用一個深度神經(jīng)網(wǎng)絡(luò)作為Q值網(wǎng)絡(luò),初始化權(quán)重參數(shù)θ。
3)設(shè)定控制任務(wù)訓(xùn)練總數(shù)M,初始化網(wǎng)絡(luò)輸入狀態(tài)x1,并且計算網(wǎng)絡(luò)輸出a1。循環(huán)開始:
②在環(huán)境中執(zhí)行at后,得到獎勵rt和下一個網(wǎng)絡(luò)的輸入xt+1;
③將4個參數(shù)(xtatrtxt+1)作為此刻的狀態(tài)一起存入D中(D中存放著N個時刻的狀態(tài));
④當(dāng)D積累到一定程度,每次執(zhí)行完①~③步后再隨機(jī)從D中取出minibatch個狀態(tài);
⑤計算每一個狀態(tài)(xjajrjxj+1)的目標(biāo)值yj=
⑥通過SGD更新網(wǎng)絡(luò)權(quán)重參數(shù),使用均方差定義損失函數(shù)[yj-Q(xj,aj;θ)]2,返回①,循環(huán)執(zhí)行,不斷訓(xùn)練模型。
4)多次訓(xùn)練,獲得模型。
為驗證所提出方法的有效性,本節(jié)進(jìn)行了仿真試驗。首先利用動力學(xué)模型模擬衛(wèi)星在太空中的運動狀態(tài),然后為模擬衛(wèi)星執(zhí)行的目標(biāo)捕獲或載荷釋放等任務(wù),在上述動力學(xué)模型的基礎(chǔ)上對衛(wèi)星施加一個隨機(jī)擾動力矩,并同時隨機(jī)改變轉(zhuǎn)動慣量以模擬衛(wèi)星質(zhì)量參數(shù)變化。所提出的方法應(yīng)在此狀態(tài)下不斷輸出控制力矩,以控制衛(wèi)星恢復(fù)穩(wěn)定的飛行姿態(tài)。
具體來說,定義隨機(jī)擾動力矩Tr=10-8×[0.5 -0.5 0.5]T×r,其中r為隨機(jī)數(shù)。初始化衛(wèi)星的姿態(tài)角速度ω0=[0.001,0.001,0.001]Trad/s及姿態(tài)四元數(shù)Q0=[1 0 0 0]T。姿態(tài)控制算法在此擾動后,不斷輸出控制力矩,使衛(wèi)星的姿態(tài)角速度能夠收斂到一定值,且此值與期望姿態(tài)角速度ω0之間的誤差趨于零時,說明姿態(tài)控制算法具有有效性。作為對比,本文同樣仿真基于PD控制器的傳統(tǒng)姿態(tài)控制方法,并輸出了控制結(jié)果。算法在Anaconda3軟件包和TensorFlow深度學(xué)習(xí)軟件框架的基礎(chǔ)上實現(xiàn)。
PD控制器嚴(yán)格依賴于被控對象的質(zhì)量參數(shù)即轉(zhuǎn)動慣量I,當(dāng)I隨機(jī)取一定值時,衛(wèi)星遭遇干擾后迭代30次的姿態(tài)角速度及其誤差如圖2所示。圖2表明,隨著迭代次數(shù)的增加,姿態(tài)角速度與期望姿態(tài)角速度的誤差均逐漸增大未能收斂,這一發(fā)散的姿態(tài)角速度誤差表明衛(wèi)星不能保持姿態(tài)穩(wěn)定。
定義循環(huán)次數(shù)為3 000,訓(xùn)練前觀測的時間步為1 000,經(jīng)驗池的容量為500,觀測的衰減率為0.99,將遭遇干擾的動力學(xué)模型作為環(huán)境,轉(zhuǎn)動慣量矩陣隨機(jī)取值,進(jìn)行基于DQN算法的深度增強(qiáng)訓(xùn)練。每迭代100次記1次衛(wèi)星的姿態(tài)角速度及誤差向量,并展示其迭代3 000次的變化趨勢如圖3~圖5所示。
圖2 姿態(tài)角速度及其誤差的發(fā)散曲線Fig.2 Divergent curve of the attitude angular velocity and its error
圖3 姿態(tài)角速度及其誤差的x分量變化曲線Fig.3 Varying curve of attitude angular velocity and its error of x
圖4 姿態(tài)角速度及其誤差的y分量變化曲線Fig.4 Varying curve of attitude angular velocity and its error of y
圖5 姿態(tài)角速度及其誤差的z分量變化曲線Fig.5 Varying curve of attitude angular velocity and its error of z
姿態(tài)角速度3個方向分量的變化曲線表明,隨著迭代次數(shù)的增加,衛(wèi)星的姿態(tài)角速度收斂于[0.000 985 37,0.001 004 03,0.001 002 19] rad/s,與期望姿態(tài)角速度的誤差收斂于[1.463 389 90×10-5,4.029 654 22×10-6,2.192 512 30×10-6] rad/s,誤差變化曲線表明,3個分量的值均減小并收斂,說明衛(wèi)星姿態(tài)達(dá)到穩(wěn)定狀態(tài),基于DQN的姿態(tài)控制方法具有有效性。與圖2的對比也驗證了這一算法在隨機(jī)參數(shù)變化下仍具有穩(wěn)定衛(wèi)星姿態(tài)的性能優(yōu)勢。
每迭代100次記錄1次reward的平均值,并繪圖如圖6所示。由圖6可以看出reward函數(shù)遵循減函數(shù)的性質(zhì),從快速提升到基本達(dá)到了高峰,說明增強(qiáng)學(xué)習(xí)取得了最優(yōu)決策。
圖6 reward的變化曲線Fig.6 Varying curve of reward
綜上,當(dāng)轉(zhuǎn)動慣量隨機(jī)取值時,DQN能夠獲得控制力矩的最優(yōu)智能輸出,也即DQN并不依賴于被控對象的質(zhì)量參數(shù),能夠在衛(wèi)星受到突發(fā)的隨機(jī)擾動后自主地對衛(wèi)星姿態(tài)進(jìn)行穩(wěn)定,可以解決傳統(tǒng)的PD控制器無法解決的復(fù)雜任務(wù)中的衛(wèi)星姿態(tài)穩(wěn)定問題。
然而,本文提出的姿態(tài)控制方法的系統(tǒng)穩(wěn)定性目前還不能保證,盡管模擬的仿真動力學(xué)環(huán)境中能夠很好地在衛(wèi)星受到突發(fā)隨機(jī)擾動后控制衛(wèi)星的姿態(tài),但真實星上環(huán)境復(fù)雜,干擾眾多,計算資源有限,在模擬環(huán)境中訓(xùn)練好的智能體還不能直接應(yīng)用于真實空間環(huán)境中的星上姿態(tài)控制,還需要進(jìn)一步模擬更加完善的空間環(huán)境,以便進(jìn)一步訓(xùn)練更好的智能體,從而保證系統(tǒng)的穩(wěn)定性。
本文提出的基于深度增強(qiáng)學(xué)習(xí)的衛(wèi)星姿態(tài)控制方法是一種基于學(xué)習(xí)(訓(xùn)練)的方法,學(xué)習(xí)階段是在地面上進(jìn)行的。在學(xué)習(xí)階段之后,獲得一個訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)模型作為智能體,直接將其應(yīng)用于衛(wèi)星,智能體將充當(dāng)大腦來控制仿真動力學(xué)環(huán)境中的衛(wèi)星的飛行姿態(tài)。在本文中,訓(xùn)練好的智能體的有效性在仿真動力學(xué)環(huán)境中已經(jīng)得到了驗證。
目前僅在仿真動力學(xué)環(huán)境中驗證了本文所提方法的有效性,還未開展應(yīng)用于星上的研究,暫未考慮快速性。下一步的工作,計劃搭建地面半實物仿真試驗系統(tǒng),利用二維伺服轉(zhuǎn)臺模擬衛(wèi)星在軌飛行真實姿態(tài),仿真過程中將傳感器(陀螺儀、加速度計等)安裝在轉(zhuǎn)臺上以采集控制系統(tǒng)所需輸入信息,以伺服控制技術(shù)模擬控制器輸出,從而對在動力學(xué)仿真環(huán)境中提出的姿態(tài)控制方法進(jìn)行訓(xùn)練和測試。待到智能體訓(xùn)練得足夠好時,最終將訓(xùn)練好的智能體直接應(yīng)用于星上,根據(jù)衛(wèi)星當(dāng)下的姿態(tài)在線實時得到控制序列,并作用于衛(wèi)星的發(fā)動機(jī)上,達(dá)到控制衛(wèi)星姿態(tài)的目的。