Skip to content

指南针动力补偿

罗盘(磁力计)应安装在尽量远离大电流线缆的地方,因为大电流产生的磁场会干扰罗盘读数。

本文介绍在无法改变磁力计安装位置的情况下,如何补偿这种感应磁场的影响。

TIP

将指南针移离载电电缆是解决该问题最简单有效的方法,因为磁场强度会随与电缆距离的平方而衰减。

INFO

此过程以多旋翼飞行器为例进行说明,但同样适用于其他类型的飞行器。

适用本节补偿方法的前提条件

仅当以下所有条件均满足时,才建议进行功率补偿:

  1. 磁力计无法远离动力线缆。
  2. 指南针读数与推力设定值和(或)电池电流之间存在强相关性。 受干扰的磁力计读数
  3. 无人机的线缆固定不动(通电线缆移动会导致计算出的补偿参数失效)。

如何实现罗盘补偿

  1. 确保无人机运行的是支持电源补偿的固件版本(当前的主分支版本,或v1.11.0及之后的版本)。
  2. 执行标准指南针校准
  3. 将参数SDLOG_MODE设置为2,以启用开机数据记录。
  4. 勾选参数SDLOG_PROFILE中的“传感器对比”选项(第6位),以获取更多数据点。
  5. 固定好无人机,使其无法移动,然后安装螺旋桨(这样电机就能获得与实际飞行中相同的大电流)。在本示例中,使用扎带固定无人机。 扎带固定
  6. 给飞行器通电,并切换到特技飞行模式(使用此模式可确保飞行器不会因扎带导致的移动而尝试进行补偿)。
    • 解锁无人机,然后缓慢将油门推至最大。
    • 缓慢将油门降至0。
    • 锁定无人机。

    注意 务必谨慎测试,并密切关注振动情况。

INFO

务必谨慎测试,并密切关注振动情况。

  1. 导出ulog日志文件,并使用Python脚本mag_compensation.py来确定补偿参数。
sh
python mag_compensation.py ~/path/to/log/logfile.ulg <type> [--instance <number>]

其中: - <type>current(电流)或thrust(推力)(用于补偿的功率信号类型)。 - --instance <number>(可选):数字为0(默认值)或1,表示要使用的电流或推力信号实例。

INFO

如果日志中未包含电池电流测量值,则需要注释掉Python脚本中的相应行,以便仅根据推力进行计算。

  1. 该脚本将返回基于推力和基于电流的补偿参数,并输出到控制台。脚本显示的数值表明了每个罗盘的匹配程度,以及应用建议的补偿值后的数据情况。如果有电流测量值,通常基于电流的补偿能得到更好的结果。以下是一个日志示例,其中电流匹配良好,但由于非线性关系,推力参数完全不可用。 线性拟合
  2. 确定参数后,必须通过将CAL_MAG_COMP_TYP设置为1(使用推力参数时)或2(使用电流参数时)来启用功率补偿。此外,还需为每个罗盘的每个轴设置补偿参数值。 补偿参数