nuttx飛控操作系統


NuttX飛控系統
程序設計思路,首先我們不管里面操作系統是怎么樣實現。在這個系統中我們學會用API就行了。
 
主處理器運行NuttX實時操作系統,所有功能都通過任務進程實現[4]。主要的進程有傳感器數據采集、姿態估算、姿態控制、飛行器狀態識別與切換、協處理器控制、日志記錄。進程間進行通信是程序結構的重要部分。  也就是說在飛機中就有幾個主要進程控制飛機。每個進程負責些什么呢。
如圖3所示,
傳感器數據采集進程: 采集的所有傳感器數據。
姿態估計進程: 利用傳感器數據估算出飛行器當前姿態。
協處理器通信進程: 獲取遙控數據。
狀態識別進程: 結合傳感器數據、飛行器姿態和遙控數據識別出飛行器當前模式。
姿態控制進程: 通過飛行器姿態、遙控數據、飛行器模式計算出當前所需的PID控制量並推送至uORB。
協處理器通信進程 :再將訂閱的PID控制量通過高速串口發送至協處理器。
 
多個進程進行通信: uORB 訂閱主題 ,發布主題。
 
協處理器和主處理器的關系:
 
主處理器通信部分采用DMA方式直接填充至PWM匹配輸出寄存器,最大程度地減小CPU的干預。失聯識別在定時器20 ms中斷中實現,每次進中斷會讀取DMA傳輸計數器的值並記錄,再與上次的記錄值進行比較,如果兩個值不相等,則說明數據連接正常;相反,如果連接斷開,兩個值將會相等,據此實時地判斷出連接的通斷狀態。主循環中只需要判斷通斷標志位,如果檢測到連接斷開,協處理器則會啟用失效保護功能:通過SPI總線讀取MPU6000芯片的加速度和角速度數據,利用四元數姿態融合算法[8]得到姿態信息,轉換成歐拉角之后,再用PID控制器保持飛行器的水平姿態,直到與主處理器的連接恢復正常,再將電機控制權交還給主處理器。用歐拉角表示剛體姿態方便幾何推導,但是存在萬向節死鎖,即當剛體的3個萬向節中兩個的軸發生重合時,會出現失去一個自由度的情況。四元數法則不存在這個問題,並且運算步驟也相對簡單,適合在本文控制系統的協處理器中運用
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM