《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 基于NuttX的多旋翼飛行器控制系統(tǒng)設(shè)計
基于NuttX的多旋翼飛行器控制系統(tǒng)設(shè)計
2015年電子技術(shù)應(yīng)用第3期
黃水長1,栗 盼2,孫勝娟1,張永健1,張智攀1
1.河北工程大學 信息與電氣工程學院,河北 邯鄲056038; 2.貴州大學 電氣工程學院,貴州 貴陽550025
摘要: 針對執(zhí)行復(fù)雜任務(wù)的多旋翼飛行器對多任務(wù)和安全性的需求,設(shè)計一種基于NuttX實時操作系統(tǒng)的飛行控制系統(tǒng),并增加失效保護協(xié)處理器,達到減少開發(fā)過程中墜機幾率和提高主處理器任務(wù)容量的目的。實驗表明,此平臺在滿足穩(wěn)定控制飛行的同時,能明顯減小開發(fā)難度,縮短開發(fā)周期,并且給后續(xù)算法開發(fā)保留了充足的運行資源。
中圖分類號: V242
文獻標識碼: A
文章編號: 0258-7998(2015)03-0041-03
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
Abstract: 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.
Key words : multi-rotor uav;NuttX;multitask;fail safe

  

0 引言

  相對于大型無人駕駛飛機(Unmanned Aerial Vehicle,UAV),多旋翼飛行器擁有體積小、成本低、行動敏捷、可懸停等優(yōu)勢,成為許多國家或機構(gòu)的研究熱點,是UAV發(fā)展的主要方向之一。歸功于UAV技術(shù)近幾年的迅速發(fā)展,多旋翼飛行器也從一開始的軍事用途逐漸向商用和民用方向延伸,如今已經(jīng)廣泛用于高空拍攝、軍事偵察、交通監(jiān)測、植物保護、地形勘測等領(lǐng)域[1]。隨著應(yīng)用領(lǐng)域的擴展和深入,工程中對多旋翼飛行器的要求也越來越高,多任務(wù)處理能力和安全性能成為突出的問題。擁有一個簡潔高效、安全穩(wěn)定的開發(fā)平臺顯得至關(guān)重要。針對上述情況,本文提出一種基于NuttX實時操作系統(tǒng)的多旋翼控制系統(tǒng)設(shè)計,并對硬件布局和軟件結(jié)構(gòu)進行詳細的論述。

1 控制系統(tǒng)總體設(shè)計

  1.1 需求分析

  為了達到安全、穩(wěn)定、高效的目的,以下針對多旋翼飛行器的特點,對控制系統(tǒng)提出需求:

  (1)系統(tǒng)在發(fā)生故障導(dǎo)致主處理器復(fù)位時,飛行器應(yīng)保持在空中飛行等待系統(tǒng)復(fù)位,避免墜機造成人身安全和財產(chǎn)損失。

  (2)處理器有較高的運算性能,以滿足多任務(wù)和后續(xù)算法開發(fā)的需求。

  (3)能高速且精確采集各個傳感器的數(shù)據(jù),并提供模擬信號采集接口,以便擴展模擬量傳感器。

  (4)具備與遙控接收機和地面站通信的能力,能識別聯(lián)系中斷的情況,并采取相應(yīng)安全措施。

  (5)擁有8路與主處理器硬件上獨立的PWM輸出,用于兼容旋翼數(shù)量不等的飛行器系統(tǒng)。

  (6)可記錄飛行中的所有姿態(tài)、位置數(shù)據(jù)和遙控操作數(shù)據(jù),存于SD卡中,方便對系統(tǒng)進行調(diào)試。

  (7)為方便開發(fā),系統(tǒng)可通過更改SD卡中文件達到配置系統(tǒng)的目的。

  (8)采用模塊化軟件結(jié)構(gòu),功能可簡單地通過配置文件進行修改,避免頻繁的更新程序。程序可通過USB接口用Bootloader更新[2]。

  (9)預(yù)留外置UART、CAN、SPI、I2C等通信接口,給GPS、數(shù)傳等其他擴展模塊提供數(shù)據(jù)通道,方便后續(xù)應(yīng)用開發(fā)。

  1.2 總體設(shè)計

  多旋翼旋翼飛行器的輸出控制有6個自由度,分別為沿x、y、z坐標軸做旋轉(zhuǎn)和平移動作,其控制都是通過調(diào)整跟旋翼相連的電機轉(zhuǎn)速實現(xiàn)[3],故在實際飛行中,為了達到穩(wěn)定的飛行,電機轉(zhuǎn)速始終是在變化當中。由于電流的變化將引起強烈的電磁干擾,對模擬量傳感器數(shù)據(jù)的采集非常不利。為了提高傳感器數(shù)據(jù)采集的精度,同時兼顧采集速度,本文采用全數(shù)字量SPI接口傳感器。另一方面,為了達到失效保護作用,同時減輕主處理器的負荷,系統(tǒng)額外采用一個協(xié)處理器。

  控制系統(tǒng)對實時性要求較高,同時進行的處理內(nèi)容也比較復(fù)雜,包括各個傳感器數(shù)據(jù)的采集、姿態(tài)估計、姿態(tài)控制、遙控或地面站的命令分析、電機控制、日志記錄等。對于這種任務(wù)比較多的程序結(jié)構(gòu),如果采用普通的前后臺系統(tǒng)結(jié)構(gòu),勢必造成開發(fā)難度大、程序?qū)崟r性弱、系統(tǒng)可維護性差等結(jié)果。因此,本文率先引入功能強大的NuttX實時操作系統(tǒng)。NuttX注重標準兼容和小型封裝,主要遵循ANSI和Posix標準,采用模塊化設(shè)計,完全可搶占式內(nèi)核,并且支持類Unix的Script控制和類Bash的NuttShell控制臺,能為多旋翼飛行器控制系統(tǒng)的開發(fā)提供極大的方便。

