Skip to content

软件架构

PX4 采用分层架构和基于微内核的任务调度机制,核心运行在 NuttX 实时操作系统(RTOS)之上。

uORB (Micro Object Request Broker) 是 PX4 最核心的消息总线。

  • 发布/订阅模式:不同模块(如传感器驱动和控制器)之间不直接调用,而是通过 uORB 异步交换数据。
  • 解耦性:这种机制允许开发者轻松替换或增加某个模块(如更换新的 EKF 算法),而无需修改其他代码。
  • 外部通信:用于无人机与地面站 (QGC) 或机载电脑 (Offboard) 之间的通信。
  • 标准化:保证了不同厂家、不同软件栈之间的互操作性。

飞行栈是 PX4 的算法层,主要包括:

  • 状态估计器 (Estimator):如 EKF2,融合 IMU、GPS、气压计等数据,计算位置和姿态。
  • 控制器 (Controller):处理位置、姿态和速率控制逻辑。
  • 混控器 (Mixer):将控制指令转换为具体的电机 PWM 或舵机输出。
  • src/drivers: 传感器和硬件外设驱动。
  • src/modules: 核心功能模块(如 commander, navigator, ekf2)。
  • msg: 定义 uORB 消息格式。
  • platforms: 适配不同硬件平台的底层代码。