羅澤勇
(中國科學院長春光學精密機械與物理研究所,吉林長春130033)
一種小型無人機的機載計算機軟件系統設計
羅澤勇
(中國科學院長春光學精密機械與物理研究所,吉林長春130033)
針對某小型無人機的飛行任務要求,設計并實現了該無人機機載計算機軟件系統.通過對該無人機航電系統結構特點進行分析,提出了軟件系統結構的層次化設計方法,并利用模塊化設計思想對軟件系統進行任務劃分.按照ORB機制設計了系統進程間的通信方式,采用狀態機設計方法實現了系統的應急策略.所設計的機載計算機軟件系統結構優良,層次清晰,具有高度可擴展性和可繼承性.半物理仿真試驗和外場試驗結果表明,該機載計算機軟件系統功能正常,運行穩定.
小型無人機;軟件系統;系統架構;進程間通信;狀態機
在過去的幾十年里,小型無人機在全世界的軍事和民用領域內得到廣泛應用.小型無人機具有靈活性高、隱蔽性好以及對燃料要求較低等優勢,能夠在惡劣(dirty)、枯燥(dull)、危險(dangerous)的3D環境中執行各種艱巨任務[1].現在其機載計算機軟件系統的設計已經成為限制小型無人機向全自主、多任務、高安全方向發展的主要障礙[2].無人機機載計算機與大多數嵌入式系統一樣,大小有限、資源有限,但要求能夠滿足各種復雜條件實時應用,因而其軟件系統的開發是一個復雜的過程.在小型無人機機載計算機軟件系統設計過程中,需要重點考慮的問題:(1)如何設計靈活、可擴展的軟件系統架構以滿足任務多樣性要求,以及越來越廣泛的傳感器處理要求[3];(2)無人機的廣泛應用導致越來越多的飛行事故的出現,頻繁的飛行事故率導致無人機在軍用和民用領域中受限[4-5],所以如何在設計中保證無人機的安全性和可靠性也是機載計算機軟件系統設計的一個重要任務.
國內文獻中關于機載軟件系統的研究大多數都是從特定平臺著手,介紹軟件具體實現方式,很少介紹軟件的結構化設計方法.而國外文獻研究中更強調頂層的結構設計,美國斯坦福大學采用基于Server-Client的軟件架構、Server建立與硬件層接口、Client建立與用戶層的接口,這種架構能夠將頂層任務和底層服務隔離開[6].本文借鑒了這種分層設計的方法,通過對功能模塊的層次劃分和任務劃分,在高實時性和高可靠性的嵌入式實時多任務操作系統的基礎上完成了多任務的并發設計,確定了高度可擴展的軟件系統的架構.引入以數據為中心的系統進程間通信方式,增加了軟件系統的數據通信的可靠性和靈活性.本文通過軟件設計中充分考慮無人機在地面和空中的應急情況處理,為提高無人機安全性和可靠性提供了另一種有效手段.
機載計算機軟件系統設計與航電系統結構密不可分,圖1描述了該小型無人機航電系統的結構.整個航電系統以機載計算機為核心,各種傳感器、組合導航、數傳等航電設備通過串口與機載計算機進行通信,共同完成無人機的傳感器數據采集、飛行控制和任務管理.機載計算機采用實時多任務操作系統,處理通過各個傳感器采集到的數據,進行位置和姿態的預測,實現飛控算法,將控制指令和動力指令分別發送給執行機構和發動機ECU,并通過數傳系統向地面站發送飛行狀態信息,同時利用數據記錄儀記錄相應的飛行狀態數據;組合導航系統包含三軸陀螺、三軸加速度計和GPS,用于測量無人機機體坐標下的位置、速度和加速度等信息;空速計、壓力傳感器分別用于測量空速和氣壓高度信息;安控系統用于執行緊急情況下的無人機應急策略.
該小型無人機飛行任務要求:實現從自主滑跑起飛、爬升、姿態穩定飛行到遙控降落;通過數傳系統將飛行任務狀態和通信鏈路本身狀態發送給地面站進行監測;對各個航電設備進行自檢測功能;通過飛行管理實現對多個任務的實時調度;能夠在航電設備故障狀態下進行應急處理.
系統的架構是否合理以及模塊化設計是否清晰,是影響機載計算機軟件系統能否順利開展詳細設計工作的主要因素.系統的架構表示為系統的基本組件、組件之間的相互關系以及對這些組件管理的基本原則[7].優良的軟件架構能夠清楚地對系統進行描述,有利于軟件的擴展、測試和維護.模塊化的目的是為了降低程序復雜度,減少程序的耦合程度,使程序設計、調試和維護等操作簡單化.圖2為機載計算機軟件系統的層次化結構.根據功能需求,將機載計算機軟件系統劃分為驅動層、數據處理層、控制層和應用層4個層次.
從圖2中可以看出,軟件系統結構的最底層為軟件的驅動層,直接和硬件相關,主要負責傳感器數據的采集、數傳通信數據的讀取、組合導航原始數據的采集、執行機構的控制等工作;驅動層之上為數據處理層,數據處理層調用驅動層模塊獲取原始數據,對原始數據進行解碼、變換等加工,將加工后的數據發布給控制層;控制層位于數據處理層之上,控制層需要的數據依賴于數據處理層,但是控制層不會與具體的數據處理任務耦合,而是通過對象請求代理進行接口數據耦合,具體來說是通過ORB機制為驅動層和控制層之間提供通用的數據通信服務,實現控制層和數據處理層數據的同步;軟件結構的最上層為應用層,根據功能需求進行飛行任務管理,直接調用控制層的控制模塊實現自主起降、航跡飛行、區域偵察等特定任務,同時進行無人機狀態的切換.
3.1多任務劃分和管理
任務是能夠獨立執行的一個功能或處理過程,是操作系統調度的基本單位,任務的合理劃分和優先級的合理設置對保證系統的實時性至關重要.機載計算機軟件的設計采用了VxWorks實時操作系統,該操作系統支持多任務,并基于優先級進行任務調度.在多任務實時操作系統下進行任務劃分需要遵循以下原則:
(1)功能獨立的操作劃分為一個任務;
(2)功能聯系密切的操作劃為同一個任務;
(3)I/O操作劃分為單獨任務;
(4)周期性的操作作為任務來執行;
(5)根據操作的緊急程度劃分為不同優先級的任務.
根據機載計算機軟件系統的層次架構和任務劃分的原則,在機載計算機軟件系統中設計了不同優先級的幾類任務(如表1所示).表1中:傳感器數據采集、組合導航和舵機控制執行I/O操作劃分為單獨的任務;數傳通信作為周期性任務;功能完整并具有大量運算的飛行控制率計算作為獨立的任務;飛行管理、應急處理和數據記錄等操作功能獨立,也劃分為單獨的任務.
機載計算機軟件系統中的多任務并發圖如圖3所示.多任務的并發執行能夠提高任務調度的靈活性,總體上減少系統的執行時間.在圖3中,數傳通信是地面站和無人機交互的直接通道,包括遙控任務和遙測任務,這2個任務執行周期設計為40ms;控制率計算任務實現自主滑跑和基本飛行模態的控制算法,應具有較高優先級,執行周期設計為20ms;傳感器數據采集、組合導航和舵機控制任務主要執行I/O操作,設計為中斷驅動方式的異步任務;組合導航數據處理、傳感器數據處理、控制指令轉換等任務屬于重要數據獲取的中間層,執行周期設計為40ms;飛行管理任務和應急處理任務屬于非緊急任務,執行周期設計為80ms.
3.2以數據對象為中心的通信方式設計
進程間通信是多任務系統設計的重要功能,在VxWorks操作系統中,任務取代了進程的概念.機載計算機的軟件系統中采用了ORB機制實現多對多的任務間通信,ORB機制提供了開放的對象通信的框架,以數據對象為中心,在不同任務間建立了數據交換的軟總線,將數據和任務解耦合,對數據對象進行封裝和管理.
機載計算軟件系統中通過Publish/Subscribe方法實現ORB機制.圖4表示采用Publish/Subscribe方法,實現不同任務間的數據通信.中間為對象請求代理,它將所有的交互的數據進行分類和封裝,確定不同的數據通道;消費數據的任務(Subscriber)首先向對象代理發生訂閱請求;生成數據的任務(Publisher)產生數據的同時,將該事件發布出去;對象請求代理監聽到數據發布事件發生后,將該事件通知給所有訂閱該數據的任務,訂閱數據的任務即可通過該數據通道獲得所需要的數據.生成和消費數據的任務彼此透明,生成和消費過程不需要嚴格同步,通過采用互斥信號量和加鎖的方式保證對不同任務對數據的讀寫不發生沖突,解決進程間通信的數據一致性問題;另外,這種處理方式以數據對象作為中心,當需要新的數據結構可以直接添加到ORB中,并且生產數據和消費數據的任務可以根據需要被具有該數據接口的其他模塊替換,顯著增強了系統設計的獨立性和擴展性.
3.3復雜應急處理的狀態機設計
復雜情況下的安全保障是無人機系統面對的一個重大挑戰[8].尤其是在航電設備出現故障、復雜環境下數傳系統失靈等狀況下,做出合理的應急決策是保證無人機和地面指揮、操作人員安全的重要手段.在機載計算機軟件系統設計過程中,針對自主滑跑和空中飛行過程中可能會出現的緊急情況制定了應急策略.首先描述出可能出現故障情況和無人機所處的飛行狀態,然后針對各個故障情況制定相應的應急策略,再通過狀態機直觀地給出緊急情況下狀態的轉換關系,最后在機載計算機中將狀態機轉化為代碼.
(1)地面應急處理
自主滑跑階段包括自主滑跑、手遙滑跑和應急處理的3個狀態,主要針對可能出現的數傳系統故障、無人機偏離跑道、超出決斷距離等情況進行應急處理.當出現數傳故障、超出最大滑跑速度及超出最大滑跑距離的情況,關閉發動機,繼續自主糾偏;當航向角超出允許范圍,認為滑跑已經偏離正常軌道,在關閉發動機的情況下,進行一定程度的剎車制動;當超出滑跑允許最長距離和側偏距離,認為情況緊急,為避免嚴重事故發生,采取關閉發動機、剎車剎死的應急措施.具體的狀態機轉換過程如圖5所示.
(2)空中應急處理
無人機在空中自主飛行過程中,各種航電設備一旦出現故障,都有可能導致嚴重的事故發生,在軟件設計通過實現完善的應急策略能夠顯著地增加無人機的安全性.本文以數傳系統故障為例介紹應急狀態機的設計過程.當無人機在空中發生數傳故障的情況下,首先通過無人機當前的飛行高度、飛行速度和飛行姿態判斷當前處于何種飛行狀態,并確定出應急安全狀態;然后根據當前飛行狀態判斷能否進入到應急安全狀態,若能進入應急安全狀態,就切換到應急安全狀態等待數傳故障恢復,若不能進入應急安全狀態或者進入應急安全狀態以后數傳故障長時間不能恢復,就采取緊急處理措施,關閉發動機開傘降落.具體空中應急的狀態機描述如圖6所示.
4.1半物理仿真
圖7為小型無人機半物理仿真的實驗室環境.通過利用三軸轉臺、仿真計算機、視景仿真平臺等設備對無人機機載計算機軟件系統進行測試.試驗中不僅測試了基本的飛行模態,還對加入干擾以及主要航電設備出現異常等情況進行了模擬,通過試驗數據分析,判定機載計算機軟件系統運行是否穩定,控制算法是否滿足要求以及應急策略是否合理.
半物理仿真試驗的主要測試項目及測試結果如表2所示.
4.2飛行試驗
在外場飛行試驗中,測試了包括平飛、定向飛、爬升、左盤旋、右盤旋、下滑等飛行模態,這里僅列舉部分飛行模態的測試結果.橫坐標表示數據點,實際飛行過程中40ms產生一個數據點,縱坐標分別是滾轉、俯仰和偏航3個姿態角.無人機做30°航向角定向飛行,無人機姿態角響應如圖8所示,從圖8中可以看出滾轉角控制穩定,偏航角控制精度較高;無人機做-0.3°等俯仰角下滑,無人機姿態角響應如圖9所示,從圖9中可以看出滾轉角控制穩定,俯仰角控制角度與期望值吻合.整個飛行試驗過程軟件系統未出現異常.
本文針對自主研發的小型無人機平臺,進行了機載計算機軟件系統的設計,該機載計算機軟件系統結構層次分明、模塊化清晰.利用松耦合的ORB通信機制,完成了機載計算機軟件系統內部不同構建的復雜交互.通過設計狀態機實現了地面和空中的復雜應急策略,保證了無人機的安全性.從半物理試驗和外場飛行試驗的結果可以看出,機載計算機軟件系統的設計穩定可靠,完全能夠滿足無人機飛行任務的要求.
[1] DANIELA MEOLA,LUIGI IANNELLI,LUIGI GLIELMO.Flight control system for small-size unmanned aerial vehicles:design and software-in-the-loop validation[C]//21st Mediterranean Conference on Control &Automation,Chaina:IEEE,2013:357-362.
[2] YI-RUI TANG,YANGMIN Li.The software architecture of a reconfigurable real-time onboard control system for a small UAV helicopter[C]//The 8th International Conference on Ubiquitous Robots and Ambient Intelligence,Incheon:IEEE,2011:228-233.
[3] JOHN TISDALE,ALLISON RYAN,MARCO ZENNARO,et al.The software architecture of the berkeley UAV platform[C]//Proceedings of the 2006IEEE International Conference on Control Applications,Munich:IEEE,2006:1420-1425.
[4] DAVID W KING,ALLEN BERTAPELLE,CHAD MOSES.UAV failure rate criteria for equivalent level of safety[C]//International Helicopter Safety Symposium,Montereal:American Helicoper Society,2005:269-381.
[5] JAMES T HING,PAUL YOH.Development of an unmanned aerial vehicle piloting system with integrated motion cueing for training and pilot evaluation[J].Journal of Intelligent and Robotic Systems International Inc,2008:3-19.
[6] JANG JS,C TOMLIN J.Design and implementation of a low cost,hierarchical and modular avionics architecture for the dragonFly UAVs[C]//Proceedings of AIAA Guidance,Navigation,and Control Conference,Minneapolis:AIAA,2002:4465-4477.
[7] FRED BRIGGS.UAV software architechure[C]//Infotech@Aerospace Conferences,California:AIAA,2012:2539.
[8] MIAOBO DONG,BEN M CHEN,GUOWEI CAI.Development of a real-time onboard and ground station software systerm for a UAV helicopter[J].Journal of Aerospace Computing,Information,and Communication,2007:933-955.
Design of an airborne computer software system for a small UAV
LUO Ze-yong
(Changchun Institute of Optics Fine Mechanics and Physics,Chinese Academy of Sciences,Changchun 130033,China)
An airborne computer software system was developed,which could be used for flight mission of a certain small UAV.For the structure of the avionics,a hierarchical software design method was proposed,and the software task component was divided by quoting the concept of modulization.The interprocess communication(IPC)was implemented according to ORB mechanism.The safety strategy was set up by state machine.The designed airborne computer software system has a good architecture with high scalability and inheritable.The entire software system has been successfully tested in both a hardware-in-the-loop simulation environment and actual field flights.The flight results have shown that the software system is competent and reliable enough to go on with automatic flight of the UAV.
UAV;software system;system architecture;IPC;state machine
TP 336;V 249 [學科代碼] 520·60 [
] A
(責任編輯:石紹慶)
1000-1832(2015)01-0064-07
10.16163/j.cnki.22-1123/n.2015.01.013
2013-12-30
中國科學院“三期創新”平臺資助項目;吉林省科技發展計劃項目(20100458).[作者簡介] 羅澤勇(1984—),男,碩士,助理研究員,主要從事飛行仿真技術研究.