羅 杰,董志巖,2,翟 鵬,張立華,2
1(復旦大學 工程與應用技術研究院,上海 200433)
2(季華實驗室,佛山 528200)
隨著科技的發展,無人駕駛飛行器(UAV)開始在各種復雜場景中取得應用[1–4],由于無人機具有體積小、質量輕、機動性好、易于控制、造價相對較低、危險系數小以及隱蔽性能好等優點,在軍事和民用領域都具有廣泛的應用前景. 因此國內外均對無人機的機體結構及飛行控制展開了深入的研究,并取得了不錯的成果[5,6].
傳統的無人機飛行控制器多采用比例-積分-微分(PID)控制算法,這種基于PID 算法在穩定環境中可以達到很好的控制性能,然而在面臨復雜場景時,往往容易受到外界干擾的影響,且無法保證穩定飛行. 這對飛行控制器的創新提出了更高的要求,最近的研究表明[7–9],基于強化學習的智能控制算法在仿真中表現出了極好的性能,這為無人機飛控開發提供了新的方向. 目前的行業痛點是在實際中仍然缺乏一套快速的智能無人機飛控開發系統.
為了提高無人機智能飛行控制器的開發速度,本文提出一種基于模型的智能飛控開發系統. 該系統可以實現強化學習控制算法的仿真測試及快速硬件部署,控制器開發采用基于模型的設計方式,可以有效避免代碼編程方式的弊端,并大大提高控制器開發速度. 本研究還提供了一套仿真測試平臺,我們將開發的控制器在仿真平臺和真實環境中進行飛行測試,驗證了該開發系統的有效性.
智能飛行控制系統的開發是一個亟待解決并突破的研究領域[10],研究表明,強化學習是實現飛控智能化的一個重要途徑,目前基于強化學習實現無人機控制的理論研究已取得了突出的成果[7,11].
基于強化學習的智能算法具備實現飛行控制的仿真與驗證. Koch 等人利用強化學習近端策略優化(PPO)算法[12]實現了無人機仿真控制,經過訓練的無人機姿態控制器在仿真環境中可以實現穩定飛行并表現出了超過PID 控制器的性能. 文獻[13]中提出了一種基于強化學習的新誤差卷積神經網絡控制器設計方法,并用于復合式無人機的飛行控制,該研究縮小了虛擬仿真和真實環境之間的控制性能的差距,實現了強化學習在實際環境中的應用. 文獻[14]中提出了一種新的強化學習控制算法,該算法比現有的算法更適用于控制四旋翼飛行器,特別是在非常苛刻的初始化條件下,仍可以自動調整四旋翼飛行器處于穩定的懸停狀態. 更加令人矚目的是,文獻[15]以強化學習理論為基礎,提出了一種用于訓練神經網絡仿真并將其編譯為可在嵌入式硬件上運行的工具鏈,但是開發方式仍為代碼式編程,對智能飛控的開發需要很高的門檻.
盡管強化學習智能飛控算法已在仿真中取得突出成就,但在實際中仍缺乏一套完備的強化學習飛行控制器開發平臺.
本文在智能飛控領域已有研究的基礎上,針對目前智能飛控開發存在的痛點,提出了一套完備的無人機智能飛行控制開發系統,整個系統框架如圖1 所示.