2 控制系統(tǒng)硬件設(shè)計

  2.1 硬件選型

  (1)處理器:由于主處理器要負責采集各個傳感器的數(shù)據(jù)進行搬運,并進行姿態(tài)估算和控制,所以至少需具備DMA功能和硬件浮點運算,才能保證控制系統(tǒng)的實時性和預(yù)留充足的資源給后續(xù)開發(fā)。經(jīng)過篩選,本文采用ST公司的32位Cortex-M4內(nèi)核處理器STM32F429VIT6,其最高主頻能達到168 MHz,硬件接口豐富,并且支持FPU,處理能力能滿足控制系統(tǒng)需求。相對主處理器,協(xié)處理器需要處理的內(nèi)容比較簡單,為了方便開發(fā),選用和主處理器同一系列、功能稍弱一些的STM32F103C8T6芯片。

  (2)傳感器:主處理器上,角速度計采用ST公司的16位精度傳感器L3GD20,三軸加速度計和三軸電子羅盤采用LGA-16超小封裝的LSM303D,氣壓計采用由瑞士MEAS公司推出的MS5611,該模塊包含一個高線性度壓力傳感器和一個超低功耗的24位Σ型AD轉(zhuǎn)換器,分辨率可達到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超遠距離無線通信模塊,通信距離可達2 km,保證了高空飛行時數(shù)據(jù)連接的穩(wěn)定。

  2.2 硬件設(shè)計


001.jpg


  圖1為系統(tǒng)的硬件結(jié)構(gòu)。由于系統(tǒng)中含有兩個處理器,為了方便更新程序,將協(xié)處理器的UART1連接至主處理器串口,這樣可以通過主處理器更新程序,減少開發(fā)過程中的冗余步驟。連接兩個處理器之間的串口在系統(tǒng)正常運行時,還可以用于數(shù)據(jù)交換。使用高速串口交換數(shù)據(jù)相對于使用SPI交換數(shù)據(jù),其優(yōu)點是不用像SPI那樣時刻去查詢從設(shè)備是否有數(shù)據(jù)要發(fā)送,而是只要有數(shù)據(jù)即可立即發(fā)送,無需額外耗費資源輪詢等待,提高了系統(tǒng)效率。

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

002.jpg

3 控制系統(tǒng)軟件設(shè)計

  3.1 主處理器軟件設(shè)計

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

003.jpg

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

  3.2 協(xié)處理器軟件設(shè)計


004.jpg


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

4 實驗結(jié)果及分析


005.jpg

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

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

  參考文獻

  [1] 岳基隆,張慶杰,朱華勇.微小型四旋翼無人機研究進展及關(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] 劉曉杰,趙曉暉,顧海軍,等.微小型四旋翼無人機實時嵌入式控制系統(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].計算機工程,2004,30(4):73-75.

  [6] 薛亮,苑偉政,常洪龍,等.用于微小型飛行器姿態(tài)估計的四元數(shù)擴展卡爾曼濾波算法[J].納米技術(shù)與精密工程,2009,7(2):163-167.

  [7] 馮慶端,裴海龍.串級PID控制在無人機姿態(tài)控制的應(yīng)用[J].微計算機信息,2009,22:9-10.

  [8] 張榮輝,賈宏光,陳濤,等.基于四元數(shù)法的捷聯(lián)式慣性導(dǎo)航系統(tǒng)的姿態(tài)解算[J].光學精密工程,2008,16(10):1963-1970.


此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。