宋 磊, 曹林平, 吳文超, 蚩軍祥
(空軍工程大學(xué)工程學(xué)院,西安 710038)
飛行控制系統(tǒng)是無人機(jī)的重要組成部分,是飛行控制算法的運(yùn)行平臺,它的性能好壞直接關(guān)系著無人機(jī)能否安全可靠地飛行。隨著航空技術(shù)的發(fā)展,無人機(jī)飛行控制系統(tǒng)正向著多功能、高精度、小型化、可復(fù)用的方向發(fā)展。高精度要求無人機(jī)控制系統(tǒng)的精度高、穩(wěn)定性好,能夠適應(yīng)復(fù)雜的外界環(huán)境,因此控制算法比較復(fù)雜、計(jì)算速度快、精度高;小型化則對控制系統(tǒng)的重量和體積提出了更高的要求,要求控制系統(tǒng)的性能越高越好,體積越小越好[1-2]。此外,無人機(jī)飛行控制系統(tǒng)還要具有實(shí)時(shí)性、可靠性、低成本和低功耗的特點(diǎn)?;谝陨峡紤],本文從實(shí)際工程應(yīng)用出發(fā),設(shè)計(jì)了一種基于ARM+CPLD的無人機(jī)飛行控制系統(tǒng)。
飛行控制系統(tǒng)在無人機(jī)上的功能主要有兩個:一是飛行控制,即無人機(jī)在空中保持飛機(jī)姿態(tài)與航跡的穩(wěn)定,以及按地面無線電遙控指令或者預(yù)先設(shè)定好的高度、航線、航向、姿態(tài)角等改變飛機(jī)姿態(tài)與航跡,保證飛機(jī)的穩(wěn)定飛行,這就是通常所謂的自動駕駛;二是飛行管理,即完成飛行狀態(tài)參數(shù)采集、導(dǎo)航計(jì)算、遙測數(shù)據(jù)傳送、故障診斷處理、應(yīng)急情況處理、任務(wù)設(shè)備的控制與管理等工作。
飛行控制系統(tǒng)主要完成3個功能任務(wù),其層次構(gòu)成:最底層的任務(wù)是提高無人機(jī)運(yùn)動和突風(fēng)減緩的固有阻尼——3個軸方向的阻尼器功能;第2層的任務(wù)是穩(wěn)定無人機(jī)的姿態(tài)角——基本駕駛儀的功能(主要進(jìn)行角運(yùn)動控制);第3層的任務(wù)是控制飛行高度、航跡和飛行速度,實(shí)現(xiàn)較高級自動駕駛功能[3]。飛行控制系統(tǒng)原理框圖見圖1。
圖1 飛行控制系統(tǒng)原理框圖Fig.1 The principle of flight control system for UAV
由上述分析易知,飛行控制系統(tǒng)主要由飛行控制器、傳感器(或敏感元件)、舵機(jī)3部分組成。無人機(jī)飛行控制系統(tǒng)的基本架構(gòu)如圖2所示。
圖2 無人機(jī)飛行控制系統(tǒng)的基本架構(gòu)Fig.2 Structure of flight control system for UAV
飛行控制器是以ARM+CPLD為核心的控制計(jì)算機(jī),它是無人機(jī)的中央控制單元,負(fù)責(zé)飛機(jī)上各個單元的協(xié)調(diào)工作,并與地面站之間進(jìn)行數(shù)據(jù)傳輸。同時(shí)根據(jù)控制算法和地面站的命令,保持飛機(jī)以一定的姿態(tài)飛行。
傳感器包括電子羅盤、角速率傳感器、高度傳感器、加速度計(jì)和GPS接收機(jī)等。電子羅盤選用霍尼韋爾HMR3300,它可以測量航向、傾角和翻滾角,輸出方式為SPI串行輸出。角速率傳感器采用的是ADI公司的ADXRS300,其輸出電壓與偏航角速率成正比。高度傳感器選擇利用半導(dǎo)體材料的壓阻效應(yīng)原理制造的MPX4115A大氣壓力傳感器。加速度計(jì)采用的是ADI公司的ADXL203,它是電容式加速度計(jì),具有高精度、高穩(wěn)定性和低功耗等特點(diǎn),輸出電壓經(jīng)信號調(diào)理后正比于加速度值。GPS接收機(jī)選用GPS-G03A(H),它是一款超低功耗的GPS天線接收一體機(jī),可給出經(jīng)緯度,時(shí)間和速度等信息,以RS232串口形式傳輸數(shù)據(jù)。
舵機(jī)包括升降舵、方向舵、副翼。舵機(jī)的控制信號是脈寬調(diào)制信號,便于和飛控計(jì)算機(jī)進(jìn)行接口。
無人機(jī)的飛行控制計(jì)算機(jī)是無人機(jī)飛行控制系統(tǒng)的核心,其硬件結(jié)構(gòu)如圖3所示。按照功能分配,將其設(shè)計(jì)成ARM模塊和CPLD模塊兩大部分,兩者通過一片雙口RAM進(jìn)行數(shù)據(jù)交換。另外還包括一個電源模塊來提供系統(tǒng)所需的各類電壓和供電電池進(jìn)行管理[4-6]。
圖3 飛控計(jì)算機(jī)的硬件結(jié)構(gòu)Fig.3 Hardware structure of flight control computer
ARM模塊的主要功能是保持與地面站的通訊、采集姿態(tài)角數(shù)據(jù)和GPS定位數(shù)據(jù)、讀取CPLD模塊的數(shù)據(jù)、發(fā)送控制命令給CPLD模塊、運(yùn)行相關(guān)的飛行控制算法和導(dǎo)航控制算法。
ARM模塊由ARM處理器芯片和一些外圍接口電路組成,其組成如圖4所示。ARM芯片和FLASH,RAM共同構(gòu)成了系統(tǒng)最小核心板。ARM處理器選用ARM9系列芯片的STR912,其資源主要有:內(nèi)存控制器、FLASH控制器、時(shí)鐘和電源管理、6個PWM輸出、3個UART異步串口、2路SPI接口、1個CAN2.0接口、8路10位A/D通道、30個中斷引腳、多達(dá)80個GPIO、支持JTAG、ISP接口調(diào)試等。
圖4 ARM模塊組成框圖Fig.4 Block diagram of ARM module
外圍接口電路主要由10 M以太網(wǎng)接口、RS232接口、GPS接口、SD卡接口、FLASH、SDRAM 等組成。ARM處理器擴(kuò)展了FLASH器件AM29LV320和SDRAM器件HY57V281620HCT。ARM模塊預(yù)留了一個以太網(wǎng)接口,主要用于軟件調(diào)試和升級,以太網(wǎng)控制器采用的是CS8900A芯片。ARM處理器的3個串口分別連接無線通信模塊、GPS接收機(jī)和PC機(jī),GPS和PC串口連接均需要1片MAX232芯片進(jìn)行電平轉(zhuǎn)換。SD卡用于存放飛行參數(shù)及圖像數(shù)據(jù)。雙口RAM采用CY7C024V芯片,作為ARM模塊和CPLD模塊的數(shù)據(jù)交換區(qū)。
CPLD模塊的主要功能是采集與測量傳感器的數(shù)據(jù)、接收ARM模塊的命令與驅(qū)動舵機(jī)。CPLD模塊分擔(dān)了一部分原可以采用ARM模塊來實(shí)現(xiàn)的任務(wù),使ARM處理器有更多的時(shí)間用于運(yùn)行算法,以提高系統(tǒng)的整體性能。
CPLD模塊的結(jié)構(gòu)如圖5所示。它包括一片Altera MAX II系列的CPLD芯片EPM1270和一些接口電路,主要有:8路傳感器信號采集通道、4路舵機(jī)驅(qū)動通道、1路發(fā)動機(jī)轉(zhuǎn)速測量通道、1路電池電壓檢測通道等。其中舵機(jī)驅(qū)動、無線接收機(jī)信號檢測、信號控制等功能均由CPLD芯片的內(nèi)部邏輯電路來實(shí)現(xiàn),采用Verilog HDL語言編寫。鑒于飛行控制和導(dǎo)航精度的要求,該模塊選用了TI公司的AD芯片TLC3548,用來采集三軸加速度計(jì)、高度傳感器、三角速率陀螺輸出的電壓信號。TLC3548采集的數(shù)據(jù)由EPM1270進(jìn)行預(yù)處理,然后存放到雙口RAM中。同時(shí)EPM1270還從雙口RAM的指定位置讀取命令數(shù)據(jù),從而根據(jù)命令執(zhí)行相應(yīng)的控制功能。
圖5 CPLD模塊組成框圖Fig.5 Block diagram of CPLD module
由于飛控計(jì)算機(jī)運(yùn)行的程序復(fù)雜,信息量大,對實(shí)時(shí)性和穩(wěn)定性要求高,采用單任務(wù)順序機(jī)制的編程方式已不能滿足飛控系統(tǒng)的要求,因此飛控軟件采用了實(shí)時(shí)嵌入式操作系統(tǒng)μC/OS-Ⅱ。μC/OS-Ⅱ是專門為計(jì)算機(jī)的嵌入式應(yīng)用而設(shè)計(jì)的實(shí)時(shí)操作系統(tǒng),是可裁減的,基于靜態(tài)優(yōu)先級的可剝奪型多任務(wù)實(shí)時(shí)內(nèi)核,具有高度可移植性,特別適合于微處理器和微控制器,其實(shí)時(shí)性能和內(nèi)核的健壯性已在大量的實(shí)際應(yīng)用中得到了證實(shí)[7]。
嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS-Ⅱ具備良好的可移植性,可以在不同組成結(jié)構(gòu)的硬件平臺上運(yùn)行。移植工作實(shí)際上就是對與處理器有關(guān)的代碼進(jìn)行重寫或修改。
1)OS_CPU.H文件的修改。在OS_CPU.H中設(shè)置與STR912相關(guān)的常量、宏和類型定義。
2)OS_CPU_C.C文件的修改。μC/OS-Ⅱ的移植需要編寫以下10個簡單的C函數(shù):OSTaskStkInit(),OSTaskCreateHook(),OSTaskDelHook(),OSTimeTick-Hook(),OSTaskSwHook(),OSTaskStatHook(),OSTaskIdleHook(),OSInitHookBegin(),OSInitHookEnd(),OSTCB-InitHook()。其中只有OSTaskStkInit()在μC/OS-Ⅱ中是必要的,其他函數(shù)對系統(tǒng)擴(kuò)展時(shí)才使用,可不包含任何代碼,但必須聲明。
3)OS_CPU_A.S文件的修改。在 OS_CPU_A.S中改寫4個匯編語言函數(shù):OSStartHighRdy(),OSCtx-Sw(),OSIntCtxSW(),OSTickISR()。
對飛控系統(tǒng)進(jìn)行有效的任務(wù)劃分并分配任務(wù)的優(yōu)先級是基于μC/OS-Ⅱ系統(tǒng)方案設(shè)計(jì)的重要內(nèi)容。正確合理的任務(wù)劃分和優(yōu)先級分配可以充分利用實(shí)時(shí)操作系統(tǒng)可剝奪型內(nèi)核,提高整個程序的實(shí)時(shí)性能和執(zhí)行效率。根據(jù)無人機(jī)飛控系統(tǒng)的任務(wù)流程,可以將軟件劃分為以下幾個任務(wù)。1)初始化任務(wù)Task_Init。完成μC/OS-Ⅱ、數(shù)字I/O的初始化以及定時(shí)器和參數(shù)的設(shè)置。任務(wù)優(yōu)先級為7。2)數(shù)據(jù)采集任務(wù)。Task_Data:完成對加速度計(jì)、高度傳感器和GPS模塊的數(shù)據(jù)采集,獲得無人機(jī)控制需要的姿態(tài)和位置數(shù)據(jù)。任務(wù)優(yōu)先級為8。3)姿態(tài)控制任務(wù)。Task_Pose:實(shí)現(xiàn)無人機(jī)的姿態(tài)控制、保證無人機(jī)的正常飛行姿態(tài)。任務(wù)優(yōu)先級為10。4)高度控制任務(wù)。Task_Alti:實(shí)現(xiàn)無人機(jī)的高度控制,包括定高飛行、俯仰等運(yùn)動。任務(wù)優(yōu)先級為12。5)航跡控制任務(wù)。Task_Course:實(shí)現(xiàn)無人機(jī)的航跡控制,包括航向保持、定高轉(zhuǎn)彎等。任務(wù)優(yōu)先級為14。6)遙測發(fā)送任務(wù)。Task_Send:發(fā)送無人機(jī)的姿態(tài)信息到地面控制站,任務(wù)優(yōu)先級為16。7)緊急情況處理任務(wù)。Task_Emerge:異常狀態(tài)的處理,判斷是否需要中止系統(tǒng)的運(yùn)行,重新開始無人機(jī)的控制。優(yōu)先級最高任務(wù)為6)。
飛控系統(tǒng)的應(yīng)用程序分為初始化模塊、數(shù)據(jù)采集模塊、控制解算模塊、姿態(tài)讀取模塊、GPS接收模塊、遙測發(fā)送模塊、控制量輸出模塊。任務(wù)與功能模塊資源之間的關(guān)系如圖6所示。
飛行控制系統(tǒng)開始運(yùn)行時(shí),飛控計(jì)算機(jī)在完成自檢后,首先進(jìn)行慣性導(dǎo)航系統(tǒng)的初始對準(zhǔn)及任務(wù)諸元裝訂,接收初始對準(zhǔn)裝置發(fā)送的初始姿態(tài)和位置信息,然后等待控制系統(tǒng)的啟動命令[8-10]。飛控系統(tǒng)啟動后進(jìn)行初始化設(shè)置,根據(jù)任務(wù)優(yōu)先級、調(diào)用相應(yīng)的程序模塊完成預(yù)定任務(wù),各個任務(wù)之間的公共數(shù)據(jù)采用共享變量的方式進(jìn)行協(xié)同,但需要采取一定的保護(hù)措施。
為驗(yàn)證系統(tǒng)設(shè)計(jì)的可行性和可靠性,對所設(shè)計(jì)的飛控系統(tǒng)進(jìn)行了試飛。圖7是無人機(jī)從爬升到平飛過程的過渡曲線。
圖7 仿真與試飛數(shù)據(jù)對比Fig.7 Comparision between simulation result and flight-test data
圖中實(shí)線為實(shí)際試飛數(shù)據(jù)曲線,虛線為試飛后根據(jù)試飛數(shù)據(jù)在相同狀態(tài)下復(fù)現(xiàn)的仿真數(shù)據(jù)曲線,從圖中可以看出過渡過程較為一致,系統(tǒng)設(shè)計(jì)滿足要求。
基于ARM+CPLD的無人機(jī)飛控系統(tǒng)具有體積小、精度高、運(yùn)算速度快、可剪裁性的優(yōu)點(diǎn),特別是軟件上采用μC/OS-Ⅱ?qū)崟r(shí)操作系統(tǒng),使飛控系統(tǒng)具有實(shí)時(shí)性的特點(diǎn)。本文所設(shè)計(jì)的飛控系統(tǒng)已在某型無人機(jī)上得到了應(yīng)用,飛行驗(yàn)證表明系統(tǒng)設(shè)計(jì)滿足要求。本文設(shè)計(jì)的飛控系統(tǒng)具有一定的工程應(yīng)用價(jià)值,為飛控系統(tǒng)的設(shè)計(jì)提供了借鑒。
[1]劉波,何清華.無人機(jī)飛行控制技術(shù)初探[J].飛行力學(xué),2007,27(2):5-8.
[2]曹云峰,蘇丙未.無人機(jī)飛行控制系統(tǒng)先進(jìn)設(shè)計(jì)技術(shù)評述[J].飛機(jī)設(shè)計(jì),2001(46):5-8.
[3]蘇永振,胡延霖,趙菲.AT91M55800A在無人機(jī)飛行控制系統(tǒng)中的應(yīng)用[J].航空兵器,2005(4):16-19.
[4]高建堯,盧京潮.某型無人機(jī)導(dǎo)航/飛控系統(tǒng)設(shè)計(jì)與仿真[J].計(jì)算機(jī)測量與控制,2006,14(6):759-761.
[5]胡勇,丁萬山.基于DSP的某型無人機(jī)飛控系統(tǒng)硬件平臺的設(shè)計(jì)[J].計(jì)算機(jī)技術(shù)與應(yīng)用,2004,24(5):35-38.
[6]李海洋,劉建業(yè).基于FPGA的微小型導(dǎo)航計(jì)算機(jī)數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J].微計(jì)算機(jī)應(yīng)用,2006,27(1):94-97.
[7]任哲.嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS-Ⅱ原理及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2005.
[8]吳成富,段曉軍,吳佳楠,等.基于Matlab和VxWorks的無人機(jī)飛控系統(tǒng)半物理仿真平臺研究[J].西北工業(yè)大學(xué)學(xué)報(bào),2005,23(3):336-338.
[9]KIM H J,SHI D H,SASTRY S.A flight control system for aerial robots:algorithm and expriments[J].Control Engineering Practice,2003,11(12):1389-1400.
[10]LEE Il-hyoung,LEE Dongjin,BANG H.A small scale rotor UAV autonomous flight control system design and verification[C]//AIAA2007-2786:1-8.