指南针动力补偿
罗盘(磁力计)应安装在尽量远离大电流线缆的地方,因为大电流产生的磁场会干扰罗盘读数。
本文介绍在无法改变磁力计安装位置的情况下,如何补偿这种感应磁场的影响。
TIP
将指南针移离载电电缆是解决该问题最简单有效的方法,因为磁场强度会随与电缆距离的平方而衰减。
INFO
此过程以多旋翼飞行器为例进行说明,但同样适用于其他类型的飞行器。
适用本节补偿方法的前提条件
仅当以下所有条件均满足时,才建议进行功率补偿:
- 磁力计无法远离动力线缆。
- 指南针读数与推力设定值和(或)电池电流之间存在强相关性。
- 无人机的线缆固定不动(通电线缆移动会导致计算出的补偿参数失效)。
如何实现罗盘补偿
- 确保无人机运行的是支持电源补偿的固件版本(当前的主分支版本,或v1.11.0及之后的版本)。
- 执行标准指南针校准。
- 将参数SDLOG_MODE设置为2,以启用开机数据记录。
- 勾选参数SDLOG_PROFILE中的“传感器对比”选项(第6位),以获取更多数据点。
- 固定好无人机,使其无法移动,然后安装螺旋桨(这样电机就能获得与实际飞行中相同的大电流)。在本示例中,使用扎带固定无人机。
- 给飞行器通电,并切换到特技飞行模式(使用此模式可确保飞行器不会因扎带导致的移动而尝试进行补偿)。
- 解锁无人机,然后缓慢将油门推至最大。
- 缓慢将油门降至0。
- 锁定无人机。
注意 务必谨慎测试,并密切关注振动情况。
INFO
务必谨慎测试,并密切关注振动情况。
- 导出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脚本中的相应行,以便仅根据推力进行计算。
- 该脚本将返回基于推力和基于电流的补偿参数,并输出到控制台。脚本显示的数值表明了每个罗盘的匹配程度,以及应用建议的补偿值后的数据情况。如果有电流测量值,通常基于电流的补偿能得到更好的结果。以下是一个日志示例,其中电流匹配良好,但由于非线性关系,推力参数完全不可用。
- 确定参数后,必须通过将CAL_MAG_COMP_TYP设置为1(使用推力参数时)或2(使用电流参数时)来启用功率补偿。此外,还需为每个罗盘的每个轴设置补偿参数值。