news 2026/8/9 22:16:16

PX4 调参与日志分析(基于 PX4 v1.13~v1.16 的工程实践)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
PX4 调参与日志分析(基于 PX4 v1.13~v1.16 的工程实践)

版本声明

本文内容基于 PX4 Autopilot 当前主线参数体系整理,适用于PX4 v1.13~v1.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、角速度环参数(最先调)

Roll:

MC_ROLLRATE_P MC_ROLLRATE_I MC_ROLLRATE_D

Pitch:

MC_PITCHRATE_P MC_PITCHRATE_I MC_PITCHRATE_D

Yaw:

MC_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

正常工程中:

默认值通常已经比较接近合理值

大多数问题先看 Rate


3、高度控制参数

这是很多旧教程最容易写错的地方

当前版本:

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 偏小


高频毛刺

先查振动,不要先改 PID


3、调姿态环

看:

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 调参真正核心不是“改参数”,而是:

理解控制链,再用日志验证控制器是否按预期工作

飞机飞稳不代表控制正确

真正成熟的判断标准是:

目标值与实际值是否在控制器各层都能闭合
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/14 15:31:52

项目中用了Spring的这11个高端用法,项目经理狂点赞

1.自定义拦截器 spring mvc拦截器根spring拦截器相比,它里面能够获取HttpServletRequest和HttpServletResponse等web对象实例。 spring mvc拦截器的顶层接口是:HandlerInterceptor,包含三个方法: preHandle 目标方法执行前执行…

作者头像 李华
网站建设 2026/7/14 15:31:53

【ABAP】ALV 指定单元格染色

在 ALV GRID 中可以修改想强调的单元格染色。但是这相比强调行染色功能更注重系统资源,因此注重速度的程序中要考虑一下是否使用此功能。在 ALV 报表开发中,为关键数据单元格设置醒目的颜色标识(如异常数值标红),能大幅…

作者头像 李华
网站建设 2026/7/14 15:31:50

中断很难?看完这篇就懂了

1.内核,总线,外设这三个概念是理解中断的必要前提,一个芯片具有内核、总线、外设这三个结构内核:芯片里的内核有很多架构,如ARM架构内核,它包含了许多核心部件,是整个芯片的大脑总线&#xff1a…

作者头像 李华
网站建设 2026/7/14 15:31:55

PyTorch保姆级安装教程

PyTorch保姆级安装教程 文章目录PyTorch保姆级安装教程一、准备环境1 安装 Python 环境(推荐 Anaconda)2 安装 VSCode二、创建 PyTorch 环境(推荐)激活环境三、安装 PyTorch四、验证 PyTorch 是否安装成功五、VSCode 配置 PyTorch…

作者头像 李华