文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2015)03-0041-03
0 引言
相對于大型無人駕駛飛機(jī)(Unmanned Aerial Vehicle,UAV),,多旋翼飛行器擁有體積小,、成本低、行動敏捷,、可懸停等優(yōu)勢,,成為許多國家或機(jī)構(gòu)的研究熱點(diǎn),是UAV發(fā)展的主要方向之一,。歸功于UAV技術(shù)近幾年的迅速發(fā)展,,多旋翼飛行器也從一開始的軍事用途逐漸向商用和民用方向延伸,如今已經(jīng)廣泛用于高空拍攝,、軍事偵察,、交通監(jiān)測,、植物保護(hù)、地形勘測等領(lǐng)域[1],。隨著應(yīng)用領(lǐng)域的擴(kuò)展和深入,,工程中對多旋翼飛行器的要求也越來越高,多任務(wù)處理能力和安全性能成為突出的問題,。擁有一個簡潔高效,、安全穩(wěn)定的開發(fā)平臺顯得至關(guān)重要。針對上述情況,,本文提出一種基于NuttX實時操作系統(tǒng)的多旋翼控制系統(tǒng)設(shè)計,,并對硬件布局和軟件結(jié)構(gòu)進(jìn)行詳細(xì)的論述。
1 控制系統(tǒng)總體設(shè)計
1.1 需求分析
為了達(dá)到安全,、穩(wěn)定,、高效的目的,以下針對多旋翼飛行器的特點(diǎn),,對控制系統(tǒng)提出需求:
(1)系統(tǒng)在發(fā)生故障導(dǎo)致主處理器復(fù)位時,,飛行器應(yīng)保持在空中飛行等待系統(tǒng)復(fù)位,避免墜機(jī)造成人身安全和財產(chǎn)損失,。
(2)處理器有較高的運(yùn)算性能,,以滿足多任務(wù)和后續(xù)算法開發(fā)的需求。
(3)能高速且精確采集各個傳感器的數(shù)據(jù),,并提供模擬信號采集接口,,以便擴(kuò)展模擬量傳感器。
(4)具備與遙控接收機(jī)和地面站通信的能力,,能識別聯(lián)系中斷的情況,,并采取相應(yīng)安全措施。
(5)擁有8路與主處理器硬件上獨(dú)立的PWM輸出,,用于兼容旋翼數(shù)量不等的飛行器系統(tǒng),。
(6)可記錄飛行中的所有姿態(tài)、位置數(shù)據(jù)和遙控操作數(shù)據(jù),,存于SD卡中,,方便對系統(tǒng)進(jìn)行調(diào)試。
(7)為方便開發(fā),,系統(tǒng)可通過更改SD卡中文件達(dá)到配置系統(tǒng)的目的,。
(8)采用模塊化軟件結(jié)構(gòu),功能可簡單地通過配置文件進(jìn)行修改,,避免頻繁的更新程序,。程序可通過USB接口用Bootloader更新[2]。
(9)預(yù)留外置UART、CAN,、SPI,、I2C等通信接口,給GPS,、數(shù)傳等其他擴(kuò)展模塊提供數(shù)據(jù)通道,,方便后續(xù)應(yīng)用開發(fā)。
1.2 總體設(shè)計
多旋翼旋翼飛行器的輸出控制有6個自由度,,分別為沿x,、y、z坐標(biāo)軸做旋轉(zhuǎn)和平移動作,,其控制都是通過調(diào)整跟旋翼相連的電機(jī)轉(zhuǎn)速實現(xiàn)[3],故在實際飛行中,,為了達(dá)到穩(wěn)定的飛行,,電機(jī)轉(zhuǎn)速始終是在變化當(dāng)中。由于電流的變化將引起強(qiáng)烈的電磁干擾,,對模擬量傳感器數(shù)據(jù)的采集非常不利,。為了提高傳感器數(shù)據(jù)采集的精度,同時兼顧采集速度,,本文采用全數(shù)字量SPI接口傳感器,。另一方面,為了達(dá)到失效保護(hù)作用,,同時減輕主處理器的負(fù)荷,,系統(tǒng)額外采用一個協(xié)處理器。
控制系統(tǒng)對實時性要求較高,,同時進(jìn)行的處理內(nèi)容也比較復(fù)雜,,包括各個傳感器數(shù)據(jù)的采集、姿態(tài)估計,、姿態(tài)控制,、遙控或地面站的命令分析、電機(jī)控制,、日志記錄等,。對于這種任務(wù)比較多的程序結(jié)構(gòu),如果采用普通的前后臺系統(tǒng)結(jié)構(gòu),,勢必造成開發(fā)難度大,、程序?qū)崟r性弱、系統(tǒng)可維護(hù)性差等結(jié)果,。因此,,本文率先引入功能強(qiáng)大的NuttX實時操作系統(tǒng)。NuttX注重標(biāo)準(zhǔn)兼容和小型封裝,主要遵循ANSI和Posix標(biāo)準(zhǔn),,采用模塊化設(shè)計,,完全可搶占式內(nèi)核,并且支持類Unix的Script控制和類Bash的NuttShell控制臺,,能為多旋翼飛行器控制系統(tǒng)的開發(fā)提供極大的方便,。
2 控制系統(tǒng)硬件設(shè)計
2.1 硬件選型
(1)處理器:由于主處理器要負(fù)責(zé)采集各個傳感器的數(shù)據(jù)進(jìn)行搬運(yùn),并進(jìn)行姿態(tài)估算和控制,,所以至少需具備DMA功能和硬件浮點(diǎn)運(yùn)算,,才能保證控制系統(tǒng)的實時性和預(yù)留充足的資源給后續(xù)開發(fā)。經(jīng)過篩選,,本文采用ST公司的32位Cortex-M4內(nèi)核處理器STM32F429VIT6,,其最高主頻能達(dá)到168 MHz,硬件接口豐富,,并且支持FPU,,處理能力能滿足控制系統(tǒng)需求。相對主處理器,,協(xié)處理器需要處理的內(nèi)容比較簡單,,為了方便開發(fā),選用和主處理器同一系列,、功能稍弱一些的STM32F103C8T6芯片,。
(2)傳感器:主處理器上,角速度計采用ST公司的16位精度傳感器L3GD20,,三軸加速度計和三軸電子羅盤采用LGA-16超小封裝的LSM303D,,氣壓計采用由瑞士MEAS公司推出的MS5611,該模塊包含一個高線性度壓力傳感器和一個超低功耗的24位Σ型AD轉(zhuǎn)換器,,分辨率可達(dá)到10 cm,。為了在主處理器發(fā)生故障時保持最基本的自穩(wěn)模式,協(xié)處理器上采用陀螺儀和加速度計一體的MPU6000傳感器,。上述所有傳感器都具備高速SPI數(shù)字輸出的特性,,與主處理器連接的傳感器可串接在同一SPI總線上,降低了PCB設(shè)計難度,。
(3)無線模塊:無線模塊包括遙控接收模塊和與地面站通信數(shù)傳模塊,。為了方便布線、節(jié)省IO口資源,,遙控接收模塊采用脈沖位置調(diào)制(Pulse Position Modulation,,PPM)形式輸出,只需一根信號線即可傳輸8通道PWM,。無線數(shù)傳采用433 MHz超遠(yuǎn)距離無線通信模塊,,通信距離可達(dá)2 km,,保證了高空飛行時數(shù)據(jù)連接的穩(wěn)定。
2.2 硬件設(shè)計
圖1為系統(tǒng)的硬件結(jié)構(gòu),。由于系統(tǒng)中含有兩個處理器,,為了方便更新程序,將協(xié)處理器的UART1連接至主處理器串口,,這樣可以通過主處理器更新程序,,減少開發(fā)過程中的冗余步驟。連接兩個處理器之間的串口在系統(tǒng)正常運(yùn)行時,,還可以用于數(shù)據(jù)交換,。使用高速串口交換數(shù)據(jù)相對于使用SPI交換數(shù)據(jù),其優(yōu)點(diǎn)是不用像SPI那樣時刻去查詢從設(shè)備是否有數(shù)據(jù)要發(fā)送,,而是只要有數(shù)據(jù)即可立即發(fā)送,,無需額外耗費(fèi)資源輪詢等待,提高了系統(tǒng)效率,。
為了防止電機(jī)在運(yùn)行時產(chǎn)生強(qiáng)電流燒毀處理器,,在PWM輸出與電調(diào)輸入之間采用TI公司的TXS0108電平電壓轉(zhuǎn)換芯片,達(dá)到信號隔離和增強(qiáng)驅(qū)動的作用,,電路如圖2所示。
3 控制系統(tǒng)軟件設(shè)計
3.1 主處理器軟件設(shè)計
主處理器運(yùn)行NuttX實時操作系統(tǒng),,所有功能都通過任務(wù)進(jìn)程實現(xiàn)[4],。主要的進(jìn)程有傳感器數(shù)據(jù)采集、姿態(tài)估算,、姿態(tài)控制,、飛行器狀態(tài)識別與切換、協(xié)處理器控制,、日志記錄,。進(jìn)程間進(jìn)行通信是程序結(jié)構(gòu)的重要部分。為了建立一個快速簡潔的進(jìn)程間通信機(jī)制,,本文引入一種微型對象請求代理(micro Object Request Broker,,uORB)機(jī)制[5],通過推送和訂閱主題的方式進(jìn)行通信,,進(jìn)程不用關(guān)注信息交換的對象,,并且同時可以推送和訂閱多個主題,只需簡單的代碼即可實現(xiàn)進(jìn)程間數(shù)據(jù)的共享,,提高了開發(fā)效率,。
如圖3所示,傳感器數(shù)據(jù)采集進(jìn)程采集的所有傳感器數(shù)據(jù),,姿態(tài)估計進(jìn)程利用傳感器數(shù)據(jù)估算出飛行器當(dāng)前姿態(tài)[6],,協(xié)處理器通信進(jìn)程獲取遙控數(shù)據(jù),狀態(tài)識別進(jìn)程結(jié)合傳感器數(shù)據(jù)、飛行器姿態(tài)和遙控數(shù)據(jù)識別出飛行器當(dāng)前模式,,最后姿態(tài)控制進(jìn)程通過飛行器姿態(tài),、遙控數(shù)據(jù)、飛行器模式計算出當(dāng)前所需的PID控制量[7]并推送至uORB,,協(xié)處理器通信進(jìn)程再將訂閱的PID控制量通過高速串口發(fā)送至協(xié)處理器,。
3.2 協(xié)處理器軟件設(shè)計
如圖4所示,為了保證系統(tǒng)的實時性,,協(xié)處理器的PPM脈沖輸入部分采用中斷方式進(jìn)行捕獲,,與主處理器通信部分采用DMA方式直接填充至PWM匹配輸出寄存器,最大程度地減小CPU的干預(yù),。失聯(lián)識別在定時器20 ms中斷中實現(xiàn),,每次進(jìn)中斷會讀取DMA傳輸計數(shù)器的值并記錄,再與上次的記錄值進(jìn)行比較,,如果兩個值不相等,,則說明數(shù)據(jù)連接正常;相反,,如果連接斷開,,兩個值將會相等,據(jù)此實時地判斷出連接的通斷狀態(tài),。主循環(huán)中只需要判斷通斷標(biāo)志位,,如果檢測到連接斷開,協(xié)處理器則會啟用失效保護(hù)功能:通過SPI總線讀取MPU6000芯片的加速度和角速度數(shù)據(jù),,利用四元數(shù)姿態(tài)融合算法[8]得到姿態(tài)信息,,轉(zhuǎn)換成歐拉角之后,再用PID控制器保持飛行器的水平姿態(tài),,直到與主處理器的連接恢復(fù)正常,,再將電機(jī)控制權(quán)交還給主處理器。用歐拉角表示剛體姿態(tài)方便幾何推導(dǎo),,但是存在萬向節(jié)死鎖,,即當(dāng)剛體的3個萬向節(jié)中兩個的軸發(fā)生重合時,會出現(xiàn)失去一個自由度的情況,。四元數(shù)法則不存在這個問題,,并且運(yùn)算步驟也相對簡單,適合在本文控制系統(tǒng)的協(xié)處理器中運(yùn)用,。
4 實驗結(jié)果及分析
如圖5所示,,利用四旋翼飛行器作為實驗平臺,在室外進(jìn)行飛行試驗后,,得到橫滾,、俯仰和偏航角的響應(yīng)曲線,。將日志導(dǎo)出到MATALB并繪制曲線,從圖6可以看出飛行器的實測值能夠快速,、精確地追蹤設(shè)定值,。在人為軟件復(fù)位主處理器后,飛行器能在空中保持機(jī)身大致水平,,直至主處理器恢復(fù)工作,,保證了系統(tǒng)的安全性。此外,,在NuttShell中輸入”top”指令,,可得到主處理器的資源占用情況。如圖7所示,,主處理器的cpu空閑資源達(dá)到了51.73%,。
實驗結(jié)果表現(xiàn)出系統(tǒng)良好的控制性能,能夠穩(wěn)定地控制飛行器進(jìn)行基本飛行,,在主處理器發(fā)生故障時能夠降低墜機(jī)的風(fēng)險,,減少了因開發(fā)過程中程序不穩(wěn)定帶來的損失和危險,縮短了開發(fā)周期,,增強(qiáng)了安全性能,,并且能滿足各種運(yùn)算及后續(xù)開發(fā)的需求,為多旋翼飛行器控制系統(tǒng)更深入的開發(fā)奠定了基礎(chǔ),。
參考文獻(xiàn)
[1] 岳基隆,,張慶杰,朱華勇.微小型四旋翼無人機(jī)研究進(jìn)展及關(guān)鍵技術(shù)淺析[J].電光與控制,,2010,17(10):46-52.
[2] 王黨利,,寧生科,,馬保吉.基于STM32F10X引導(dǎo)程序?qū)崿F(xiàn)USB在應(yīng)用中編程[J].國外電子測量技術(shù),2010,,29(11):68-70.
[3] 劉曉杰,,趙曉暉,顧海軍,,等.微小型四旋翼無人機(jī)實時嵌入式控制系統(tǒng)設(shè)計與實現(xiàn)[J].電子技術(shù)應(yīng)用,,2009,35(5):35-38.
[4] Gregory Nutt.NuttX operating system user′s manual[EB/OL].(2014-10-4)[2014-11-09].http://www.nuttx.org/ doku.phpid=documentation.
[5] 高嘉陽.嵌入式CORBA的精簡ORB實現(xiàn)[J].計算機(jī)工程,,2004,,30(4):73-75.
[6] 薛亮,苑偉政,,常洪龍,,等.用于微小型飛行器姿態(tài)估計的四元數(shù)擴(kuò)展卡爾曼濾波算法[J].納米技術(shù)與精密工程,,2009,7(2):163-167.
[7] 馮慶端,,裴海龍.串級PID控制在無人機(jī)姿態(tài)控制的應(yīng)用[J].微計算機(jī)信息,,2009,22:9-10.
[8] 張榮輝,,賈宏光,,陳濤,等.基于四元數(shù)法的捷聯(lián)式慣性導(dǎo)航系統(tǒng)的姿態(tài)解算[J].光學(xué)精密工程,,2008,,16(10):1963-1970.