版本声明本文内容基于 PX4 Autopilot 当前主线参数体系整理适用于PX4 v1.13v1.16需要注意的是旧版v1.11 / v1.12中部分参数仍保留_ACC后缀部分日志 topic 在新版本中已迁移到新的 uORB 命名体系启用Control Allocation控制分配后执行器输出 topic 与旧版不同例如旧版MPC_Z_VEL_P_ACC actuator_outputs当前主流版本MPC_Z_VEL_P actuator_motors因此如果直接参考旧教程经常会出现参数搜不到、日志字段对不上、Flight Review 曲线名称不一致一、PX4 调参前必须先理解控制链很多人调参时一上来就改 PID但 PX4 的控制器不是单层结构而是串级控制完整链路位置控制 Position Controller ↓ 速度控制 Velocity Controller ↓ 姿态控制 Attitude Controller ↓ 角速度控制 Rate Controller ↓ Control Allocation / Mixer ↓ 电机输出这意味着任何外层异常往往根源都在内层例如如果角速度环跟踪不好姿态一定不准定点一定漂高度控制也会被间接影响所以官方推荐的调参顺序始终是Rate → Attitude → Velocity → Position这个顺序不能反二、PX4 当前最核心的参数是哪几组1、角速度环参数最先调RollMC_ROLLRATE_P MC_ROLLRATE_I MC_ROLLRATE_DPitchMC_PITCHRATE_P MC_PITCHRATE_I MC_PITCHRATE_DYawMC_YAWRATE_P MC_YAWRATE_I MC_YAWRATE_D这是最底层控制器直接作用于vehicle_angular_velocity控制目标让实际角速度跟踪期望角速度P 项决定响应力度P 偏小飞机发软响应慢手感拖P 偏大高频抖动电机声音尖锐I 项负责稳态误差I 偏小风中慢慢偏移I 偏大回正后拖尾D 项负责抑制变化趋势D 偏小动作停不住D 偏大电机温升明显高频噪声增加2、姿态环参数姿态环参数较少MC_ROLL_P MC_PITCH_P MC_YAW_P作用把姿态误差转换成角速度目标也就是attitude error → rate setpoint正常工程中默认值通常已经比较接近合理值大多数问题先看 Rate3、高度控制参数这是很多旧教程最容易写错的地方当前版本MPC_Z_P MPC_Z_VEL_P MPC_Z_VEL_I MPC_Z_VEL_D注意旧版_ACC后缀已经不作为主流命名控制关系高度误差 → 垂直速度目标 → 推力控制MPC_Z_P决定高度误差转速度目标的力度大拉升积极但容易弹跳小响应慢MPC_Z_VEL_P控制垂直速度响应大时容易出现悬停上下轻弹MPC_Z_VEL_I负责长期误差修正小缓慢漂高漂低MPC_Z_VEL_D决定收尾刹车能力不足时拉升后停不住4、当前版本水平速度控制参数当前主流MPC_XY_P MPC_XY_VEL_P MPC_XY_VEL_I MPC_XY_VEL_D控制关系位置误差 → 水平速度目标 → 姿态目标刹车长通常MPC_XY_VEL_P 偏小定点慢漂先别急着改位置参数优先确认Rate 是否稳定EKF 是否健康三、调参的正确工程顺序1、确认悬停油门看参数MPC_THR_HOVER合理范围0.3 0.6如果悬停已经接近 0.7说明动力余量不足这时调 PID 效果有限2、调角速度环核心日志vehicle_rates_setpoint vehicle_angular_velocity这是当前 PX4 最核心的调参依据正常状态实际曲线紧贴目标曲线滞后明显通常P 偏小超调通常P 偏大或 D 偏小高频毛刺先查振动不要先改 PID3、调姿态环看vehicle_attitude_setpoint vehicle_attitude如果姿态响应慢再看姿态环4、最后调位置与高度因为外环表现很容易被内环误导所以应该确认内环稳定后再调外环5、PX4 当前版本日志分析Flight Review 实战推荐工具Flight Review支持.ulg日志上传后最先看以下几组topic四、当前版本最重要的日志 topic按工程优先级1、Rate 控制分析必须先看vehicle_rates_setpoint vehicle_angular_velocity为什么先看它因为这是最底层控制闭环这里不对上层全部不可信2、姿态控制分析vehicle_attitude_setpoint vehicle_attitude看姿态是否存在系统性滞后3、电机输出当前推荐看actuator_motors如果某一路长期接近上限说明控制余量不足或电机接近饱和4、控制器原始输出比电机输出更早一级看actuator_controls_0表示roll / pitch / yaw / thrust这是姿态控制器直接输出5、高度控制分析看vehicle_local_position.z trajectory_setpoint.z如果目标平稳实际上下波动再看vertical velocity再判断是参数问题动力问题气压扰动6、EKF 健康状态很多人忽略看estimator_status重点关注vel_test_ratio pos_test_ratio hgt_test_ratio mag_test_ratio如果长期 1说明估计不健康这时调 PID 没意义7、振动分析决定 D 项能否成立看sensor_combined振动高时常见表现高度跳D 项异常电机输出毛刺五、当前版本最常见误区错误一定点漂就改 MPC_XY很多时候根因是Rate 环未闭合错误二高度跳就加 D可能真正原因是气压计受振动影响错误三照搬别人参数不同机架惯量完全不同尤其大型机P 一般更保守六、工程中真正有效的调参方法每次只改一项例如MC_ROLLRATE_P 增加 5%然后重新下载飞日志对比vehicle_rates_setpoint vehicle_angular_velocity只有这样才能知道参数变化带来的真实影响七、结论PX4 调参真正核心不是“改参数”而是理解控制链再用日志验证控制器是否按预期工作飞机飞稳不代表控制正确真正成熟的判断标准是目标值与实际值是否在控制器各层都能闭合
PX4 调参与日志分析(基于 PX4 v1.13~v1.16 的工程实践)
版本声明本文内容基于 PX4 Autopilot 当前主线参数体系整理适用于PX4 v1.13v1.16需要注意的是旧版v1.11 / v1.12中部分参数仍保留_ACC后缀部分日志 topic 在新版本中已迁移到新的 uORB 命名体系启用Control Allocation控制分配后执行器输出 topic 与旧版不同例如旧版MPC_Z_VEL_P_ACC actuator_outputs当前主流版本MPC_Z_VEL_P actuator_motors因此如果直接参考旧教程经常会出现参数搜不到、日志字段对不上、Flight Review 曲线名称不一致一、PX4 调参前必须先理解控制链很多人调参时一上来就改 PID但 PX4 的控制器不是单层结构而是串级控制完整链路位置控制 Position Controller ↓ 速度控制 Velocity Controller ↓ 姿态控制 Attitude Controller ↓ 角速度控制 Rate Controller ↓ Control Allocation / Mixer ↓ 电机输出这意味着任何外层异常往往根源都在内层例如如果角速度环跟踪不好姿态一定不准定点一定漂高度控制也会被间接影响所以官方推荐的调参顺序始终是Rate → Attitude → Velocity → Position这个顺序不能反二、PX4 当前最核心的参数是哪几组1、角速度环参数最先调RollMC_ROLLRATE_P MC_ROLLRATE_I MC_ROLLRATE_DPitchMC_PITCHRATE_P MC_PITCHRATE_I MC_PITCHRATE_DYawMC_YAWRATE_P MC_YAWRATE_I MC_YAWRATE_D这是最底层控制器直接作用于vehicle_angular_velocity控制目标让实际角速度跟踪期望角速度P 项决定响应力度P 偏小飞机发软响应慢手感拖P 偏大高频抖动电机声音尖锐I 项负责稳态误差I 偏小风中慢慢偏移I 偏大回正后拖尾D 项负责抑制变化趋势D 偏小动作停不住D 偏大电机温升明显高频噪声增加2、姿态环参数姿态环参数较少MC_ROLL_P MC_PITCH_P MC_YAW_P作用把姿态误差转换成角速度目标也就是attitude error → rate setpoint正常工程中默认值通常已经比较接近合理值大多数问题先看 Rate3、高度控制参数这是很多旧教程最容易写错的地方当前版本MPC_Z_P MPC_Z_VEL_P MPC_Z_VEL_I MPC_Z_VEL_D注意旧版_ACC后缀已经不作为主流命名控制关系高度误差 → 垂直速度目标 → 推力控制MPC_Z_P决定高度误差转速度目标的力度大拉升积极但容易弹跳小响应慢MPC_Z_VEL_P控制垂直速度响应大时容易出现悬停上下轻弹MPC_Z_VEL_I负责长期误差修正小缓慢漂高漂低MPC_Z_VEL_D决定收尾刹车能力不足时拉升后停不住4、当前版本水平速度控制参数当前主流MPC_XY_P MPC_XY_VEL_P MPC_XY_VEL_I MPC_XY_VEL_D控制关系位置误差 → 水平速度目标 → 姿态目标刹车长通常MPC_XY_VEL_P 偏小定点慢漂先别急着改位置参数优先确认Rate 是否稳定EKF 是否健康三、调参的正确工程顺序1、确认悬停油门看参数MPC_THR_HOVER合理范围0.3 0.6如果悬停已经接近 0.7说明动力余量不足这时调 PID 效果有限2、调角速度环核心日志vehicle_rates_setpoint vehicle_angular_velocity这是当前 PX4 最核心的调参依据正常状态实际曲线紧贴目标曲线滞后明显通常P 偏小超调通常P 偏大或 D 偏小高频毛刺先查振动不要先改 PID3、调姿态环看vehicle_attitude_setpoint vehicle_attitude如果姿态响应慢再看姿态环4、最后调位置与高度因为外环表现很容易被内环误导所以应该确认内环稳定后再调外环5、PX4 当前版本日志分析Flight Review 实战推荐工具Flight Review支持.ulg日志上传后最先看以下几组topic四、当前版本最重要的日志 topic按工程优先级1、Rate 控制分析必须先看vehicle_rates_setpoint vehicle_angular_velocity为什么先看它因为这是最底层控制闭环这里不对上层全部不可信2、姿态控制分析vehicle_attitude_setpoint vehicle_attitude看姿态是否存在系统性滞后3、电机输出当前推荐看actuator_motors如果某一路长期接近上限说明控制余量不足或电机接近饱和4、控制器原始输出比电机输出更早一级看actuator_controls_0表示roll / pitch / yaw / thrust这是姿态控制器直接输出5、高度控制分析看vehicle_local_position.z trajectory_setpoint.z如果目标平稳实际上下波动再看vertical velocity再判断是参数问题动力问题气压扰动6、EKF 健康状态很多人忽略看estimator_status重点关注vel_test_ratio pos_test_ratio hgt_test_ratio mag_test_ratio如果长期 1说明估计不健康这时调 PID 没意义7、振动分析决定 D 项能否成立看sensor_combined振动高时常见表现高度跳D 项异常电机输出毛刺五、当前版本最常见误区错误一定点漂就改 MPC_XY很多时候根因是Rate 环未闭合错误二高度跳就加 D可能真正原因是气压计受振动影响错误三照搬别人参数不同机架惯量完全不同尤其大型机P 一般更保守六、工程中真正有效的调参方法每次只改一项例如MC_ROLLRATE_P 增加 5%然后重新下载飞日志对比vehicle_rates_setpoint vehicle_angular_velocity只有这样才能知道参数变化带来的真实影响七、结论PX4 调参真正核心不是“改参数”而是理解控制链再用日志验证控制器是否按预期工作飞机飞稳不代表控制正确真正成熟的判断标准是目标值与实际值是否在控制器各层都能闭合