第1章(上):无人机软件架构深度解析——PX4与ROS 2如何分工协作?
💡 为什么需要同时学习ROS 2和PX4?
如果你刚刚进入可编程无人机领域,可能会存在这样的疑问:
❓ 我已经会ROS 2了,还需要PX4吗?
❓ PX4不是已经能飞了吗?为什么还要ROS?
❓ 能不能只用ROS写飞控?
这些问题的根源只有一个:没有从系统架构的角度理解无人机软件栈。一句流行的说法是:PX4负责飞得稳,ROS 2负责飞得聪明。这句话方向是对的,但并不够精确。要真正理解两者的关系,我们需要把它们拆开来看。
🔧 PX4是什么?无人机的实时神经系统
PX4的本质定位
PX4是一个运行在飞控硬件上的实时无人机操作系统(Flight Stack)。它并不是一个应用程序,而是一套为无人机飞行安全与实时控制而设计的嵌入式软件系统。
PX4的整体设计遵循三个核心原则:✅强实时性:关键控制与估计算法必须在严格的时间约束下运行✅闭环控制:所有飞行行为均基于传感器反馈形成闭环✅安全优先:任何异常都优先保证飞行器可控或安全降级
从算法层面看,PX4的飞控端主要由三大核心模块构成:
1️⃣ 状态估计算法(Estimator)
状态估计算法的职责是回答一个最基本、也最关键的问题:无人机当前处于什么状态?它需要持续估计无人机的位置、速度、姿态、角速度等信息,为后续所有控制算法提供对世界的认知。
在实际飞行中,无人机无法直接测量完整状态,只能获得来自各类传感器的、带噪声且不完整的观测数据,例如IMU、GPS、磁力计、气压计,或者来自视觉与外部定位系统的信息。
在PX4中,状态估计的核心功能主要由EKF2(扩展卡尔曼滤波器)完成。它输出的并不是原始传感器数据,而是已经融合、对齐坐标系、补偿偏置后的状态量,包括姿态(roll/pitch/yaw)、角速度、位置、线速度以及各类传感器偏置。
2️⃣ 控制算法(Controller)
控制算法负责让无人机朝目标状态运动。回答的问题是:我该如何调整姿态和推力,才能到达目标状态?
PX4采用多层级闭环控制结构,典型包括:
📍 位置控制器:输入期望位置,输出速度期望
🚀 速度控制器:输入期望速度,输出姿态调整量
🔄 姿态控制器:输入期望姿态,输出角速度指令
⚡ 角速度控制器:输入期望角速度,输出电机控制量
在PX4中,大量控制器采用PID(比例-积分-微分)控制结构,其特点是:计算量小、实时性强、工程成熟度高、易于调参。
3️⃣ 混控算法(Mixer)
在控制算法输出之后,系统还面临一个关键问题:如何把抽象的力和力矩指令,转换成具体的电机转速?这正是Mixer(混控器)的职责。
Mixer的输入通常是总推力、滚转力矩(Roll)、俯仰力矩(Pitch)、偏航力矩(Yaw),输出则是各个电机的控制指令(PWM/转速)。
🧠 ROS 2是什么?无人机的高层智能系统
ROS 2的本质定位
ROS 2是一个分布式机器人软件中间件(Middleware + Framework),其核心关键词是消息通信、模块解耦、分布式系统和高层决策。
如果说PX4更像是无人机的脊髓和反射系统,那么ROS 2更像是负责感知、思考和决策的大脑皮层。
ROS 2在无人机中通常做什么?
在ROS 2 + PX4架构中,ROS 2通常运行在机载计算机(x86/ARM),主要负责:
👁️ 视觉/激光感知:目标检测、SLAM、点云处理
🗺️ 路径规划:全局规划、局部规划、轨迹优化
🎯 任务决策:状态机、行为树、任务调度
🤝 多机协同:分布式通信、编队控制
🌐 外部系统通信:与地面站、云端服务交互
ROS 2运行的是可以稍微慢一点,但必须足够聪明的代码。
🔗 ROS 2 + PX4:不是竞争,而是分工
典型系统结构
在工程实践中,ROS 2与PX4并不是二选一的关系,而是严格分工、相互配合的协同架构。一个典型的系统可以被理解为三层结构:
|
|
|
|
|
|
二者如何通信?

在micro-ROS + XRCE-DDS架构中,PX4作为uXRCE-DDS Client运行于资源受限的飞控,而ROS 2系统运行uXRCE-DDS Agent,两者通过串口(UART)、UDP或TCP进行通信。
|
1️⃣ PX4内部数据准备:uORB框架管理传感器数据与控制指令 |
|
2️⃣ 序列化:CDR编码将uORB消息序列化为二进制字节流 |
|
3️⃣ 传输:通过UART、UDP或TCP发送至外部设备 |
|
4️⃣ 接收端处理:Agent解码并发布到ROS 2 Topic |
|
5️⃣ 双向通信:ROS 2节点发布控制指令,反向流程同样成立 |
这种分层设计充分利用了PX4在嵌入式实时性方面的优势,以及ROS 2在复杂算法与生态集成上的强大能力。
📝 本章小结
通过本章学习,你应该建立以下认知:
✅ PX4是实时飞控系统,负责状态估计、控制律计算与安全保护
✅ ROS 2是高层智能框架,负责感知、规划、决策等智能任务
✅ 二者通过XRCE-DDS协议高效通信,形成协同架构
✅ /fmu/out输出飞控状态,/fmu/in接收控制指令
🎯下一章预告:《第1章(下)从零搭建PX4+ROS 2开发环境——完整工具链指南》我们将详细介绍Ubuntu 22.04 + ROS 2 Humble + Gazebo的完整工具链搭建流程,让你快速拥有可用的开发环境!
联系我们:

夜雨聆风