主處理器執行nuttx實時作業系統,所有功能都通過任務程序實現[4]。主要的程序有感測器資料採集、姿態估算、姿態控制、飛行器狀態識別與切換、協處理器控制、日誌記錄。程序間進行通訊是程式結構的重要部分。 也就是說在飛機中就有幾個主要程序控制飛機。每個程序負責些什麼呢。
如圖3所示,
感測器資料採集程序: 採集的所有感測器資料。
姿態估計程序: 利用感測器資料估算出飛行器當前姿態。
協處理器通訊程序: 獲取遙控資料。
狀態識別程序: 結合感測器資料、飛行器姿態和遙控資料識別出飛行器當前模式。
姿態控制程序: 通過飛行器姿態、遙控資料、飛行器模式計算出當前所需的pid控制量並推送至uorb。
協處理器通訊程序 :再將訂閱的pid控制量通過高速串列埠傳送至協處理器。
多個程序進行通訊:
uorb 訂閱主題 ,發布主題。
協處理器和主處理器的關係:
主處理器通訊部分採用dma方式直接填充至pwm匹配輸出暫存器,最大程度地減小cpu的干預。失聯識別在定時器20 ms中斷中實現,每次進中斷會讀取dma傳輸計數器的值並記錄,再與上次的記錄值進行比較,如果兩個值不相等,則說明資料連線正常;相反,如果連線斷開,兩個值將會相等,據此實時地判斷出連線的通斷狀態。主迴圈中只需要判斷通斷標誌位,如果檢測到連線斷開,協處理器則會啟用失效保護功能:通過spi匯流排讀取mpu6000晶元的加速度和角速度資料,利用四元數姿態融合演算法[8]得到姿態資訊,轉換成尤拉角之後,再用pid控制器保持飛行器的水平姿態,直到與主處理器的連線恢復正常,再將電機控制權交還給主處理器。用尤拉角表示剛體姿態方便幾何推導,但是存在萬向節死鎖,即當剛體的3個萬向節中兩個的軸發生重合時,會出現失去乙個自由度的情況。四元數法則不存在這個問題,並且運算步驟也相對簡單,適合在本文控制系統的協處理器中運用 、
nuttx飛控作業系統
nuttx飛控系統 程式設計思路,首先我們不管裡面作業系統是怎麼樣實現。在這個系統中我們學會用api就行了。主處理器執行nuttx實時作業系統,所有功能都通過任務程序實現 4 主要的程序有感測器資料採集 姿態估算 姿態控制 飛行器狀態識別與切換 協處理器控制 日誌記錄。程序間進行通訊是程式結構的重要...
ucosii作業系統下,exit中斷跑飛
硬體 stm32f106vc 作業系統 ucosii 實現功能 按鍵中斷 現象 配置完按鍵 中斷後,進入中斷宕機。原 如下 void exti0 irqhandler void wk up key3 pa0 exti clearitpendingbit exti line0 跑飛如下 void ha...
開源飛控 匿名飛控TI版解析(2)
因為電賽,買來匿名飛控研究一下,感覺相比其他的一下開源飛控,易開發性和穩定性都是比較好的,但就是比較貴 匿名ti版飛控是從32版改過來的,硬體上就換了個晶元,程式裡也有些東西都沒刪乾淨。整體上來說開源程度很高了,自己想改啥就改啥,不過就是光流內部是不開源的。這裡整理裡一下飛控框架,也是學習一下乙個飛...