?

基于NuttX的多旋翼飛行器控制系統設計*

2015-02-23 10:52黃水長孫勝娟張永健張智攀
電子技術應用 2015年3期
關鍵詞:旋翼進程飛行器

黃水長,栗 盼,孫勝娟,張永健,張智攀

(1.河北工程大學 信息與電氣工程學院,河北 邯鄲056038;2.貴州大學 電氣工程學院,貴州 貴陽550025)

基于NuttX的多旋翼飛行器控制系統設計*

黃水長1,栗 盼2,孫勝娟1,張永健1,張智攀1

(1.河北工程大學 信息與電氣工程學院,河北 邯鄲056038;2.貴州大學 電氣工程學院,貴州 貴陽550025)

針對執行復雜任務的多旋翼飛行器對多任務和安全性的需求,設計一種基于NuttX實時操作系統的飛行控制系統,并增加失效保護協處理器,達到減少開發過程中墜機幾率和提高主處理器任務容量的目的。實驗表明,此平臺在滿足穩定控制飛行的同時,能明顯減小開發難度,縮短開發周期,并且給后續算法開發保留了充足的運行資源。

多旋翼飛行器;NuttX;多任務;失效保護

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那樣時刻去查詢從設備是否有數據要發送,而是只要有數據即可立即發送,無需額外耗費資源輪詢等待,提高了系統效率。

圖1 硬件系統結構圖

為了防止電機在運行時產生強電流燒毀處理器,在PWM輸出與電調輸入之間采用TI公司的TXS0108電平電壓轉換芯片,達到信號隔離和增強驅動的作用,電路如圖2所示。

圖2 PWM輸出隔離電路

3 控制系統軟件設計

3.1 主處理器軟件設計

主處理器運行NuttX實時操作系統,所有功能都通過任務進程實現[4]。主要的進程有傳感器數據采集、姿態估算、姿態控制、飛行器狀態識別與切換、協處理器控制、日志記錄。進程間進行通信是程序結構的重要部分。為了建立一個快速簡潔的進程間通信機制,本文引入一種微型對象請求代理(micro Object Request Broker,uORB)機制[5],通過推送和訂閱主題的方式進行通信,進程不用關注信息交換的對象,并且同時可以推送和訂閱多個主題,只需簡單的代碼即可實現進程間數據的共享,提高了開發效率。

如圖3所示,傳感器數據采集進程采集的所有傳感器數據,姿態估計進程利用傳感器數據估算出飛行器當前姿態[6],協處理器通信進程獲取遙控數據,狀態識別進程結合傳感器數據、飛行器姿態和遙控數據識別出飛行器當前模式,最后姿態控制進程通過飛行器姿態、遙控數據、飛行器模式計算出當前所需的 PID控制量[7]并推送至uORB,協處理器通信進程再將訂閱的PID控制量通過高速串口發送至協處理器。

圖3 主處理器軟件結構圖

3.2 協處理器軟件設計

如圖4所示,為了保證系統的實時性,協處理器的PPM脈沖輸入部分采用中斷方式進行捕獲,與主處理器通信部分采用DMA方式直接填充至PWM匹配輸出寄存器,最大程度地減小CPU的干預。失聯識別在定時器20 ms中斷中實現,每次進中斷會讀取DMA傳輸計數器的值并記錄,再與上次的記錄值進行比較,如果兩個值不相等,則說明數據連接正常;相反,如果連接斷開,兩個值將會相等,據此實時地判斷出連接的通斷狀態。主循環中只需要判斷通斷標志位,如果檢測到連接斷開,協處理器則會啟用失效保護功能:通過SPI總線讀取MPU6000芯片的加速度和角速度數據,利用四元數姿態融合算法[8]得到姿態信息,轉換成歐拉角之后,再用 PID控制器保持飛行器的水平姿態,直到與主處理器的連接恢復正常,再將電機控制權交還給主處理器。用歐拉角表示剛體姿態方便幾何推導,但是存在萬向節死鎖,即當剛體的3個萬向節中兩個的軸發生重合時,會出現失去一個自由度的情況。四元數法則不存在這個問題,并且運算步驟也相對簡單,適合在本文控制系統的協處理器中運用。

圖4 協處理器軟件流程圖

4 實驗結果及分析

如圖5所示,利用四旋翼飛行器作為實驗平臺,在室外進行飛行試驗后,得到橫滾、俯仰和偏航角的響應曲線。將日志導出到MATALB并繪制曲線,從圖6可以看出飛行器的實測值能夠快速、精確地追蹤設定值。在人為軟件復位主處理器后,飛行器能在空中保持機身大致水平,直至主處理器恢復工作,保證了系統的安全性。此外,在NuttShell中輸入”top”指令,可得到主處理器的資源占用情況。如圖7所示,主處理器的cpu空閑資源達到了51.73%。

圖5 實驗平臺

圖6 飛行器姿態角響應圖

實驗結果表現出系統良好的控制性能,能夠穩定地控制飛行器進行基本飛行,在主處理器發生故障時能夠降低墜機的風險,減少了因開發過程中程序不穩定帶來的損失和危險,縮短了開發周期,增強了安全性能,并且能滿足各種運算及后續開發的需求,為多旋翼飛行器控制系統更深入的開發奠定了基礎。

NuttX-based control system design for multi-rotor unmaned aerial vehicle

Huang Shuichang1,Li Pan2,Sun Shengjuan1,Zhang Yongjian1,Zhang Zhipan1
(1.School of Information and Electrical Engineering,Hebei University of Engineering,Handan 056038,China;2.School of Electrical Engineering,Guizhou University,Guiyang 550025,China)

According to the requirements of multi-rotor unmanned aerial vehicle for multitasking and secutiry,this paper presents a kind of flight control system adding a failsafe coprocessor based on NuttX real-time operation system,to reduce the probability of crash risk and enhance the capacity of task of the main processor.Experimental results show that this platform can meet the flight with great stability,significantly reduce the development effort and shorten the development cycle.It retains adequate resources for the subsequent algorithm development also.

multi-rotor uav;NuttX;multitask;fail safe

V242

:A

:0258-7998(2015)03-0041-03

10.16157/j.issn.0258-7998.2015.03.009

國家自然科學基金資助項目 (41373101)

猜你喜歡
旋翼進程飛行器
高超聲速飛行器
改進型自抗擾四旋翼無人機控制系統設計與實現
大載重長航時油動多旋翼無人機
債券市場對外開放的進程與展望
改革開放進程中的國際收支統計
基于STM32的四旋翼飛行器的設計
復雜飛行器的容錯控制
四旋翼無人機動態面控制
神秘的飛行器
社會進程中的新聞學探尋
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合