pixhawk飛控架構

2021-07-06 10:11:46 字數 1763 閱讀 9272

pixhawk 學習總結2

pixhawk編譯環境搭建好,接下來就是要看

apm原始碼了。介紹給大家一款非常好用的

程式編輯器軟體source insight

,在windows

下看原始碼是最好不過了。

飛控系統是一套龐大的系統,要理解一整套的流程的話,是要經過一番折騰才行。我的角度是用linux

的分層架構去分析的,接下來就是我看**所理解和整理的飛控架構。

飛控架構分為3

層:飛行控制棧

(主要是姿態的控制)和

hal(

硬體抽象層

)屬於頂層應用,實時作業系統

(nuttx)

和底層驅動屬於底層,還有就是引導系統啟動的

bootloader。

我所負責的是底層和bootloader

,現在就來說說流程吧,從

bootloader

說起。

一.bootloader

原始碼:cpu

啟動過程

1.上電啟動:

extern (vector_table)

1)初始化堆疊指標 .initial_sp_value = &_stack,

2)硬體錯誤為阻塞 .hard_fault = hard_fault_handler,

3)中斷控制器 .irq = 

4)系統的復位入口函式 .reset = reset_handler,

2.入口函式:

entry(reset_handler)

1)定義資料段 .data

和.bss

2)pre_main()(開啟協處理器)

3)main() 

3.main函式:

main(void)

1)board_init()(開發板的初始化)

2)bootloader()(

nuttx

系統的設定)

nuttx

系統)

二.apm的原始碼:

nuttx

系統的啟動

1.bootloader引導進入

.vectors

向量表:

stm32_vectors.s

1)定義堆疊的大小

2)定義

stm32

的中斷向量表

3)入口函式是

entry(__start)

2.入口函式是

entry(__start) 1)

stm32

的配置和初始化 2)

nuttx

系統的入口函式

os_start()

3.系統入口函式

os_start() 1)

nuttx

系統的初始化 2)

nuttx

系統的啟動程序

os_bringup()

4.系統的啟動程序

os_bringup()

1)建立核心程序

2)建立使用者程序

a.建立

init

程序(main_t)config_user_entrypoint

io板 : config_user_entrypoint =user_start

fmu板:config_user_entrypoint = nsh_main

5.io板系統程序入口函式:user_start(沒有使用根檔案系統)

6.fmu板系統程序入口函式:nsh_main

(根檔案系統

binfs)

20150129pixhawk飛控校準

2 測試電機轉向,不需要使用飛控,可以直接通過遙控器設定就行。例如華科爾d10遙控器把接電機的電調的控制線接到遙控器接收頭的3通道 油門控制通道 遙控器設定好以後推遙控器油門就好了,然後電機就會轉了,電機轉向就可以調好了 通過將電調與電機的3條連線線的任意兩根交換 3 pixhawk加速度計校準 將...

飛控軟體架構技術

控系統軟體和控制律 演算法 是核心。早期無人機沒有軟體架構,是通過無線電 rc 控制技術發展起來的,筆者在大學本科上的第一門課叫 自動化導論 記憶深刻,上課開始教授就給出一張圖,乙個典型的閉環控制系統 包含控制目標,控制器,反饋資訊,執行機構 這個也很準備地概括出了早期無人機飛控系統。得益於衛星能力...

PIXHAWK2 4 8飛控如果做雙羅盤校準

從3.3.3韌體開始,飛控支援使用雙羅盤 也就是內建羅盤和外接羅盤同時使用 但由於內建羅盤容易受干擾,加上如果沒有正確校準,容易出現羅盤不同步的錯誤。所以,如果飛控加了gps羅盤,完全可以只使用外接羅盤,因為外接羅盤不容易受干擾,比較穩定!1.gps羅盤和飛控要裝在機架上校準,確保gps的箭頭對向機...