2、PX4模型基础:了解PX4中的模型定义(机体、电机、舵面、传感器模型)及其在仿真和实机中的作用
PX4 自动驾驶仪的核心能力之一,是将物理世界中千差万别的无人机平台抽象为一组可计算、可配置、可仿真的数学模型。无论是多旋翼、固定翼还是垂直起降(VTOL)飞行器,PX4 都通过统一的模型定义来描述其气动特性、动力输出、舵面响应和传感器布局。理解这些模型不仅是进行软件在环(SITL)仿真和硬件在环(HITL)测试的前提,更是后续进行模型包升级、参数调优和版本回滚时判断“差异来源”的基础。本章将系统拆解 PX4 中机体、电机、舵面与传感器模型的定义方式,并阐明它们在仿真与实机运行中的不同作用路径。
上图展示了 PX4 模型体系的三个层次:模型定义层是理论抽象,仿真映射层将理论模型转换为仿真引擎可识别的描述文件,实机映射层则通过参数校准和混控器配置将模型与物理硬件对齐。在后续的模型包升级中,任何一层的变更都会影响飞行性能,因此必须理解各层之间的对应关系。
2.1 机体模型:从几何构型到惯性张量
核心原理
机体模型(Airframe)定义了飞行器的基本物理属性,包括几何尺寸、质量分布、重心位置以及惯性张量。在 PX4 中,机体模型通过 *.airframe 文件声明,该文件位于 ROMFS/px4fmu_common/init.d/airframes/ 目录下。一个典型的四旋翼机体模型包含以下关键参数:
- MAV_TYPE:飞行器类型标识(如 2 表示四旋翼,3 表示固定翼)。
- MAV_AUTOPILOT:自动驾驶仪类型,通常为 8(PX4)。
- COM_ARM_EKF_ABORT:EKF 异常时是否允许解锁。
- 惯性参数:通过
IMU_*和EKF2_*参数间接体现,但真正的惯性张量在仿真模型中定义。
在仿真环境中,机体模型由 SDF(Simulation Description Format)或 URDF 文件描述,包含碰撞体积、视觉网格和惯性属性。例如,四旋翼的 SDF 文件会定义每个机臂的长度、电机安装位置、电池重量分布等。这些参数直接影响仿真中的动力学响应。
判断方法
判断机体模型是否匹配当前飞行平台,可以通过以下步骤:
- 检查
sysid和compid是否与地面站配置一致。 - 在 QGroundControl 的“机体”界面查看当前加载的 airframe 文件。
- 对比实际飞行器的轴距、电机布局与 airframe 文件中的几何定义。
- 使用
param show命令检查EKF2_IMU_POS_X/Y/Z等参数是否与传感器安装位置一致。
param compare 工具对比升级前后的参数差异。许多“升级后飞行变飘”的问题,根源在于惯性张量被重置为默认值,而非实际测量值。
案例拆解:四旋翼轴距变更后的模型更新
某团队将 450mm 轴距的四旋翼改装为 550mm 轴距,以搭载更重的云台相机。改装后,飞行器在姿态模式下出现低频振荡。分析过程如下:
- 初始现象:悬停时飞机前后摇摆,周期约 2 秒,幅度逐渐增大。
- 关键数据:日志分析显示,EKF 估计的角速度噪声增大,且控制回路的相位裕度下降。
- 分析判断:轴距增加导致转动惯量增大,但 airframe 文件仍使用原 450mm 的惯性参数,导致控制器增益相对过高。
- 操作步骤:在 SDF 文件中将机臂长度从 0.225m 改为 0.275m,并重新计算转动惯量(Ixx/Iyy 约增加 30%),同时将
IMU_ACCEL_CUTOFF从 80Hz 调整为 60Hz 以匹配新的结构频率。 - 结果对比:修改后,振荡消失,姿态跟踪误差从 3.2° 降至 1.1°。
- 风险与代价:手动修改 SDF 文件需要重新编译仿真环境,且如果实际重量分布与计算不符,仍可能出现偏差。
2.2 电机模型:混控器与动力响应
核心原理
电机模型在 PX4 中通过混控器(Mixer)和执行器输出两部分实现。混控器将控制量(如滚转、俯仰、油门)映射到各个电机的转速指令。PX4 默认使用 multirotor_mixer.cpp 中的几何矩阵,该矩阵基于电机位置和旋转方向计算。电机本身的动态特性(如响应延迟、最大转速、推力系数)则在仿真模型中定义。
在实机中,电机模型体现为 PWM_MAIN_* 参数和电调(ESC)的校准曲线。PX4 通过 ACTUATOR_OUTPUT 模块输出 1000-2000μs 的 PWM 信号,电调将其转换为电机电压。电机转速与油门的关系通常近似为二次曲线,但实际存在死区和非线性段。
操作流程:电机模型校准
- 在 QGroundControl 中进入“电源”设置,执行电调校准(ESC Calibration)。
- 将
PWM_MAIN_MIN设置为电机启动的最小油门值(通常 1000-1100μs)。 - 将
PWM_MAIN_MAX设置为最大油门值(通常 1900-2000μs)。 - 通过
ACTUATOR_TEST逐个测试电机转向和转速响应。 - 在仿真中,检查
motor_speed话题是否与混控器输出成线性关系。
常见误区
- 误区一:认为仿真中的电机模型与实机完全一致。实际上,仿真默认使用理想化的电机响应(时间常数约 0.01s),而实机电机通常有 0.05-0.1s 的延迟。
- 误区二:忽略电池电压对电机推力的影响。在仿真中,电池通常被建模为恒定电压源,而实机中随着放电,最大推力会下降约 20%。
2.3 舵面模型:固定翼与 VTOL 的控制面
核心原理
舵面模型(Control Surface)用于固定翼和 VTOL 飞行器,定义升降舵、方向舵、副翼和襟翼的偏转范围、气动效率及作动器速度。在 PX4 中,舵面通过 control_surface 混控器映射,每个舵面由一个 PWM 通道控制。仿真模型中的舵面气动力通常使用简化升力线理论计算,而实机则依赖舵机的位置反馈。
舵面模型的关键参数包括:
| 参数名 | 含义 | 典型值(固定翼) |
|---|---|---|
| CA_SERVO_MIN | 舵面最小偏转角(PWM) | 1000μs(对应 -30°) |
| CA_SERVO_MAX | 舵面最大偏转角(PWM) | 2000μs(对应 +30°) |
| CA_SERVO_TRIM | 舵面中立点 | 1500μs |
| FW_AIRSPD_MIN | 最小空速(气动效率保证) | 12 m/s |
判断方法
判断舵面模型是否正确,可以通过以下方式:
- 在仿真中观察舵面偏转是否与遥控器输入方向一致。
- 使用
actuator_controls话题检查控制量是否在合理范围内。 - 在实机中,通过舵面测试模式(QGC 的“执行器”页面)手动驱动舵面,检查机械行程是否与参数一致。
实战场景:VTOL 过渡飞行中的舵面调度
某垂直起降固定翼在从多旋翼模式切换到固定翼模式时,出现俯仰震荡。经排查,发现过渡过程中舵面混控器切换逻辑异常:在过渡阶段,多旋翼电机仍输出较大升力,而固定翼舵面已开始响应,导致气动力与推力矢量叠加产生非预期力矩。解决方案是调整 VTOL_TRANS_MIN_T(最小过渡时间)和 VTOL_TRANS_PIT_DUR(俯仰过渡时间),确保舵面在空速达到安全值后才完全接管控制。
2.4 传感器模型:IMU、GPS 与气压计
核心原理
传感器模型定义了 IMU(加速度计、陀螺仪)、GPS、气压计和磁力计的安装位置、噪声特性、采样频率和故障模式。在仿真中,传感器模型由 Gazebo 插件生成,例如 libgazebo_imu_plugin.so 会模拟加速度计和陀螺仪的噪声、偏置和温漂。PX4 的 EKF2 模块通过 EKF2_IMU_POS_X/Y/Z 参数补偿传感器安装位置与重心的偏差。
在实机中,传感器模型体现为硬件规格和校准参数。例如,加速度计的三轴比例因子和偏置通过 CAL_ACC0_XOFFS 等参数存储。传感器模型升级通常涉及噪声参数的调整,以匹配新的硬件版本。
操作流程:传感器模型验证
- 在仿真中,通过
listener sensor_combined查看 IMU 数据,检查噪声水平是否在预期范围内。 - 对比仿真与实机的
vehicle_attitude估计值,确认 EKF 收敛时间一致。 - 在实机中,执行“传感器校准”向导,确保加速度计、陀螺仪和磁力计的偏置在允许范围内。
- 检查
EKF2_GPS_CHECK参数,确认 GPS 故障检测逻辑是否启用。
常见误区与复盘
- 误区一:忽略传感器安装位置。如果 IMU 安装偏离重心 5cm,在高速旋转时会产生明显的离心加速度误差,导致 EKF 估计发散。
- 误区二:在模型包升级后未重新校准传感器。PX4 升级可能重置
CAL_*参数,导致传感器数据异常。 - 复盘经验:某团队在升级 PX4 v1.13 至 v1.14 后,发现 GPS 定位精度下降。排查发现新版本默认启用了
EKF2_GPS_POS_X的自动估计,而旧版本未启用。通过手动设置该参数为实际安装位置,问题解决。
2.5 模型在仿真与实机中的协同作用
核心原理
PX4 的模型体系设计遵循“一次定义,多处使用”的原则。机体、电机、舵面和传感器模型在仿真中用于生成逼真的物理反馈,在实机中则通过参数校准和混控器配置实现等效行为。模型包升级的本质,是更新这些定义文件以适配新的硬件或改进控制性能。
在仿真中,模型文件(SDF/URDF)与 PX4 固件通过 MAVLink 通信,仿真引擎计算物理响应,PX4 运行控制算法。在实机中,物理世界本身充当“仿真引擎”,PX4 通过传感器读取状态,通过执行器输出控制信号。两者的桥梁是混控器和参数系统。
对比表格:仿真模型与实机模型的差异
| 维度 | 仿真模型 | 实机模型 |
|---|---|---|
| 机体惯性 | SDF 中定义的精确惯性张量 | 通过 IMU_* 和 EKF2_* 间接估计 |
| 电机响应 | 理想二阶系统,无温漂 | 存在死区、温漂和电池电压影响 |
| 舵面效率 | 线性气动系数 | 非线性、气流分离、机械间隙 |
| 传感器噪声 | 高斯白噪声 + 固定偏置 | 有色噪声、振动耦合、温度漂移 |
总结复盘
理解 PX4 模型基础是进行模型包升级和版本回滚的前提。升级时,应重点关注 airframe 文件、混控器几何矩阵和传感器校准参数是否被重置。回滚时,除了恢复固件版本,还需检查参数文件是否完整。建议在每次升级前,使用 param export 备份所有参数,并记录当前 airframe 和混控器文件的哈希值。这样,在出现问题时可以快速定位是模型定义变更还是参数漂移导致的异常。