PX4:【系统架构】

PX4系统架构

由两个层组成:一是飞行控制栈(flight stack)
二是中间件(middleware)

flight stack:集成了各种自主无人机的制导、导航以及控制算法。
支持的机型包括固定翼,多旋翼以及垂直起降飞行器,
算法包括姿态估计算法和姿态控制算法。

middleware:主要由内置传感器的驱动和基于发布-订阅(publish-subscribe)的中间件组成,
其中发布-订阅中间件用于将这些传感器与飞行控制运行的应用程序进行通讯连接。

飞控系统结构分层

PX4:【系统架构】

飞控数据流PX4:【系统架构】

PX4代码结构

PX4:【系统架构】
Firmware/src/modules
【内部包含算法应用部分的代码实现,包含包含姿态结算、姿态控制、配置结算、位置控制、落地检测、sensor 初始化、系统配置、uORB、commander等】
modules中的 代码模块 && 各模块功能

  1. attitude_estimator_q
    使用mahony 的互补滤波算法实现姿态解算

  2. commander
    实现整个控制模式代码
    如起飞前的sensor的校准算法、安全开关使能、飞行模式切换、pixhawk硬件上的显示定义等

  3. land_detector
    飞行过程中使用land模块检测降落以及着陆状态
    并发布”vehicle_land_detected“的topic,内部会监测z轴速度和加速度等状态参数。
    考虑了使用不同机型(多旋翼、固定翼、垂直起降等)时机体状体、推力、运动不同(每种机型都有其各种的算法)

  4. local_position_estimator
    LPE算法实现位置解算,类似简单的EKF,一个预测一个修正

  5. mavlink
    和地面站的通讯协议,结合地面站QGC源代码配合修改
    或仅仅调用mavlink内部的API接口,即可通过无线信号将所需要的数据显示在地面站QGC上
    (该方法是一种实时监测”目标数据“的方法)

  6. mc_att_control
    姿态控制的算法实现,姿态的内外环PID控制,外环控制角度,内环控制角速度

  7. mc_pos_control
    位置控制的算法实现,位置的内外环PID控制,外环控制速度,内环控制加速度

  8. sensors
    各种传感器的相关参数
    (包含数据流中的异常检测、传感器校准、陀螺仪加速度计参数)

  9. systemlib
    系统所需的参数列表。

  10. uORB
    进程间的通信,系统中的数据流

emm …