软件架构
PX4 采用分层架构和基于微内核的任务调度机制,核心运行在 NuttX 实时操作系统(RTOS)之上。
核心中间件:uORB
Section titled “核心中间件:uORB”uORB (Micro Object Request Broker) 是 PX4 最核心的消息总线。
- 发布/订阅模式:不同模块(如传感器驱动和控制器)之间不直接调用,而是通过 uORB 异步交换数据。
- 解耦性:这种机制允许开发者轻松替换或增加某个模块(如更换新的 EKF 算法),而无需修改其他代码。
消息协议:MAVLink
Section titled “消息协议:MAVLink”- 外部通信:用于无人机与地面站 (QGC) 或机载电脑 (Offboard) 之间的通信。
- 标准化:保证了不同厂家、不同软件栈之间的互操作性。
飞行栈 (Flight Stack)
Section titled “飞行栈 (Flight Stack)”飞行栈是 PX4 的算法层,主要包括:
- 状态估计器 (Estimator):如 EKF2,融合 IMU、GPS、气压计等数据,计算位置和姿态。
- 控制器 (Controller):处理位置、姿态和速率控制逻辑。
- 混控器 (Mixer):将控制指令转换为具体的电机 PWM 或舵机输出。
源码目录简述
Section titled “源码目录简述”src/drivers: 传感器和硬件外设驱动。src/modules: 核心功能模块(如commander,navigator,ekf2)。msg: 定义 uORB 消息格式。platforms: 适配不同硬件平台的底层代码。