PX4 罗盘校准完全指南:从 QGroundControl 完整校准到大型车辆快速校准

发布时间:2026/9/23 16:09:19
PX4 罗盘校准完全指南:从 QGroundControl 完整校准到大型车辆快速校准
PX4 罗盘校准完全指南从 QGroundControl 完整校准到大型车辆快速校准【免费下载链接】PX4-AutopilotPX4 Autopilot Software项目地址: https://gitcode.com/gh_mirrors/px/PX4-Autopilot本指南以 PX4-Autopilot 官方配置文档 docs/en/config/compass.md 为骨架系统讲解罗盘磁力计校准的全部流程为什么需要校准、三类校准方式的适用场景与操作步骤、何时需要重新校准以及如何通过参数启停罗盘与进行调试。结合 mag_calibration.cpp 与 sensor_params_mag.yaml 等源码实现帮助开发者与飞手完成一次准确、可复现的罗盘校准。概述为什么要校准罗盘罗盘校准用于校准并配置所有接入的 磁力计。在QGroundControl的引导下你需要在若干设定姿态下摆放飞行器并绕指定轴旋转飞行器。校准过程会同时完成校准所有磁力计自动检测外部罗盘的安装方向默认启用见参数 SENS_MAG_AUTOROT若存在外部磁力计则自动禁用内部磁力计内部磁力计主要用于外部磁力计的自动旋转检测。如果 罗盘安装角度 是非标准角度需要在校准前 手动设置罗盘方向。首次组装飞行器时必须校准罗盘如果飞行器曾暴露在极强的磁场中或在磁场特性异常的区域使用则需要 重新校准。校准不良的典型症状多旋翼悬停时绕圈、toilet bowling以不断增大的半径螺旋漂移通常保持高度最终导致飞丢以及试图直线飞行时偏离航线。QGroundControl还会报错mag sensors inconsistent。校准类型对比PX4 提供三种罗盘校准方式按飞机体积与操作难度选择类型适用场景补偿内容备注完整校准首次安装飞控或飞机配置发生重大变化硬铁与软铁效应为每个轴估计偏移量offset与比例因子scale精度最高首选局部快速校准日常飞行前例行检查、更换载荷后、或罗盘玫瑰方向不准仅估计偏移量补偿硬铁效应类似智能手机的八字校准大型车辆校准飞机过大或过重无法完成完整校准仅估计偏移量补偿硬铁效应需要 GNSS基于世界地磁模型WMM完整校准Complete Calibration前置条件开始校准前请注意选择远离大型金属物体或磁场的地点。金属不一定显而易见避免在办公桌常含金属横梁上或车辆旁校准。即使站在配筋分布不均的混凝土板上校准也可能受影响。尽量通过数传电台连接而非 USB——USB 可能造成显著的磁干扰。若使用外部罗盘或 GPS/罗盘一体模块请确保其 安装 位置尽量远离其他电子设备以减小磁干扰并处于受支持的安装方向。校准步骤启动QGroundControl并连接飞行器。选择Q 图标 Vehicle Setup Sensors侧边栏打开Sensor Setup。点击Compass传感器按钮见 选择界面截图。此时应已设置好 自驾仪方向若未设置也可在此设置。点击OK开始校准。将飞行器放到红色未完成显示的姿态中并保持静止。当提示出现姿态图标变为黄色后绕指定轴双向旋转飞行器当前姿态校准完成后对应图标变为绿色见 校准过程截图。对所有姿态重复上述校准过程。所有姿态校准完成后QGroundControl会显示Calibration complete所有姿态图标变绿进度条填满即可继续校准下一个传感器。从源码看完整校准由commander模块中的 do_mag_calibration 与 mag_calibrate_all 驱动通过 mag_calibration_worker 在每个姿态采集数据最终由 src/lib/sensor_calibration/Magnetometer.cpp 完成椭球拟合估计各轴偏移与比例因子。校准侧面数由参数SENS_MAG_SIDES控制见下文参数细节默认 63 即六面校准。局部快速校准Partial Quick Calibration该方式与智能手机上常见的八字校准类似手持飞行器在各轴方向随机做部分旋转。通常每个方向做 2~3 次约 30° 的摆动即可。等待航向估计稳定并确认罗盘玫瑰指向正确方向可能需要数秒。要点该类型校准没有开始/停止操作——算法在飞行器解锁disarmed状态下持续运行。校准结果立即应用于数据无需重启但仅在飞行器解锁后才会保存到校准参数中若在校准与关机之间没有进行解锁/锁定流程校准结果会丢失。步骤 1 中部分旋转的幅度与速度会影响校准质量按上述建议操作通常足够。该算法由mag_calibrate_all的两面校准路径实现SENS_MAG_SIDES34为两面校准只估计偏移量、保持比例因子不变mag_calibration_test.cpp 中generate2SidesMagData展示了仅采集两个正交平面数据时的数据生成方式印证了该方式的数学前提——初始仍需一次六面校准提供比例因子。大型车辆校准Large Vehicle Calibration该校准利用飞行器姿态与位置的已知信息结合世界地磁模型WMM来校准硬铁偏差专为无法进行全轴旋转的大型或重型车辆设计。校准接受可选的航向参数 允许指定飞行器当前的真实航向。这意味着飞行器可以朝向任意方向不一定是正北完成有效的磁力计校准。提示如果能够物理上旋转飞行器完成所有姿态完整校准 更可靠应优先使用。若大型车辆校准失败磁力计读数不一致或偏航不稳定/不正确需要使用完整校准重新校准。实现细节当前实现取代了早期版本PX4 v1.15–v1.17要求飞行器朝向正北。校准过程将基于位置与航向从 WMM 得到的预期地磁向量与磁力计实测磁场比较计算硬铁偏差偏移量调整磁力计偏移参数使航向估计无需完整三轴旋转即可正确对齐校准立即生效参数保存后通常在解锁或重启时偏移量持久化。在源码中这一过程由 do_mag_calibration_quick 实现其关键逻辑包括若未显式提供经纬度则订阅vehicle_gps_positionuORB 主题获取 GNSS 位置且要求gps.eph 1000水平精度因子合格否则报错GPS required for mag quick cal通过get_mag_declination_degrees/get_mag_inclination_degrees/get_mag_strength_gauss查询当前位置的地磁偏角、倾角与场强构造预期地磁向量mag_earth_pred要求最近 1 秒内有姿态估计订阅vehicle_attitude否则报错attitude required for mag quick cal——这也是文档中飞行器无需完全水平倾斜由姿态估计自动补偿的底层依据将传入航向写入姿态欧拉角的偏航通道euler(2) heading_radians把预期场旋转到机体坐标系与当前磁力计读数相减得到偏移量并写入参数。前置条件获取有效的 GNSS 定位用于世界地磁模型查询。选择远离大型金属物体或磁场的地点。若使用外部罗盘确保其 安装 尽量远离其他电子设备。操作步骤确保 GNSS 定位这是从 WMM 表查询预期地磁场所必需的。将飞行器对准已知航向可以是正北0°也可以是相对正北的任意已知航向。打开 QGroundControl MAVLink 控制台对应地面站菜单的 MAVLink Console 入口运行commander calibrate mag quick [heading]参数说明heading可选飞行器真实航向度0–359。省略时默认为 0°正北。示例飞行器朝向命令北0°commander calibrate mag quick东90°commander calibrate mag quick 90南180°commander calibrate mag quick 180西南225°commander calibrate mag quick 225注意飞行器无需完全水平倾斜由姿态估计自动补偿。该校准也可通过 MAVLink 命令MAV_CMD_FIXED_MAG_CAL_YAW触发。校准后验证检查 QGroundControl 中航向指示器是否稳定。将飞行器转到四个基本方向N/E/S/W确认罗盘航向与实际一致。若使用多个磁力计确认已设置正确的传感器优先级。命令解析与工作线程实现在 src/modules/commander/worker_thread.cppWorkerThread依据命令类型分别调用do_mag_calibration或do_mag_calibration_quick并将航向、经纬度参数传入。重新校准Recalibration只要飞行器的磁场环境发生变化或航向行为显得不可靠就建议重新校准。可根据飞机大小和能否完成所需姿态旋转选择完整校准或 mag quick 校准完整校准能提供最准确的软铁补偿。在以下情况需要重新校准罗盘罗盘模块或其安装方向发生变化包括更换 GPS 或磁力计单元、旋转桅杆、改变模块与机身的固定方式。飞行器暴露于强磁干扰例如在大型钢结构附近运输或存放、在机身附近进行焊接作业或在靠近大电流设备处运行。结构、布线或载荷变化可能改变传感器周围的磁场新增载荷、重新布线、增加电池或金属紧固件都会引入影响航向精度的软铁效应。在磁特性差异显著的区域运行纬度、经度或磁倾角大幅变化可能需要重新估计偏移量。QGroundControl 报告磁力计不一致例如出现mag sensors inconsistent错误。航向行为与飞行器实际朝向不符症状包括偏航漂移、直线飞行时航向突然跳变、toilet bowling。QGroundControl 发出mag sensors inconsistent错误表示多个磁力计报告了不同的航向。附加校准与配置上述流程会自动检测、设置默认旋转、校准并排序所有可用磁力计若存在外部磁力计内部磁力计会被禁用。进一步说明SENS_MAG_MODE决定传感器集线器发布模式默认值为 1仅发布主磁力计。内部磁力计自动禁用的逻辑可在 VehicleMagnetometer.cpp 中看到当存在外部磁力计且当前磁力计为内部时调用disable()并保存参数注释明确说明内部磁力计不应再用于导航。通常无需更多罗盘配置。启用/禁用罗盘虽然通常无需额外配置但开发者若出于测试等原因需要禁用/启用罗盘可通过罗盘参数实现。这些参数以 CALMAGx为前缀其中x0-3CAL_MAGn_ROT 可用于判断哪些罗盘是内部的。当CAL_MAGn_ROT1时该罗盘为内部罗盘。CAL_MAGx_PRIO 设置罗盘的相对优先级可用于禁用罗盘。源码中磁力计优先级更新逻辑位于 VehicleMagnetometer.cpp 及 Magnetometer.cpp。相关参数细节来自 sensor_params_mag.yaml参数类型/默认值说明SENS_MAG_SIDESenum默认 63位域选择参与校准的侧面34两面校准仅估计偏移量比例因子保持不变因此建议先做一次六面校准、38三面校准、63六面校准。位定义尾向下1、机头向下2、左侧4、右侧8、倒置16、正面朝上32SENS_MAG_AUTOROTboolean默认 1校准时自动尝试确定外部磁力计的旋转SENS_MAG_RATEfloat默认 15.0 Hz1–200磁力计数据最大发布频率为上限实际速率取决于传感器修改需重启SENS_MAG_MODEenum默认 10发布所有磁力计1仅发布主磁力计修改需重启SENS_MAG_AUTOCALboolean默认 0有可用偏差估计时自动初始化磁力计校准。该估计仅包含硬铁偏移因此仍建议做完整校准主要用于无法从地面站校准的远程节点如 CAN GPS 单元CAL_MAG_COMP_TYPenum默认 0磁力计补偿类型0禁用1基于油门补偿2基于电流补偿电池实例 03基于电流补偿电池实例 1更多细节可查阅 Advanced Configuration Parameter Reference。调试Debugging磁力计实际上所有传感器的原始对比数据可通过设置 SDLOG_MODE1 与 SDLOG_PROFILE64 记录到日志中详见 Logging。进一步信息Peripherals GPS CompassBasic Assembly各飞控的组装指南Compass Power Compensation高级配置校准命令与单元测试源码mag_calibration.cpp、mag_calibration_test.cpp可通过make tests TESTFILTERmag_calibration运行【免费下载链接】PX4-AutopilotPX4 Autopilot Software项目地址: https://gitcode.com/gh_mirrors/px/PX4-Autopilot创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考