圖1 系統架構圖
本系統采用4 層架構的模式,分別為: (1)數據存儲層; (2)強化學習網絡訓練層; (3)控制器開發層;(4)硬件測試層. 其中數據存儲層根據不同數據類型分數據庫存儲,對于關系型數據,如不同飛行器模型及不同強化學習超參數對應的控制器性能,存儲在MySQL數據庫中. 對于非關系型數據使用MongoDB 數據進行存儲,MongoDB 數據庫是一個基于分布式文件存儲的數據庫,適用于數據量大的存儲場景. 在本系統中,需要使用服務器進行強化學習訓練,每次訓練的神經網絡參數,采用MongoDB 分布式集群的存儲方式.
強化學習網絡訓練層是指進行強化學習控制器網絡訓練的層,本層采用強化學習作為飛行控制器,需要有一個通用的訓練環境來進行強化學習訓練. 系統選用戴爾R940 服務器來搭建仿真訓練環境,并在Gazebo仿真模擬器中建立了一個四旋翼模型,該模型可以根據強化學習神經網絡輸出的電機控制量,在俯仰、橫滾、偏航3 個方向上改變四旋翼姿態. 控制器開發層主要使用基于模式的設計方法(MDB),利用Simulink提供的無人機自駕儀開發支持包(Pixhawk pilot support package,PSP)進行控制器設計,并利用自動代碼生成技術將控制器部署到Pixhawk 硬件中. 下面分層介紹整個系統的實現原理.
強化學習算法的基本原理是通過讓智能體與環境不斷交互來學習最優策略,以實現回報最大化或完成特定目標. 整個交互過程如圖2 所示,在某一時刻t,智能體從環境中獲得狀態值St,根據當前狀態值并經過特定策略的評估,執行最優動作并獲取下一時刻的狀態值St+1. 其中狀態轉換定義為轉換到狀態s′的概率,即當前狀態和動作分別為s和a,轉換到狀態s′的概率可以表示為pr{st+1=s′|st=s,at=a}. 智能體的行為由其策略 π定義,該策略 π本質上是對特定狀態應采取動作的映射.

圖2 強化學習交互圖
本系統在搭建訓練平臺時,將環境建模為一個四旋翼無人機模型,用于模擬無人機在無重力條件下的飛行(模擬重力只需要在垂直方向加一個力的分量,在進行強化學習訓練時,去除重力作用可以規避很多不必要的問題,后續實驗只需要平衡重力即可). 如圖3所示,整個仿真環境利用Gazebo 仿真模擬器完成搭建,其中無人機模型符合動力學特性,可以根據輸入的信號驅動電機并改變飛行姿態.

圖3 強化學習仿真環境中神經網絡與無人機模型交互圖
根據強化學習算法的理論基礎,將智能體建模為一個4 層的強化學習神經網絡,其中輸入層有9 個節點,代表從Gazebo 環境中獲取9 個狀態信息; 輸出層有4 個節點,代表電機的4 個輸出控制信號; 中間是2 層具有32 個節點的隱藏層,整體構成了強化學習控制器網絡.
神經網絡控制器以無人機飛行時的角度、角速度、角速度誤差組成了9 維矢量作為輸入,將無人機的輸入狀態向量定義為:

其中,?,θ分別表示俯仰角和橫滾角,ω,β,γ分別表示無人機的三軸角速度,Du,Dv,Dw是地方坐標系中期望速度與當前速度分量之間的差異,Dψ是目標偏航角與當前偏航角之間的差異.
在強化學習智能體網絡的訓練中,本實驗使用近端策略優化(PPO)算法,該算法在強化學習領域有著廣泛的應用,在運動控制領域中具有成功的先例(如半獵豹實驗,足式機器人等). 同時,OpenAI 的Baselines項目[16]中提供了PPO 算法的通用API,本文直接使用Baselines 提供的PPO 算法訓練神經網絡.
在每一個訓練步驟中,使用智能體網絡指定的動作在Gazebo 模型中執行一個模擬步驟,每個模擬步驟需要返回一個獎勵以評估給定動作的執行情況. 本文在每個模擬步驟的強化學習獎勵函數由3 部分組成:飛行時長、飛行穩定性和速度跟蹤誤差. 飛行時長和飛行穩定性這兩項可以使飛行器在保持穩定飛行的同時,盡可能飛行更長的時間,速度跟蹤誤差用來衡量智能體對輸入指令的跟蹤情況. 因此,本文將獎勵函數定義為:

