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