调参前的准备工作:硬件平台确认与软件环境搭建

调参这事儿,说白了就是让飞控和你的飞机「对上话」。我见过太多人一上来就调 PID,结果炸机了才发现传感器没校准,或者日志根本没打开。嗯,咱们先把准备工作做扎实,后面才能少走弯路。

核心原则:硬件确认是底线,软件环境是工具,数据记录是眼睛。这三样缺一样,调参就是盲人摸象。

硬件平台确认

拿到一架飞机,别急着连地面站。先花十分钟把硬件过一遍。我个人习惯按这个顺序来:

  1. 传感器布局检查——IMU 的位置、方向、减震措施。我在项目中遇到过一台四轴,飞起来总是莫名其妙地偏航,查了两天发现是飞控板装歪了 3 度。
  2. 执行器确认——电调协议(PWM / DShot / OneShot)、电机转向、螺旋桨匹配。你想想看,电机反转了还调什么参数?
  3. 供电稳定性——BEC 输出、电压纹波、电流峰值。飞控掉电一次,所有日志全白费。
检查项 关键点 常见坑
IMU 安装 减震棉、方向标记、与机架刚性连接 减震太软导致高频振动耦合
磁力计 远离大电流线、电机、电调 我曾经把磁力计装在电池旁边,罗盘数据全是乱的
GPS/RTK 天线朝上、无遮挡、接地良好 GPS 天线被碳纤维机架遮挡,搜星数永远不到 8 颗
电调协议 与飞控固件版本匹配、PWM 频率设置 DShot 600 配老款 BLHeli_S 电调,丢信号

避坑指南:我曾经在项目验收前发现飞机自稳模式抖得厉害,查到最后是飞控的减震棉被压变形了。硬件问题会伪装成参数问题,别被它骗了。

软件环境搭建

软件环境这块,主要看你用什么生态。PX4、ArduPilot、ROS 三套我都用过,各有脾气。我建议你根据团队积累选一个,别换来换去。

PX4 环境

  • 固件编译:make px4_fmu-v5_default,注意交叉编译链版本
  • 地面站:QGroundControl 最新稳定版
  • 参数管理:通过 QGC 在线修改,或直接改 params 文件

ArduPilot 环境

  • 固件编译:./waf configure --board Pixhawk4,然后 ./waf copter
  • 地面站:Mission Planner 或 QGC
  • 参数管理:Mission Planner 的「全部参数表」最直观

ROS 环境

  • 推荐使用 ROS Noetic + Ubuntu 20.04,或者 ROS2 Humble
  • MAVROS 或 PX4-ROS2-bridge 做通信
  • 我习惯用 roslaunch 同时启动飞控桥接和日志录制

个人经验:ROS 环境最怕依赖冲突。我每次新项目都会用 Docker 封装一套干净的环境,省得调参调到一半发现库版本不对。

数据记录与回放工具

调参没有日志,就像开车没有仪表盘。你根本不知道飞机刚才经历了什么。我强烈建议每次试飞都记录数据,哪怕只是在地面测试。

ULog(PX4 原生格式)

PX4 默认把日志存在 SD 卡里,文件后缀是 .ulg。你可以用 ulog2csv 转成 CSV,或者直接用 flightplot 可视化。

# 查看日志基本信息
ulog_info flight.ulg

# 提取所有数据为 CSV
ulog2csv flight.ulg

# 实时查看日志(调试用)
ulog_stream flight.ulg

ROS Bag(ROS 生态标准)

如果你用 ROS,rosbag 是标配。我一般会录 /mavros/imu/data、/mavros/local_position/pose、/mavros/rc/out 这几个 topic。

# 录制所有 topic
rosbag record -a -o flight_test

# 回放并指定速率
rosbag play flight_test.bag -r 0.5

# 查看 bag 信息
rosbag info flight_test.bag
工具 适用场景 优点 缺点
ULog PX4 原生、嵌入式环境 轻量、直接、不依赖 ROS 可视化工具较少
ROS Bag ROS 生态、多传感器融合 可回放、可重处理、工具链丰富 文件大、依赖 ROS 环境
CSV 导出 快速分析、Excel 处理 通用、可脚本处理 丢失时间戳精度

避坑指南:我曾经试飞时忘了插 SD 卡,飞了 10 分钟回来发现日志是空的。从那以后,我每次起飞前都会在 QGC 里确认「Logging: ON」。养成习惯,别靠记性。

本章知识体系

下面这张图把调参前的准备工作串起来了。你可以把它贴在工位旁边,每次调参前扫一眼,确保没漏项。

调参前准备工作框架图 调参前准备工作框架 硬件平台确认 软件环境搭建 数据记录与回放 传感器布局 执行器确认 供电稳定性 PX4 环境 ArduPilot ROS 环境 ULog ROS Bag CSV 导出 硬件确认是底线 → 软件环境是工具 → 数据记录是眼睛 三者缺一不可,调参前务必逐项确认

我的习惯:每次调参前,我会在笔记本上画一个简单的 checklist,照着上面三项逐条打勾。别嫌麻烦,这个习惯帮我省了至少十次炸机。