羅 杰,董志巖,2,翟 鵬,張立華,2
1(復(fù)旦大學(xué) 工程與應(yīng)用技術(shù)研究院,上海 200433)
2(季華實驗室,佛山 528200)
隨著科技的發(fā)展,無人駕駛飛行器(UAV)開始在各種復(fù)雜場景中取得應(yīng)用[1–4],由于無人機具有體積小、質(zhì)量輕、機動性好、易于控制、造價相對較低、危險系數(shù)小以及隱蔽性能好等優(yōu)點,在軍事和民用領(lǐng)域都具有廣泛的應(yīng)用前景. 因此國內(nèi)外均對無人機的機體結(jié)構(gòu)及飛行控制展開了深入的研究,并取得了不錯的成果[5,6].
傳統(tǒng)的無人機飛行控制器多采用比例-積分-微分(PID)控制算法,這種基于PID 算法在穩(wěn)定環(huán)境中可以達到很好的控制性能,然而在面臨復(fù)雜場景時,往往容易受到外界干擾的影響,且無法保證穩(wěn)定飛行. 這對飛行控制器的創(chuàng)新提出了更高的要求,最近的研究表明[7–9],基于強化學(xué)習(xí)的智能控制算法在仿真中表現(xiàn)出了極好的性能,這為無人機飛控開發(fā)提供了新的方向. 目前的行業(yè)痛點是在實際中仍然缺乏一套快速的智能無人機飛控開發(fā)系統(tǒng).
為了提高無人機智能飛行控制器的開發(fā)速度,本文提出一種基于模型的智能飛控開發(fā)系統(tǒng). 該系統(tǒng)可以實現(xiàn)強化學(xué)習(xí)控制算法的仿真測試及快速硬件部署,控制器開發(fā)采用基于模型的設(shè)計方式,可以有效避免代碼編程方式的弊端,并大大提高控制器開發(fā)速度. 本研究還提供了一套仿真測試平臺,我們將開發(fā)的控制器在仿真平臺和真實環(huán)境中進行飛行測試,驗證了該開發(fā)系統(tǒng)的有效性.
智能飛行控制系統(tǒng)的開發(fā)是一個亟待解決并突破的研究領(lǐng)域[10],研究表明,強化學(xué)習(xí)是實現(xiàn)飛控智能化的一個重要途徑,目前基于強化學(xué)習(xí)實現(xiàn)無人機控制的理論研究已取得了突出的成果[7,11].
基于強化學(xué)習(xí)的智能算法具備實現(xiàn)飛行控制的仿真與驗證. Koch 等人利用強化學(xué)習(xí)近端策略優(yōu)化(PPO)算法[12]實現(xiàn)了無人機仿真控制,經(jīng)過訓(xùn)練的無人機姿態(tài)控制器在仿真環(huán)境中可以實現(xiàn)穩(wěn)定飛行并表現(xiàn)出了超過PID 控制器的性能. 文獻[13]中提出了一種基于強化學(xué)習(xí)的新誤差卷積神經(jīng)網(wǎng)絡(luò)控制器設(shè)計方法,并用于復(fù)合式無人機的飛行控制,該研究縮小了虛擬仿真和真實環(huán)境之間的控制性能的差距,實現(xiàn)了強化學(xué)習(xí)在實際環(huán)境中的應(yīng)用. 文獻[14]中提出了一種新的強化學(xué)習(xí)控制算法,該算法比現(xiàn)有的算法更適用于控制四旋翼飛行器,特別是在非??量痰某跏蓟瘲l件下,仍可以自動調(diào)整四旋翼飛行器處于穩(wěn)定的懸停狀態(tài). 更加令人矚目的是,文獻[15]以強化學(xué)習(xí)理論為基礎(chǔ),提出了一種用于訓(xùn)練神經(jīng)網(wǎng)絡(luò)仿真并將其編譯為可在嵌入式硬件上運行的工具鏈,但是開發(fā)方式仍為代碼式編程,對智能飛控的開發(fā)需要很高的門檻.
盡管強化學(xué)習(xí)智能飛控算法已在仿真中取得突出成就,但在實際中仍缺乏一套完備的強化學(xué)習(xí)飛行控制器開發(fā)平臺.
本文在智能飛控領(lǐng)域已有研究的基礎(chǔ)上,針對目前智能飛控開發(fā)存在的痛點,提出了一套完備的無人機智能飛行控制開發(fā)系統(tǒng),整個系統(tǒng)框架如圖1 所示.
圖1 系統(tǒng)架構(gòu)圖
本系統(tǒng)采用4 層架構(gòu)的模式,分別為: (1)數(shù)據(jù)存儲層; (2)強化學(xué)習(xí)網(wǎng)絡(luò)訓(xùn)練層; (3)控制器開發(fā)層;(4)硬件測試層. 其中數(shù)據(jù)存儲層根據(jù)不同數(shù)據(jù)類型分數(shù)據(jù)庫存儲,對于關(guān)系型數(shù)據(jù),如不同飛行器模型及不同強化學(xué)習(xí)超參數(shù)對應(yīng)的控制器性能,存儲在MySQL數(shù)據(jù)庫中. 對于非關(guān)系型數(shù)據(jù)使用MongoDB 數(shù)據(jù)進行存儲,MongoDB 數(shù)據(jù)庫是一個基于分布式文件存儲的數(shù)據(jù)庫,適用于數(shù)據(jù)量大的存儲場景. 在本系統(tǒng)中,需要使用服務(wù)器進行強化學(xué)習(xí)訓(xùn)練,每次訓(xùn)練的神經(jīng)網(wǎng)絡(luò)參數(shù),采用MongoDB 分布式集群的存儲方式.
強化學(xué)習(xí)網(wǎng)絡(luò)訓(xùn)練層是指進行強化學(xué)習(xí)控制器網(wǎng)絡(luò)訓(xùn)練的層,本層采用強化學(xué)習(xí)作為飛行控制器,需要有一個通用的訓(xùn)練環(huán)境來進行強化學(xué)習(xí)訓(xùn)練. 系統(tǒng)選用戴爾R940 服務(wù)器來搭建仿真訓(xùn)練環(huán)境,并在Gazebo仿真模擬器中建立了一個四旋翼模型,該模型可以根據(jù)強化學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)輸出的電機控制量,在俯仰、橫滾、偏航3 個方向上改變四旋翼姿態(tài). 控制器開發(fā)層主要使用基于模式的設(shè)計方法(MDB),利用Simulink提供的無人機自駕儀開發(fā)支持包(Pixhawk pilot support package,PSP)進行控制器設(shè)計,并利用自動代碼生成技術(shù)將控制器部署到Pixhawk 硬件中. 下面分層介紹整個系統(tǒng)的實現(xiàn)原理.
強化學(xué)習(xí)算法的基本原理是通過讓智能體與環(huán)境不斷交互來學(xué)習(xí)最優(yōu)策略,以實現(xiàn)回報最大化或完成特定目標. 整個交互過程如圖2 所示,在某一時刻t,智能體從環(huán)境中獲得狀態(tài)值St,根據(jù)當前狀態(tài)值并經(jīng)過特定策略的評估,執(zhí)行最優(yōu)動作并獲取下一時刻的狀態(tài)值St+1. 其中狀態(tài)轉(zhuǎn)換定義為轉(zhuǎn)換到狀態(tài)s′的概率,即當前狀態(tài)和動作分別為s和a,轉(zhuǎn)換到狀態(tài)s′的概率可以表示為pr{st+1=s′|st=s,at=a}. 智能體的行為由其策略 π定義,該策略 π本質(zhì)上是對特定狀態(tài)應(yīng)采取動作的映射.
圖2 強化學(xué)習(xí)交互圖
本系統(tǒng)在搭建訓(xùn)練平臺時,將環(huán)境建模為一個四旋翼無人機模型,用于模擬無人機在無重力條件下的飛行(模擬重力只需要在垂直方向加一個力的分量,在進行強化學(xué)習(xí)訓(xùn)練時,去除重力作用可以規(guī)避很多不必要的問題,后續(xù)實驗只需要平衡重力即可). 如圖3所示,整個仿真環(huán)境利用Gazebo 仿真模擬器完成搭建,其中無人機模型符合動力學(xué)特性,可以根據(jù)輸入的信號驅(qū)動電機并改變飛行姿態(tài).
圖3 強化學(xué)習(xí)仿真環(huán)境中神經(jīng)網(wǎng)絡(luò)與無人機模型交互圖
根據(jù)強化學(xué)習(xí)算法的理論基礎(chǔ),將智能體建模為一個4 層的強化學(xué)習(xí)神經(jīng)網(wǎng)絡(luò),其中輸入層有9 個節(jié)點,代表從Gazebo 環(huán)境中獲取9 個狀態(tài)信息; 輸出層有4 個節(jié)點,代表電機的4 個輸出控制信號; 中間是2 層具有32 個節(jié)點的隱藏層,整體構(gòu)成了強化學(xué)習(xí)控制器網(wǎng)絡(luò).
神經(jīng)網(wǎng)絡(luò)控制器以無人機飛行時的角度、角速度、角速度誤差組成了9 維矢量作為輸入,將無人機的輸入狀態(tài)向量定義為:
其中,?,θ分別表示俯仰角和橫滾角,ω,β,γ分別表示無人機的三軸角速度,Du,Dv,Dw是地方坐標系中期望速度與當前速度分量之間的差異,Dψ是目標偏航角與當前偏航角之間的差異.
在強化學(xué)習(xí)智能體網(wǎng)絡(luò)的訓(xùn)練中,本實驗使用近端策略優(yōu)化(PPO)算法,該算法在強化學(xué)習(xí)領(lǐng)域有著廣泛的應(yīng)用,在運動控制領(lǐng)域中具有成功的先例(如半獵豹實驗,足式機器人等). 同時,OpenAI 的Baselines項目[16]中提供了PPO 算法的通用API,本文直接使用Baselines 提供的PPO 算法訓(xùn)練神經(jīng)網(wǎng)絡(luò).
在每一個訓(xùn)練步驟中,使用智能體網(wǎng)絡(luò)指定的動作在Gazebo 模型中執(zhí)行一個模擬步驟,每個模擬步驟需要返回一個獎勵以評估給定動作的執(zhí)行情況. 本文在每個模擬步驟的強化學(xué)習(xí)獎勵函數(shù)由3 部分組成:飛行時長、飛行穩(wěn)定性和速度跟蹤誤差. 飛行時長和飛行穩(wěn)定性這兩項可以使飛行器在保持穩(wěn)定飛行的同時,盡可能飛行更長的時間,速度跟蹤誤差用來衡量智能體對輸入指令的跟蹤情況. 因此,本文將獎勵函數(shù)定義為:
其中,r是一個不變的存活獎勵,用來反映飛行器飛行的時長,每個時間步不斷累加,飛行的時間越久,累積獎勵越大,這有利于獲得更長的飛行時間. ?∥ω∥2項通過最小化角速度來防止機體抖動,以盡可能使機體保持穩(wěn)定飛行.項求和每個速度分量誤差的絕對值,由于獎勵是負數(shù),該項表示懲罰,以最小化跟蹤誤差,從而盡可能準確地跟蹤目標速度.
整個訓(xùn)練過程在一臺擁有72 核CPU 和250 GB內(nèi)存的戴爾R940 服務(wù)器上進行,通過使用并行計算,訓(xùn)練100 萬步的PPO 算法大約需要1 h. 通過記錄每個訓(xùn)練周期智能體獲得的獎勵,可以得到如圖4 所示的reward 曲線圖,通常在訓(xùn)練結(jié)束之前就實現(xiàn)了收斂.
圖4 強化學(xué)習(xí)訓(xùn)練過程中reward 曲線圖
在每個交互周期中,強化學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)根據(jù)狀態(tài)輸入獲得4 個電機的輸出值,并作用于無人機動力學(xué)模型,無人機根據(jù)不同的控制量來調(diào)節(jié)飛行姿態(tài),以減小實際速度與期望速度之間的誤差并獲得最優(yōu)的獎勵回報. 經(jīng)過不斷的訓(xùn)練優(yōu)化,使強化學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)得到收斂,我們將調(diào)節(jié)的超參數(shù)及網(wǎng)絡(luò)控制性能保存到MySQL 數(shù)據(jù)庫中,將訓(xùn)練好的網(wǎng)絡(luò)參數(shù)存儲到MongoDB數(shù)據(jù)庫中,以供控制器開發(fā)平臺使用.
本層將訓(xùn)練完成的強化學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)參數(shù)用于無人機飛行控制器的設(shè)計實現(xiàn),整體設(shè)計采用基于模型設(shè)計方式取代傳統(tǒng)代碼編程的方式. 基于模型設(shè)計將敏捷原則延伸到包括物理組件和軟件在內(nèi)的系統(tǒng)開發(fā)工作,從需求捕獲、系統(tǒng)架構(gòu)和組件設(shè)計,到實現(xiàn)、驗證、測試和部署,基于模型設(shè)計可以貫穿整個開發(fā)周期.
通過手動編碼來開發(fā)復(fù)雜的飛行控制器是一項艱難而又不可靠的任務(wù),難以避免編碼錯誤、邏輯錯誤或未知漏洞帶來的不正確的結(jié)果. Simulink 是一款值得信賴的MBD 開發(fā)工具,通過模塊化編程來避免手動編碼開發(fā)存在的問題,為飛行控制器的開發(fā)提供了捷徑. 除此之外,Simulink 具有的自動代碼生成能力可以根據(jù)模塊化的控制器自動生成可執(zhí)行的控制器軟件,實現(xiàn)強化學(xué)習(xí)控制算法的快速部署. 因此,本層使用Simulink 來進行控制器開發(fā).
如圖5 所示,基于強化學(xué)習(xí)的飛行控制器主要包括以下幾個模塊: 控制信號輸入模塊、神經(jīng)網(wǎng)絡(luò)參數(shù)接口模塊、計算網(wǎng)絡(luò)輸入模塊以及強化學(xué)習(xí)控制系統(tǒng)模塊,模塊內(nèi)部采用獨立的子系統(tǒng),分別設(shè)計以完成特定的內(nèi)部功能. 其中信號輸入模塊讀取遙控器RC 信號,遙控器的控制信號主要是對無人機機體速度、姿態(tài)角以及油門驅(qū)動的控制,同時將歸一化后的控制信號傳遞到網(wǎng)絡(luò)計算模塊進行當前狀態(tài)值的計算. 網(wǎng)絡(luò)計算模塊根據(jù)控制信號輸入以及傳感器獲取的無人機姿態(tài)角數(shù)據(jù)計算出強化學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)的狀態(tài)輸入,即s=(?,θ,ω,β,γ,Du,Dv,Dw,Dψ)T∈R9,并作為當前時刻的狀態(tài)量輸入到強化學(xué)習(xí)控制系統(tǒng)中.
圖5 基于模型的智能飛控設(shè)計
在Simulink 模型中,需要一個“控制器參數(shù)接口”模塊用于接收從仿真計算機獲得的神經(jīng)網(wǎng)絡(luò)參數(shù). 我們將仿真環(huán)境中訓(xùn)練好的網(wǎng)絡(luò)參數(shù)保存到Matlab 可以讀取的“.mat”文件中,并通過TCP/IP 通信來連接主機和服務(wù)器,將參數(shù)導(dǎo)入到“控制器參數(shù)接口”模塊. 最終,網(wǎng)絡(luò)參數(shù)與狀態(tài)輸入信號一起傳入強化學(xué)習(xí)控制系統(tǒng)模塊中,在每一次循環(huán)中,該模塊根據(jù)獲取到的狀態(tài)輸入s,經(jīng)過強化學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)的前向傳遞,計算出下一步采取的動作a. 動作a對應(yīng)的是四旋翼4 個電機的輸出油門控制量,油門控制量可直接作用于無人機并通過改變電機轉(zhuǎn)速來改變四旋翼的飛行姿態(tài),驅(qū)動無人機進行飛行并進行姿態(tài)控制.
為了驗證強化學(xué)習(xí)飛行控制器的性能,我們搭建了一套半實物仿真測試平臺和硬件測試平臺,并進行仿真測試實驗以及真機飛行實驗.
硬件在環(huán)仿真(HIL)利用硬件在仿真實驗系統(tǒng)的回路中進行實時仿真,通過在計算機仿真回路中加入一些實物,并建立數(shù)學(xué)模型,將實物的動態(tài)特性和物理規(guī)律在計算機上運行試驗,從而為物理部件創(chuàng)造一個仿真環(huán)境.
硬件在環(huán)仿真系統(tǒng)已被證明在加快無人駕駛飛行器的控制系統(tǒng)的開發(fā)速度方面的有效性,在無人機控制器設(shè)計完成之后,需要測試驗證控制器的控制性能,若直接進行無人機實物測試,可能會發(fā)生無法預(yù)測的故障. 為了避免安全問題,可以先進行HIL 實驗,來測試控制器的控制性能. 這是控制器測試的第一步,根據(jù)HIL 測試的結(jié)果,可對控制器進行適當?shù)恼{(diào)整.
如圖6 所示,本研究以現(xiàn)有的無人機仿真軟件為基礎(chǔ)搭建仿真平臺,仿真環(huán)境中包含一架小型四旋翼無人機模型,為了與強化學(xué)習(xí)訓(xùn)練環(huán)境中的四旋翼無人機保持盡可能的一致,實驗時選用重量為440 g,軸距為225 mm 的“X”結(jié)構(gòu)四旋翼無人機. 同時,無人機在仿真環(huán)境中飛行無氣流、風力等環(huán)境因素的影響,可以很好地規(guī)避其他因素對控制器性能的影響.
圖6 半實物仿真測試平臺
HIL 實驗中,首先將開發(fā)的強化學(xué)習(xí)控制器部署到Pixhawk 硬件,并將Pixhawk 硬件與無人機仿真軟件建立連接,之后通過遙控器控制飛控硬件發(fā)出驅(qū)動信號,并控制仿真無人機飛行. 最后,可以在仿真平臺中觀察無人機的各項飛行數(shù)據(jù)及飛行軌跡,并進行分析實驗. 軟件界面中,通過三維場景視窗可以觀察無人機在仿真環(huán)境中的位置和姿態(tài); 軌跡視窗可以記錄無人機在仿真環(huán)境中的水平飛行軌跡; 參數(shù)視窗用于記錄無人機在飛行過程中電機轉(zhuǎn)速、姿態(tài)角數(shù)據(jù)、速度數(shù)據(jù)以及位置數(shù)據(jù). 記錄實時采集的數(shù)據(jù),并進行對比實驗,最終用于驗證所提出開發(fā)平臺的性能.
開發(fā)的半實物仿真測試平臺可以替代真實無人機進行控制器性能實驗,在仿真環(huán)境中可以規(guī)避突發(fā)的安全問題和無法預(yù)測的故障,可以作為控制器測試的第一步.
經(jīng)過第一步控制器的硬件在環(huán)測試后,需要進行真機測試,這樣才能進一步驗證開發(fā)的控制器在真實環(huán)境中的可用性. 本研究開發(fā)的智能飛行控制器可以通過自動代碼生成將控制器固件部署到Pixhawk 硬件中,并安裝在真實四旋翼無人機上飛行. 如圖7 所示,搭建了針對特定四旋翼無人機的硬件測試平臺,圖7(a)包括一個用于測試無人機飛行姿態(tài)角的云臺裝置,可將無人機安裝在云臺上固定,并測試記錄在飛行過程中的姿態(tài)角,用于對控制器跟蹤性能的分析. 圖7(b)是在一個小型四旋翼無人機上進行的飛行測試,我們讓飛手在空曠地帶控制四旋翼無人機飛行,可以看出本研究提出的智能飛控開發(fā)系統(tǒng)可以在實際中使用,并具有很好的控制性能.
圖7 控制器真機測試
本文提出了一套完備的無人機智能飛行控制系統(tǒng)仿真、測試及部署的一體化平臺. 基于MBD 開發(fā)工具,使用模塊化編程以及自動代碼生成技術(shù)將強化學(xué)習(xí)算法部署到Pixhawk 硬件中,并實現(xiàn)了真實無人機的飛行測試. 該平臺可大大減小智能控制器開發(fā)成本以及規(guī)避代碼開發(fā)中的錯誤. 未來的工作中,我們將進一步拓展平臺的功能,以適用于不同無人機機型的飛控開發(fā). 同時將部署平臺與更多硬件連接交互,以實現(xiàn)各種復(fù)雜的智能控制系統(tǒng),讓強化學(xué)習(xí)控制算法在實際中得到更好的應(yīng)用.