1. PX4飞控四旋翼无人机调参实战指南
作为一名无人机飞控工程师,我参与过多个工业级四旋翼项目开发,深知PX4飞控调参是决定飞行性能的关键环节。本文将分享一套经过实战验证的调参方法论,特别针对移动平台跟踪场景(如车载无人机)的PID参数整定技巧。
重要提示:调参前务必确保硬件状态正常,包括电机/电调校准、IMU校准、遥控器通道映射等基础工作已完成。本文假设你已具备PX4基础开发环境配置能力。
1.1 调参前的系统检查清单
在开始调参前,必须完成以下系统自检,避免将硬件问题误判为参数问题:
-
坐标系一致性验证
- 确认飞控(FCU)与机载计算机(如ROS节点)使用相同的欧拉角旋转顺序(通常为RxRyRz)
- 检查
landing_yaw参数是否使用平台航向修正值(通过PlatformYawcorrect()函数获得)
-
单位系统统一
- 角度参数统一使用弧度制(rad)
- 距离参数统一使用米(m)
- 速度参数统一使用米/秒(m/s)
-
高度测量系统验证
- 雷达高度计需包含姿态投影补偿
- 建议采用中值滤波+低通滤波的组合滤波方案
- 通过静止测试验证高度测量误差应小于5cm
-
通信链路健康检查
- 确保
/all_sensor_data话题以100Hz稳定发布 - 确认
/control/ready状态为true时才允许起飞 - 检查MAVROS与飞控的通信延迟(应小于20ms)
- 确保
1.2 数据记录与实时监控方案
推荐使用以下rosbag记录关键话题,便于后期分析:
bash复制rosbag record -O flight.bag \
/control/report \
/mavros/local_position/pose \
/mavros/setpoint_velocity/cmd_vel \
/all_sensor_data \
/drone_true_heihght_pub
实时监控建议使用rqt_plot观察以下关键指标:
- 速度指令:
/control/report/cmd_vel/twist/linear/{x,y,z} - 雷达实测高度:
/control/report/radar_height - 窗口状态:
/control/report/in_tight_window - 下降许可:
/control/report/descent_allowed - 健康计数器:
/control/report/ok_cnt,/control/report/bad_cnt - 飞行阶段:
/control/report/phase_name - 高度目标:
/control/report/target_correct_local_height
2. 参数整定全流程详解
2.1 速度前馈与限幅调节
核心思想:先确保速度指令平滑合理,再考虑位置误差修正。这是大多数新手容易忽视的关键步骤。
-
最大速度限制(MAX_SPEED)
- 初始值:4.5-5.5 m/s
- 调整依据:观察平台实际机动能力,若出现持续饱和则适当提高
- 典型问题:设得过低会导致跟踪滞后,过高可能引发超调
-
斜坡限制(SLEW_X/Y/Z)
- 推荐初值:SLEW_X=2.0, SLEW_Y=2.0, SLEW_Z=1.5
- 调整策略:
- 出现Z轴抖动时,优先减小SLEW_Z(可降至1.2)
- XY平面指令不连续时,适当降低SLEW_X/Y
- 物理意义:该参数决定加速度限制,单位m/s²
实战技巧:在rqt_plot中观察cmd_vel的导数,理想情况下加速度曲线应平滑无阶跃。
2.2 速度前馈增益调节
核心作用:让无人机提前响应平台运动,减轻PID负担。
-
前馈增益(SPEED_KP_X/Y)
- 初始值:1.0(X/Y轴),0(Z轴)
- 微调范围:0.9-1.1
- 典型现象与对策:
- 跟踪滞后 → 适当增大增益
- 超前振荡 → 减小增益或加强斜坡限制
-
高度通道特殊性
- 通常保持SPEED_KP_Z=0,因高度控制更依赖位置环
- 特殊场景:对于快速升降平台,可尝试0.2-0.3的值
2.3 平面PID参数整定
调参口诀:"先P后D,最后I;小步调整,多观察"
-
比例项(kp_x/y)
- 初始值:0.9
- 调整逻辑:
- 欠跟(持续滞后)→ 增至1.0-1.2
- 过冲(振荡)→ 降至0.7-0.9
- 典型误区:盲目增大kp导致系统不稳定
-
微分项(kd_x/y)
- 初始值:0.03
- 增量步长:每次+0.01
- 异常处理:
- 出现高频噪声 → 增大TIME_STEP或减小kd
- 响应迟钝 → 适当增加kd并观察
-
积分项(ki_x/y)
- 使用原则:仅在稳态误差明显时启用
- 典型值:0.002-0.01
- 风险提示:过大易引发积分饱和
2.4 微分滤波时间常数(TIME_STEP)
物理意义:决定微分项的有效带宽,值越大滤波越强。
- 初始值:0.015s
- 调整策略:
- 速度指令抖动 → 增至0.02-0.03
- 目标阶跃响应迟钝 → 适当减小(不低于0.01)
- 与kd的配合:增大TIME_STEP相当于降低有效kd值
2.5 高度通道特殊处理
高度控制因涉及起飞降落,需特别谨慎:
-
PID初值建议
- kp_z=0.6
- kd_z=0.02
- ki_z=0.008
- SLEW_Z=1.5
-
典型问题处理
- 低空抽动:
- 减小DESC_V1/V2
- 降低SLEW_Z至1.2
- 必要时减小kd_z至0.015
- 高度跟踪滞后:
- 增加kp_z(步长0.1)
- 稳态后添加少量ki_z
- 低空抽动:
2.6 航向控制参数
航向控制有其特殊性,需注意:
-
初始参数
- kp_yaw=1.2
- kd_yaw=0.12
- ki_yaw=0
- max_yaw_speed=0.6 rad/s
-
调整策略
- 对准慢 → 增大kp_yaw至1.4
- 过冲 → 减小kp_yaw或增大kd_yaw至0.15
- 抖动 → 降低max_yaw_speed至0.5或增大TIME_STEP
3. 高级控制策略优化
3.1 窗口与阶段管理
确保状态转换稳定性的关键参数:
-
容差阈值
- TARGET_TOLERANCE01(粗窗口):0.3-0.4m
- TARGET_TOLERANCE02(精窗口):0.10-0.15m
-
滞回计数
- ENTER_N=10(进入精窗口所需连续帧数)
- EXIT_N=5(退出精窗口所需连续帧数)
经验法则:若频繁进出DESCEND阶段,优先增大TARGET_TOLERANCE02而非调整计数阈值
3.2 分级下降策略
实现平稳降落的速度曲线设计:
-
高度分段
- H1=2.5m(快速下降段)
- H2=1.0m(过渡段)
- H3=0.4m(精细调整段)
-
对应速度
- V1=-1.2m/s(H1段速度)
- V2=-0.7m/s(H2段速度)
- V3=-0.3m/s(H3段速度)
- V4=-0.15m/s(触地前速度)
调整技巧:
- 低空冲击大 → 减小V3/V4绝对值
- 中高空跟踪慢 → 增大V1/V2绝对值
3.3 传感器滤波参数
-
雷达高度滤波(k_alpha)
- 典型值:0.2-0.3
- 抖动时减小,响应迟钝时增大
-
目标高度过渡(trans_tau)
- 范围:0.25-0.4s
- 反映高度指令的平滑程度
4. 现场调参速查手册
| 现象 | 优先参数 | 调整方向 | 备选参数 |
|---|---|---|---|
| 跟车滞后 | SPEED_KP_X/Y | 增大 | MAX_SPEED+ |
| 超前摆动 | SPEED_KP_X/Y | 减小 | kp_x/y-, kd_x/y+, SLEW_X/Y+ |
| XY平面抖动 | TIME_STEP | 增大 | kd_x/y-, SLEW_X/Y- |
| 航向响应慢 | kp_yaw | 增大 | max_yaw_speed+ |
| 航向过冲 | kp_yaw | 减小 | kd_yaw+, TIME_STEP+, max_yaw_speed- |
| 低空抽动 | DESC_V2/V3/V4 | 减小绝对值 | SLEW_Z-, kd_z-, trans_tau+ |
| 高度跟踪慢 | kp_z | 增大 | ki_z+(微量), SLEW_Z+ |
| 频繁进出下降 | TARGET_TOLERANCE02 | 增大 | ENTER_N+, EXIT_N+ |
| 触地速度大 | DESC_V4 | 减小绝对值 | DISARM_RADAR_THRESH+, LANDING_COMPLETE_HEIGHT+ |
5. 安全调参流程建议
-
分阶段验证
- 先在空旷场地测试10-15km/h绕圈
- 平面跟踪稳定后再测试ALIGN_YAW
- 最后验证DESCEND逻辑
-
速度渐进测试
- 从低速(20km/h)开始
- 逐步提升至目标速度(30km/h)
- 每个速度点至少观察30秒
-
安全高度保留
- 测试阶段保持最小安全高度3m
- 降落测试先模拟,后实降
6. 资深工程师的调参心得
-
参数耦合现象:调整XY参数可能影响Z轴表现,建议每次飞行后分析rosbag全数据
-
环境适应性:同一组参数在不同风速下表现可能差异显著,建议建立参数与风速的对应关系表
-
硬件影响:发现难以解释的抖动时,检查电机温度(过热会导致响应特性变化)
-
非对称调参:对于X/Y轴负载不对称的机型,可考虑分别调参
-
温度补偿:在极端温度环境下(<-10℃或>40℃),PID参数可能需要5-10%的补偿调整
最后分享一个容易被忽视的细节:在控制循环中加入1-3cm的微小死区(DB_POS)能有效抑制定点抖动,特别是在GPS精度受限的场景下。这个技巧在我们去年的极地科考项目中发挥了关键作用。