其中,r是一個不變的存活獎勵,用來反映飛行器飛行的時長,每個時間步不斷累加,飛行的時間越久,累積獎勵越大,這有利于獲得更長的飛行時間. ?∥ω∥2項通過最小化角速度來防止機體抖動,以盡可能使機體保持穩定飛行.項求和每個速度分量誤差的絕對值,由于獎勵是負數,該項表示懲罰,以最小化跟蹤誤差,從而盡可能準確地跟蹤目標速度.
整個訓練過程在一臺擁有72 核CPU 和250 GB內存的戴爾R940 服務器上進行,通過使用并行計算,訓練100 萬步的PPO 算法大約需要1 h. 通過記錄每個訓練周期智能體獲得的獎勵,可以得到如圖4 所示的reward 曲線圖,通常在訓練結束之前就實現了收斂.

圖4 強化學習訓練過程中reward 曲線圖
在每個交互周期中,強化學習神經網絡根據狀態輸入獲得4 個電機的輸出值,并作用于無人機動力學模型,無人機根據不同的控制量來調節飛行姿態,以減小實際速度與期望速度之間的誤差并獲得最優的獎勵回報. 經過不斷的訓練優化,使強化學習神經網絡得到收斂,我們將調節的超參數及網絡控制性能保存到MySQL 數據庫中,將訓練好的網絡參數存儲到MongoDB數據庫中,以供控制器開發平臺使用.
本層將訓練完成的強化學習神經網絡參數用于無人機飛行控制器的設計實現,整體設計采用基于模型設計方式取代傳統代碼編程的方式. 基于模型設計將敏捷原則延伸到包括物理組件和軟件在內的系統開發工作,從需求捕獲、系統架構和組件設計,到實現、驗證、測試和部署,基于模型設計可以貫穿整個開發周期.
通過手動編碼來開發復雜的飛行控制器是一項艱難而又不可靠的任務,難以避免編碼錯誤、邏輯錯誤或未知漏洞帶來的不正確的結果. Simulink 是一款值得信賴的MBD 開發工具,通過模塊化編程來避免手動編碼開發存在的問題,為飛行控制器的開發提供了捷徑. 除此之外,Simulink 具有的自動代碼生成能力可以根據模塊化的控制器自動生成可執行的控制器軟件,實現強化學習控制算法的快速部署. 因此,本層使用Simulink 來進行控制器開發.
如圖5 所示,基于強化學習的飛行控制器主要包括以下幾個模塊: 控制信號輸入模塊、神經網絡參數接口模塊、計算網絡輸入模塊以及強化學習控制系統模塊,模塊內部采用獨立的子系統,分別設計以完成特定的內部功能. 其中信號輸入模塊讀取遙控器RC 信號,遙控器的控制信號主要是對無人機機體速度、姿態角以及油門驅動的控制,同時將歸一化后的控制信號傳遞到網絡計算模塊進行當前狀態值的計算. 網絡計算模塊根據控制信號輸入以及傳感器獲取的無人機姿態角數據計算出強化學習神經網絡的狀態輸入,即s=(?,θ,ω,β,γ,Du,Dv,Dw,Dψ)T∈R9,并作為當前時刻的狀態量輸入到強化學習控制系統中.

