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的箭頭對向機...