IMU 温度校准

ArduPilot 4.1 及更高版本支持 IMU 温度校准。根据温度变化校准 IMU 可以大大减少 IMU 的变化量,并有助于在启动和飞行之间温度变化很大的条件下进行飞行。

备注

该功能目前仅适用于 2MB (飞行)控制器。

温度校准的方法是:首先设置一些参数,以便在下次启动时启动校准程序,然后将(飞行)控制器置于低温环境中几分钟,以确定较低的校准温度。然后,在较高校准点的环境中快速重新开机(可选择连接到 GCS 以监控该过程)。

警告

在校准完成之前,重新接通电源后不得允许(飞行)控制器移动!

校准完成后,还可以运行离线校准工具来验证校准的改进。

温度校准与其他类型的校准参数一样,都存储在 ArduPilot 参数中。此外,还可以选择在重置全部参数后继续存储参数,这样就可以为销售兼容 ArduPilot 的(飞行)控制器的供应商提供出厂校准支持。

温度校准程序

良好温度校准的关键因素是

  • 在开始校准之前,让(飞行)控制器冷却到低于最低工作温度的温度

  • 确保校准运行期间达到的 IMU 温度足以覆盖所有飞行条件

  • 确保在校准过程中没有移动。请注意,(飞行)控制器不一定要保持水平,但一定不能移动。

在开始校准过程之前,您需要设置一些关键参数:

  • 确保 INS_ACCn_CALTEMPINS_GYRn_CALTEMP 参数已经设置(每个 IMU 有一个参数,请确保全部设置)。这些参数是在校准加速度计和陀螺仪时自动设置的。它们记录了校准偏移时 IMU 的温度,这是校准过程中的关键信息。如果尚未设置(默认值为 -300,这是一个无效值),则需要执行 6 轴加速度校准。

  • 设置 INS_TCALn_ENABLE 将每个 IMU 的值设为 2,以启用要校准的每个 IMU 的 IMU 温度校准学习。值为 2 将启用温度校准学习。ENABLE(启用)参数值 2 在下次启动时生效。

  • 设置 INS_TCALn_TMAX 到要停止校准的温度(摄氏度)。这应该是校准过程中预计达到的最高温度。

  • 建议您确保已插入 microSD 卡,并且您已 日志_解除警报 设为 1 以记录校准过程中使用的 IMU 数据。虽然这仅在下文的离线校准检查中需要,但建议在初始校准时使用,以备检查原始数据,并检查校准过程中可能受到干扰的任何移动。

对于带有内置 IMU 加热器的电路板,您可能需要提高 BRD_HEAT_TARG 温度比平时高。70 的值可以用于校准。确保在校准过程完成后将其改回正常飞行值(通常为 45)。70 的值很可能高于所能达到的温度,因此对于带加热器的电路板,TMAX 的合理值为 65 摄氏度。请注意,在某些电路板上(特别是 Hex CubeBlack 和 CubeOrange),第 3 个 IMU 不靠近加热器,因此其最高温度需要比前两个 IMU 低 10 度左右。

设置好参数并将(飞行)控制器冷却到最低温度后,应在温暖的环境中开启飞行控制器,确保其在整个校准过程中不会移动。

校准过程有 10 分钟的超时时间。如果 IMU 的温度在 10 分钟内没有上升至少 0.5 摄氏度,那么校准将完成,参数将保存到温度达到的点。

在整个校准过程中,还会保存中间温度的参数。因此,如果您没有时间(或耐心)等待校准,可以随时关闭电路板停止校准。如果这样做,则需要手动更改 INS_TCALn_ENABLE 参数从 2 到 1,以便使用新的校准数据。否则,每次启动时都会重新开始标定。如果中断标定过程,则应关闭载具电源并尽量减少移动,否则可能导致标定无效。使用遥测连接更改标定数据来停止标定过程。 INS_TCALn_ENABLE 也可以在断电前将参数设置为 1,这也是一个好主意。