圖5 基于模型的智能飛控設計
在Simulink 模型中,需要一個“控制器參數接口”模塊用于接收從仿真計算機獲得的神經網絡參數. 我們將仿真環境中訓練好的網絡參數保存到Matlab 可以讀取的“.mat”文件中,并通過TCP/IP 通信來連接主機和服務器,將參數導入到“控制器參數接口”模塊. 最終,網絡參數與狀態輸入信號一起傳入強化學習控制系統模塊中,在每一次循環中,該模塊根據獲取到的狀態輸入s,經過強化學習神經網絡的前向傳遞,計算出下一步采取的動作a. 動作a對應的是四旋翼4 個電機的輸出油門控制量,油門控制量可直接作用于無人機并通過改變電機轉速來改變四旋翼的飛行姿態,驅動無人機進行飛行并進行姿態控制.
為了驗證強化學習飛行控制器的性能,我們搭建了一套半實物仿真測試平臺和硬件測試平臺,并進行仿真測試實驗以及真機飛行實驗.
硬件在環仿真(HIL)利用硬件在仿真實驗系統的回路中進行實時仿真,通過在計算機仿真回路中加入一些實物,并建立數學模型,將實物的動態特性和物理規律在計算機上運行試驗,從而為物理部件創造一個仿真環境.
硬件在環仿真系統已被證明在加快無人駕駛飛行器的控制系統的開發速度方面的有效性,在無人機控制器設計完成之后,需要測試驗證控制器的控制性能,若直接進行無人機實物測試,可能會發生無法預測的故障. 為了避免安全問題,可以先進行HIL 實驗,來測試控制器的控制性能. 這是控制器測試的第一步,根據HIL 測試的結果,可對控制器進行適當的調整.
如圖6 所示,本研究以現有的無人機仿真軟件為基礎搭建仿真平臺,仿真環境中包含一架小型四旋翼無人機模型,為了與強化學習訓練環境中的四旋翼無人機保持盡可能的一致,實驗時選用重量為440 g,軸距為225 mm 的“X”結構四旋翼無人機. 同時,無人機在仿真環境中飛行無氣流、風力等環境因素的影響,可以很好地規避其他因素對控制器性能的影響.

圖6 半實物仿真測試平臺
HIL 實驗中,首先將開發的強化學習控制器部署到Pixhawk 硬件,并將Pixhawk 硬件與無人機仿真軟件建立連接,之后通過遙控器控制飛控硬件發出驅動信號,并控制仿真無人機飛行. 最后,可以在仿真平臺中觀察無人機的各項飛行數據及飛行軌跡,并進行分析實驗. 軟件界面中,通過三維場景視窗可以觀察無人機在仿真環境中的位置和姿態; 軌跡視窗可以記錄無人機在仿真環境中的水平飛行軌跡; 參數視窗用于記錄無人機在飛行過程中電機轉速、姿態角數據、速度數據以及位置數據. 記錄實時采集的數據,并進行對比實驗,最終用于驗證所提出開發平臺的性能.
開發的半實物仿真測試平臺可以替代真實無人機進行控制器性能實驗,在仿真環境中可以規避突發的安全問題和無法預測的故障,可以作為控制器測試的第一步.
經過第一步控制器的硬件在環測試后,需要進行真機測試,這樣才能進一步驗證開發的控制器在真實環境中的可用性. 本研究開發的智能飛行控制器可以通過自動代碼生成將控制器固件部署到Pixhawk 硬件中,并安裝在真實四旋翼無人機上飛行. 如圖7 所示,搭建了針對特定四旋翼無人機的硬件測試平臺,圖7(a)包括一個用于測試無人機飛行姿態角的云臺裝置,可將無人機安裝在云臺上固定,并測試記錄在飛行過程中的姿態角,用于對控制器跟蹤性能的分析. 圖7(b)是在一個小型四旋翼無人機上進行的飛行測試,我們讓飛手在空曠地帶控制四旋翼無人機飛行,可以看出本研究提出的智能飛控開發系統可以在實際中使用,并具有很好的控制性能.

圖7 控制器真機測試
本文提出了一套完備的無人機智能飛行控制系統仿真、測試及部署的一體化平臺. 基于MBD 開發工具,使用模塊化編程以及自動代碼生成技術將強化學習算法部署到Pixhawk 硬件中,并實現了真實無人機的飛行測試. 該平臺可大大減小智能控制器開發成本以及規避代碼開發中的錯誤. 未來的工作中,我們將進一步拓展平臺的功能,以適用于不同無人機機型的飛控開發. 同時將部署平臺與更多硬件連接交互,以實現各種復雜的智能控制系統,讓強化學習控制算法在實際中得到更好的應用.