
官方文档明确指出:PX4由飞行控制栈 + 中间件两层组成,所有平台共用同一套代码库,真正做到一次开发,多平台部署。换一种更直观的方式来说,如果把无人机看作一个完整的生命体,那么,传感器就像是它的眼睛和耳朵,电机相当于它的四肢,电池是维持运转的能量来源,PX4则扮演着“大脑”的角色。正是因为有了这套系统,无人机才能理解外部环境,并做出正确的飞行动作。

从整体上看,PX4的系统可以理解为一个由多个模块组成的结构。每一个模块都承担着不同的职责,同时又通过统一的通信机制相互协作。
首先,在最底层的是传感器驱动模块,主要负责与硬件设备进行直接通信,例如 IMU、GPS、磁力计以及气压计等。无人机在飞行过程中需要持续读取这些传感器的数据,例如加速度、角速度以及位置信息,而驱动模块的任务就是将这些原始数据稳定地传递到系统内部。
当传感器数据进入系统后,它们并不会被某一个模块直接使用,而是会通过PX4内部的一套消息机制进行分发。这套机制被称为 uORB。可以把它理解为无人机内部的信息广播系统。不同模块可以在这里发布数据,也可以订阅自己需要的信息。通过这种方式,各个模块之间不需要直接依赖彼此,从而提高了系统的稳定性和扩展性。
在获得传感器数据之后,系统接下来需要解决一个关键问题:无人机现在到底在哪里,以及它的姿态是什么。这一步由状态估计模块完成。PX4使用扩展卡尔曼滤波算法,将来自IMU、GPS、磁力计以及气压计等多个传感器的数据进行融合,从而得到无人机的精确状态,包括位置、速度以及姿态角。这一步就像是无人机的“空间感知系统”,它决定了飞控系统对环境的理解是否准确。
当系统知道自己的状态之后,就可以进入飞行控制阶段。PX4的控制系统采用一种被称为级联控制(Cascaded Control)的结构。在这种结构中,控制过程被分成多个层级:系统首先计算期望的位置,然后进一步计算需要达到的速度,再根据速度得到目标姿态,最后将姿态转换为电机的转速指令。这种逐层控制的方式能够显著提高系统的稳定性,使无人机能够在复杂环境中保持平稳飞行。
在整个架构的最上层模块,是任务与导航系统。这一模块主要负责管理无人机需要执行的任务。例如,当用户在地面站软件中规划了一条航线时,PX4就会按照设定的航点自动完成飞行。系统还可以执行自动起飞、自动降落以及自动返航等任务。通过这一模块,无人机能够从简单的飞行工具,变成一个真正的自动化平台。

硬件包括:
1.飞行控制器(运行PX4飞行程序栈),通常包含内置惯性测量单元(IMU)、罗盘和气压计。
2.电机电调,连接到PWM输出、DroneCAN(允许双向通信,而不是像图中所示的单向通信)或其他总线。
3.传感器(GPS、指南针、距离传感器、气压计、光流计、气压计、ADS-B应答器等),通过I2C、SPI、CAN、UART等连接。
4.摄像头或其他有效载荷,摄像头可以通过PWM输出或MAVLink连接。
5.用于连接地面站计算机/软件的遥测无线电。
6.用于手动控制的遥控控制系统。
图表的左侧显示了软件堆栈,它与图表中的硬件部分大致水平对齐:
1.地面站计算机,通常运行QGroundControl或其他地面站软件,也可能运行MAVSDK或ROS等机器人软件。
2.运行在飞行控制器上的PX4飞行堆栈,包括驱动程序、通信模块、控制器、估算器和其他中间件和系统模块。
与飞控软件ArduPilot相对应,这些乌克兰无人机、巡航导弹上的飞控硬件是与其有着高度兼容、强绑定关系的,比如来自澳大利亚CubePilot公司的Cube“立方体”系列飞控,最新、功能最强大的型号“立方体橙/橙+”(Cube Orange/+)。可以明确的是,在6月18日乌克兰对莫斯科发动自俄乌战争以来规模最大的无人机袭击中使用的,以及随后创造乌对俄纵深打击距离新纪录(3400千米)的远程自杀式无人机FP-1,使用了“立方体橙/橙+”。有理由推测,FP-1的飞控软件可能也是ArduPilot。