请注意,校准过程要求起始温度和终止温度之间至少有 10 摄氏度的温度变化。建议温度范围至少为 25 摄氏度,即从厨房冰柜到您的办公桌。

监控校准过程

如果连接了蜂鸣器,则在校准过程中会听到短暂的周期性蜂鸣声。校准完成后,将播放完成曲调。如果您与载具连接了 mavlink 遥测链路,则还可以通过该链路监控进度,绘制 IMU 温度图(如果启用了 mavlink2,则在 RAW_IMU、SCALED_IMU2 和 SCALED_IMU3 消息中)。

完成后 INS_TCALn_ENABLE 每个 IMU 的 "启用 "参数将变为 1。一旦所有 IMU 完成校准,您就可以重新启动载具。您还应该

  • 重置 BRD_HEAT_TARG 如果你更改了它,它就会恢复到正常值(通常为 45

  • 关闭 日志_解除警报 如果您已启用该功能,但希望在正常使用时禁用它

您可能还希望刷新参数并保存所有以 INS_TCAL 前缀开头的参数。您可以恢复这些参数,以避免在完全重置参数时需要重新进行温度校准。

离线校准工具

上述程序将完成自动在线温度校准。如果 日志_解除警报 设为 1,则机载日志文件允许您进行离线校准检查。进行离线校准的好处是,您可以通过绘制加速度计和陀螺仪的未校正和校正校准图来检查校准的改进情况。

要执行离线校准,您需要使用 ArduPilot git 仓库 Tools/scripts/tempcal_IMU.py 中的脚本。在校准后的日志文件上运行该脚本时,您将获得两组图形。一组用于陀螺仪,另一组用于加速度计。

下图显示了 3 个 IMU 板的日志文件的运行结果:

../_images/tempcal_gyro.jpg ../_images/tempcal_accel.jpg

这些图表的主要特点是

  • 每个图表的前三条线(蓝色、橙色和绿色)显示的是未经校正的 IMU 数据。这可以让您看到在没有温度校正的情况下有多少漂移

  • 接下来的三张图显示了校正后的 IMU 数据,说明温度校准的作用有多大。对于良好的校准,这些线都将接近于零

  • 右侧刻度显示 IMU 温度

  • 应检查数据是否有任何突然变化,这表明电路板在校准时没有保持静止状态

  • 如果有多个 IMU,图表可能会跨越不同的温度范围和时间。出现这种情况是因为 IMU 在不同时间达到目标校准温度

校准脚本还会将新校准参数的副本保存到 tcal.parm 文件或使用 -outfile 命令行选项选择的文件名中。您应该加载这些参数,以便在(飞行)控制器上启用新的标定。

其他命令行选项包括

  • -no-graph(无图形)选项可禁用图形处理,允许批量处理日志文件

  • 在线选项可将校准过程改为使用与飞行控制器内部在线校准方法相同的算法。这对调试

  • 通过 -tclr 选项,可以使用日志中的 TCLR 信息,而不是 IMU 日志信息。TCLR 信息记录了在线校准过程中使用的准确过滤数据。这对调试

  • 使用 -log-parm 选项可以获得一组额外的图表,显示使用日志文件中现有 INS_TCAL 参数进行校正后的 IMU 数据。这样,您就可以将新校准与之前的温度校准进行比较。

工厂温度校准

在基于 STM32F7 和 STM32H7 微控制器的(飞行)控制器上,我们支持将温度校准参数存储在电路板引导加载程序扇区的持久存储器中。这样,即使参数完全重置,包括更改固件类型,校准参数也能保持不变。这样,供应商就可以在出厂前对(飞行)控制器进行校准,极大地方便了用户。

要持久保存参数,应在 选项 以指示温度校准和加速度校准的持续性。最后,向(飞行)控制器发送 "闪存引导加载程序 "的 mavlink 命令。这将重新闪存引导加载程序,并在闪存引导加载程序扇区的最后部分嵌入校准参数。您可以使用 mavftp 客户端,使用 @SYS/persistent.parm sysfs 文件检查这些参数。