鄧 超,趙 洋,趙 兵,陳帥華
(1.中國科學(xué)院沈陽自動化研究所機器人學(xué)國家重點實驗室,沈陽 110016;2.中國科學(xué)院機器人與智能制造創(chuàng)新研究院,沈陽 110169;3.遼寧省水下機器人重點實驗室,沈陽 110169;4.中國科學(xué)院大學(xué),北京 100049)
2020年,我國首艘全海深載人潛水器“奮斗者”號成功下潛至馬里亞納海溝10909 m 海底,標(biāo)志著我國具有了進入海洋最深處開展科學(xué)研究的能力??刂葡到y(tǒng)是載人潛水器的“大腦和中樞神經(jīng)”,負(fù)責(zé)對載人潛水器進行運動控制。 “奮斗者”號的運動控制主要有速度控制和位姿控制2 種模式,分別如圖1 和圖2 所示,2 種控制模式都有控制分配計算模塊。 為了使載人潛水器具有良好的機動性能和容錯性能,其推進器的數(shù)量大于載人潛水器的運動自由度。 對于這樣的冗余控制系統(tǒng),給定控制量,執(zhí)行器的輸出解不唯一[1]。 而控制分配的目的就是在控制器或操縱桿輸出期望推力后,在某種優(yōu)化規(guī)則下,為每一個推進器分配一個推力,使所有推進器合力盡可能滿足期望推力。 此外控制分配還要考慮2 個約束:一是推進器所能提供的最大推力,即推進器的飽和約束;二是為了保護電機而采取的推進器變化率的約束。
圖1 載人潛水器速度控制系統(tǒng)框圖Fig.1 Diagram of manned submersible speed control system
圖2 載人潛水器位姿控制系統(tǒng)框圖Fig.2 Diagram of manned submersible position control system
控制分配廣泛存在于航空[2-3]、汽車[4]、船舶[5]和水下航行器[6-7]等領(lǐng)域。 文獻(xiàn)[8]將控制分配問題分為無約束控制分配問題和有約束控制分配問題。 載人潛水器的推進器存在工作區(qū)間,因此載人潛水器的控制分配問題是典型的有約束控制分配問題。 針對有約束控制問題,文獻(xiàn)[9]提出一種將控制量歸一化再與偽逆相結(jié)合的方法, 解決了推進器飽和的問題,但固定的分配方法可以解出可行解,卻不是最優(yōu)解;文獻(xiàn)[10]針對控制分配中的優(yōu)化問題提出了人工蜂群算法,然而人工蜂群算法等智能算法計算優(yōu)化問題所需的時間取決于優(yōu)化問題的維度和結(jié)構(gòu),往往很難滿足實時性要求[11]。
為了提高控制分配問題的計算速度與效率,本文利用遞歸神經(jīng)網(wǎng)絡(luò)解決控制分配問題中的優(yōu)化問題,并將遞歸神經(jīng)網(wǎng)絡(luò)配置在FPGA 上,通過仿真驗證了遞歸神經(jīng)網(wǎng)絡(luò)的有效性和實時計算的可行性。
以“奮斗者”號的重心為原點建立坐標(biāo)系o-xyz,ox 指向“奮斗者”的正前方,oy 指向右舷,oz 指向底部。 “奮斗者”配備有9 個推進器,其分布如圖3 所示。 艉部布置4 個推進器,為“奮斗者”提供進退和轉(zhuǎn)向所需的推力,靠近底部的2 個推進器呈矢量分布,與x 軸夾角為α,另外2 個艉部推進器水平布置。舯部布置4 個垂向推進器,提供上浮下潛和縱傾所需的推力。 艏部布置1 個側(cè)向推進器,提供側(cè)移和轉(zhuǎn)向所需的推力。
圖3 “奮斗者”推進器分布示意圖Fig.3 Distribution of “Fendouzhe” thrusters
為了方便研究,文獻(xiàn)[12]對推進器模型做出如下假設(shè):①忽略推進器的控制環(huán)動力學(xué);②忽略推進器產(chǎn)生的扭矩;③忽略環(huán)境水流速度對推力的影響;④推進器正反向具有相同的推力特性。 本文仍按上述假設(shè)開展算法研究。
六自由度期望推力定義為
各推進器推力定義為
推進器的六自由度合力定義為
跟據(jù)圖3 的推進器的布置示意圖,控制分配矩陣B 表示為
其中控制分配矩陣B 的各個子塊可表示如下:
顯然有:
隨著人工智能的發(fā)展,遞歸神經(jīng)網(wǎng)絡(luò)也在快速的發(fā)展和普及。 由于其具有并行計算和易于硬件實現(xiàn)的優(yōu)點,遞歸神經(jīng)網(wǎng)絡(luò)可用于處理具有實時性要求和計算量大的優(yōu)化問題[13]。 Tank 和Hopfield 首次提出了求解線性優(yōu)化問題的遞歸神經(jīng)網(wǎng)絡(luò)。 此后,研究人員針對二次規(guī)劃、凸優(yōu)化和非凸優(yōu)化等優(yōu)化問題提出了多種遞歸神經(jīng)網(wǎng)絡(luò)[14-16]。 因此本文采用遞歸神經(jīng)網(wǎng)絡(luò)解決控制分配中的優(yōu)化問題。
控制分配的代價函數(shù)定義為
約束條件為
式中:K、M 和N 為非負(fù)定對角矩陣;ΔT 是推力的變化率,其計算方法為
T0是上一采樣時刻推進器推力;代價函數(shù)等號右邊的第一項是推力的二次優(yōu)化項;第二項是推進器變化率的懲罰項;第三項是期望推力與實際推力的誤差懲罰項,為了使實際推力盡可能的與期望推力相等;當(dāng)期望推力超出約束范圍時,懲罰項的作用是找到在約束條件下最接近期望推力的解。
結(jié)合式(8)~式(10),將問題轉(zhuǎn)化為如下凸優(yōu)化問題:
其中:
結(jié)合式(10),上式可以寫為
式中:⊙為向量元素乘積;h(T)和g(T)是向量函數(shù),且每個元素均小于0;f(T),h(T)和g(T)均是凸函數(shù)且二次連續(xù)可微。
上述凸優(yōu)化問題的Lagrange 函數(shù)可以寫為[17]
式中:H(T)=diag[h(T))],G(T)=diag[g(T))];λ 和μ 為乘子矩陣且矩陣內(nèi)所有元素均大于0。 對于問題,顯然至少存在一個T 滿足:
即滿足Slater 條件,因此下式為凸優(yōu)化問題最優(yōu)解的充要條件:
令神經(jīng)網(wǎng)絡(luò)的狀態(tài)為
神經(jīng)網(wǎng)絡(luò)中的神經(jīng)元λ 和μ 將穩(wěn)態(tài)點控制在約束范圍內(nèi),神經(jīng)元T 使Lagrange 函數(shù)不斷減小。當(dāng)神經(jīng)網(wǎng)絡(luò)達(dá)到穩(wěn)態(tài)時:
即為代價函數(shù)的全局最優(yōu)解[18]。 圖4 為基于神經(jīng)網(wǎng)絡(luò)的控制分配圖,當(dāng)控制系統(tǒng)輸入六自由度期望推力Td時,控制分配系統(tǒng)開始工作,最終計算出優(yōu)化解T。
圖4 神經(jīng)網(wǎng)絡(luò)控制分配結(jié)構(gòu)圖Fig.4 Diagram of the neural network for control allocation
仿真開始時,令T=0,λ=I,μ=I,矩陣K、M 和N設(shè)為單位矩陣。 推進器飽和約束設(shè)為±1 kN,推進器變化率約束設(shè)為±0.1 kN。仿真采取圖1 所示的控制模式,根據(jù)圖4 搭建的遞歸神經(jīng)網(wǎng)絡(luò)Simulink 模型如圖5 所示。
圖5 的Simulink 模型輸入1 是六自由度期望推力Td,輸入2 是上一時刻推力T0,輸出是經(jīng)過神經(jīng)網(wǎng)絡(luò)計算的各推進器推力T。運行該神經(jīng)網(wǎng)絡(luò),推力T 的計算結(jié)果如圖6 所示。 可以看出,推進器推力在仿真時間的第1 s 就已經(jīng)收斂。 但初始值不同,神經(jīng)網(wǎng)絡(luò)的收斂時間也不同,為了保證計算結(jié)果充分收斂,選5 s 作為一個計算周期。
圖5 遞歸神經(jīng)網(wǎng)絡(luò)Simulink 模型Fig.5 Simulink model of recurrent neural network
圖6 推力計算曲線Fig.6 Thrust calculation curve
Simulink 的仿真模型如圖7 所示。 圖7 中的輸入為6 維階躍信號Td; 第一個子系統(tǒng)為重置子系統(tǒng),其內(nèi)部封裝著圖5 所示的遞歸神經(jīng)網(wǎng)絡(luò),該子系統(tǒng)每5 s 對遞歸神經(jīng)網(wǎng)絡(luò)重置一次;第二個子系統(tǒng)為使能子系統(tǒng),每5 s 取一個神經(jīng)網(wǎng)絡(luò)計算的結(jié)果作為推力輸出;3 個示波器分別顯示推進器推力T,推進器的六自由度合力Ta和推進器推力變化率ΔT。
圖7 仿真模型Fig.7 Simulation model
仿真時長設(shè)為120 s,0~60 s 的Td定義為Td1,值為[2,0,0,0,0,0];60 s~120 s 的Td定義為Td2,值為[5,0,0,0,0,0]。 仿真結(jié)束后,3 個示波器輸出如圖8~圖10 所示。
根據(jù)圖8 可以發(fā)現(xiàn),在60 s 內(nèi),當(dāng)期望推力在飽和約束范圍內(nèi)時,控制分配下的六自由度合力可以很好地吻合期望推力;60 s 后,當(dāng)縱向期望推力超出約束范圍時,實際推力要小于期望推力,且在約束范圍內(nèi)最大限度的接近期望推力。 如圖9 所示,負(fù)責(zé)提供進退推力的4 個艉推進器在約束下,可以有效地將推力限制在±1 kN 內(nèi)。 根據(jù)圖10 可以發(fā)現(xiàn),該方法同樣可以將推力變化率約束在±0.1 kN內(nèi)。
圖8 六自由度合力曲線Fig.8 Six degrees of freedom net force curve
圖9 推力曲線Fig.9 Thrust curve
圖10 推力變化率曲線Fig.10 Thrust rate curve
為了將遞歸神經(jīng)網(wǎng)絡(luò)配置在FPGA 上, 利用Simulink HDL Code 將仿真模型生成HDL 代碼和測試文件,最后實現(xiàn)Simulink 與Modelsim 的聯(lián)合仿真。 測試文件的仿真結(jié)果與Simulink 的運算結(jié)果之差如圖11 所示。 從圖11 可以看出Simulink 生成的測試文件準(zhǔn)確,誤差始終為零。
圖11 聯(lián)合仿真誤差曲線Fig.11 Co-simulation error curve
需要注意的是,Simulink 的仿真時間與真實遞歸神經(jīng)網(wǎng)絡(luò)的運行時間不同。 對于式(11)這樣只含不等式約束的凸二次優(yōu)化問題,通常用有效集法求解。 本文用Matlab 編寫有效集法的m 文件來求解,其求解時間與遞歸神經(jīng)網(wǎng)絡(luò)求解凸優(yōu)化問題的時間如表1 所示。 通過對比可以發(fā)現(xiàn)遞歸神經(jīng)網(wǎng)絡(luò)的實時性更好。
表1 遞歸神經(jīng)網(wǎng)絡(luò)與有效集法求解問題時間Tab.1 Solving time of recurrent neural network and active set method
本文對全海深載人潛水器“奮斗者”號的控制分配進行研究。 提出一種基于遞歸神經(jīng)網(wǎng)絡(luò)解決控制分配的方法,該方法可以有效地處理推進器飽和約束和推進器變化率約束。 通過“奮斗者”號載人潛水器半物理仿真平臺試驗驗證,本算法穩(wěn)定、可靠,計算時間明顯優(yōu)于傳統(tǒng)求解優(yōu)化方法,具有實時性好的突出優(yōu)點。