认识PX4参数系统:参数分类、文件结构与QGC修改

PX4的参数系统,说白了就是飞控的"基因库"。你调参的过程,就是在改写这个基因库,让飞机飞得更稳、更准、更听话。我刚开始接触PX4时,面对几百个参数也是一头雾水——后来发现,只要理清分类和结构,这事儿就没那么玄乎。

核心认知:PX4参数是飞控行为的"旋钮",每个参数都对应一个具体的控制逻辑或传感器处理环节。调参不是瞎改,而是有方向、有依据的微调。

2.1 参数分类:四大模块

PX4的参数按功能分成四大类。我个人习惯把它们比作"感知-决策-执行"链条上的不同环节。

分类 前缀 作用 典型参数举例
传感器类 SENS_、IMU_、MAG_ 原始数据采集与预处理 SENS_DPRES_OFF(气压计偏移)、IMU_GYRO_CUTOFF(陀螺仪滤波)
姿态类 ATT_、MC_、FW_ 姿态估计与控制 ATT_W_ACC(加速度计权重)、MC_ROLL_P(横滚P增益)
位置类 LPE_、EKF2_、GPS_ 位置估计与导航 EKF2_GPS_CHECK(GPS健康检查)、LPE_ACC_XY(水平加速度噪声)
导航类 NAV_、MIS_、COM_ 任务规划与行为逻辑 NAV_ACC_RAD(航点到达半径)、COM_DISARM_LAND(降落自动上锁时间)

你想想看,传感器参数决定了飞控"看"得清不清楚;姿态参数决定了它"稳"不稳;位置参数决定了它"认"得准不准;导航参数决定了它"走"得对不对。这四个层次缺一不可。

我的经验:调参顺序建议从传感器开始,再到姿态,然后是位置,最后才是导航。跳过传感器校准直接调PID,就像戴着歪眼镜调瞄准镜——越调越偏。

2.2 参数文件结构

PX4的参数存储在文件系统中。每次飞控启动时,它会从SD卡或内部Flash加载参数。我遇到过不少新手,改完参数一断电就丢了——其实就是没搞懂参数文件的存储机制。

参数文件主要分两种:

  • 默认参数文件:位于固件源码的 /ROMFS/px4fmu_common/init.d/ 目录下,以 .params 结尾。每次刷固件时,这些参数会被写入飞控。
  • 用户参数文件:存储在SD卡的 /etc/extras/ 目录下,文件名为 parameters(无后缀)。用户通过QGC修改的参数都保存在这里。

加载优先级是这样的:

  1. 飞控启动 → 加载默认参数
  2. 检查SD卡 → 如果存在用户参数文件,覆盖默认参数
  3. 如果用户参数文件损坏或不存在,使用默认参数

避坑指南:我曾经在野外调试时,SD卡松动导致参数文件读取失败,飞控直接恢复出厂设置,飞机差点失控。后来我养成了一个习惯——每次调完关键参数,都用QGC的"导出参数"功能备份一份到电脑上。

参数文件的内部格式很简单,每行一个参数,用逗号分隔参数名和值:

# 参数文件示例(.params 或 parameters)
MC_ROLL_P, 0.15
MC_ROLL_RATE_P, 0.05
EKF2_GPS_CHECK, 1
SENS_DPRES_OFF, 0.0
NAV_ACC_RAD, 0.5

嗯,这里要注意:参数名是大小写敏感的,而且不能有空格。如果你手动编辑参数文件,一个空格或换行符错误,整行参数都会被忽略。

2.3 通过QGC修改参数

QGC(QGroundControl)是调参最常用的工具。我90%的参数修改都在QGC上完成,只有批量修改时才用脚本。

操作步骤很简单:

  1. 连接飞控(USB或数传)
  2. 点击顶部"参数"图标(齿轮形状)
  3. 在搜索框输入参数名或关键词
  4. 双击参数值,输入新值,回车确认
  5. 点击"应用"按钮(或等待自动保存)

QGC的参数界面有几个实用功能,我重点说一下:

  • 搜索过滤:输入 MC_ 可以只看多旋翼参数,输入 EKF2 只看EKF2相关参数。这个功能在参数多的时候特别有用。
  • 参数分组:QGC左侧有"全部"、"传感器"、"姿态"、"位置"、"导航"等分组标签,对应我们刚才讲的四大分类。
  • 参数说明:每个参数都有中文或英文说明,包括取值范围、默认值、单位。我建议你养成看说明的习惯——很多参数的名字看着像,实际作用完全不同。
  • 导出/导入:在参数界面右上角,可以导出所有参数为 .params 文件,也可以导入之前备份的参数文件。这个功能在换飞控板或刷固件后特别实用。

关键操作:修改参数后,QGC会自动保存到飞控。但如果你通过数传修改参数,建议修改完成后点击"应用"按钮,然后等待3-5秒再断开连接,确保参数写入完成。

2.4 参数系统整体架构

为了让你更直观地理解参数系统的全貌,我画了一张架构图。它展示了参数从存储到加载,再到影响飞控行为的完整链路。

PX4参数系统架构图 默认参数文件 /ROMFS/px4fmu_common/init.d/*.params 用户参数文件 /etc/extras/parameters(SD卡) 参数加载器(Parameter Loader) 启动时加载,用户参数覆盖默认参数 运行时参数表(RAM) 传感器类 SENS_ / IMU_ / MAG_ 姿态类 ATT_ / MC_ / FW_ 位置类 EKF2_ / LPE_ / GPS_ 导航类 NAV_ / MIS_ / COM_ 飞控行为:传感器处理 → 姿态控制 → 位置估计 → 导航决策 用户参数优先级高于默认参数,同名参数以用户参数为准 QGC修改参数 → 写入用户参数文件 → 下次启动生效(部分参数支持热加载)

从这张图你可以看到,参数从文件到飞控行为,经历了"加载→存储→分类→应用"四个阶段。每个阶段都有对应的工具和操作方式。

我的建议:刚开始调参时,不要一次性改太多参数。每次只改1-2个,试飞验证后再改下一组。我曾经一次改了5个参数,结果飞机乱飞,根本不知道是哪个参数的问题——这种教训一次就够了。