# 磁航向电源补偿
指南针(磁力计)应该安装在尽可能远离通过大电流的线缆的位置,因为它们诱发的磁场会干扰指南针的读数。
本文解释了如何在不能改变磁航向计安装位置的情况下如何补偿诱发磁场带来的影响。
Tip使磁航向计远离动力电缆是最简单和最有效的避免诱发磁场干扰的方法,因为磁场强度是按与电缆的距离的二次方衰减的。
Note 下述过程基于多旋翼无人机演示,但同样适用于其他类型的载具。
# 电源补偿的适用条件 {#when}
只有当下述的全部条件都满足时才建议采用电源补偿:
磁航向计无法远离动力线缆。
磁航向计读数与油门杆位与/或电池电流有强相关性。
无人机的线缆都是固定的或不会移动的(当通电的线缆能够移动会导致计算出的补偿参数失效)。
# 如何补偿磁航向计 {#how}
确保无人机运行在支持电源补偿的固件版本上(当前的Master版,或v1.11.0之后的版本)。
执行标准的指南针校准流程。
将参数SDLOG_MODE 设为2,使系统一启动就开始记录日志。
将参数SDLOG_PROFILE 复选框的高采样率 (high rate) (bit 2)选中,以获得更多的数据采样点。
固定好无人机使其无法移动,然后装好螺旋桨(这样电机可以获得与实际飞行中同样大的电流)。 本例中用带子固定了无人机。
给无人机上电,并切换到特技 (ACRO) 飞行模式 (此模式下无人机不会试图去补偿带子对运动造成的影响)。
- 解锁无人机,然后缓缓将油门推到最大。
- 慢慢将油门降到0
- 给无人机加锁 > Note 谨慎地进行测试,并密切注意振动情况。
获取ulog文件,并用python脚本mag_compensation.py来确定补偿参数。
python mag_compensation.py ~/path/to/log/logfile.ulg
Note 如果你的日志文件中不包含电池电流的测数,你就需要在python脚本中注释掉相关的代码行,这样就只通过推力计算。
这个脚本将返回基于推力和基于电流的补偿参数,并打印输出到控制台。 脚本弹出的数值显示了每个罗盘匹配的程度,以及使用了建议的补偿值后数据将是什么样的。 如果有电流测数,那么依据电流补偿通常可以获得更好的结果。 这里是一个日志的例子,电流匹配得很好,然而因为不是线性关系推力参数则完全不可用。
一旦确定了参数,必须通过将CAL_MAG_COMP_TYP设为1(使用推力参数时)或2(使用电流参数时)来激活电源补偿。 此外,还要设置好每个罗盘每个轴的补偿参数值。