PX4系統架構
由兩個層組成:一是飛行控制棧(flight stack)
二是中間件(middleware)
flight stack:集成了各種自主無人機的制導、導航以及控制算法。
支持的機型包括固定翼,多旋翼以及垂直起降飛行器,
算法包括姿態估計算法和姿態控制算法。
middleware:主要由內置傳感器的驅動和基於發佈-訂閱(publish-subscribe)的中間件組成,
其中發佈-訂閱中間件用於將這些傳感器與飛行控制運行的應用程序進行通訊連接。
飛控系統結構分層
飛控數據流
PX4代碼結構
Firmware/src/modules
【內部包含算法應用部分的代碼實現,包含包含姿態結算、姿態控制、配置結算、位置控制、落地檢測、sensor 初始化、系統配置、uORB、commander等】
modules中的 代碼模塊 && 各模塊功能
-
attitude_estimator_q
使用mahony 的互補濾波算法實現姿態解算 -
commander
實現整個控制模式代碼
如起飛前的sensor的校準算法、安全開關使能、飛行模式切換、pixhawk硬件上的顯示定義等 -
land_detector
飛行過程中使用land模塊檢測降落以及着陸狀態
併發布”vehicle_land_detected“的topic,內部會監測z軸速度和加速度等狀態參數。
考慮了使用不同機型(多旋翼、固定翼、垂直起降等)時機體狀體、推力、運動不同(每種機型都有其各種的算法) -
local_position_estimator
LPE算法實現位置解算,類似簡單的EKF,一個預測一個修正 -
mavlink
和地面站的通訊協議,結合地面站QGC源代碼配合修改
或僅僅調用mavlink內部的API接口,即可通過無線信號將所需要的數據顯示在地面站QGC上
(該方法是一種實時監測”目標數據“的方法) -
mc_att_control
姿態控制的算法實現,姿態的內外環PID控制,外環控制角度,內環控制角速度 -
mc_pos_control
位置控制的算法實現,位置的內外環PID控制,外環控制速度,內環控制加速度 -
sensors
各種傳感器的相關參數
(包含數據流中的異常檢測、傳感器校準、陀螺儀加速度計參數) -
systemlib
系統所需的參數列表。 -
uORB
進程間的通信,系統中的數據流
emm …