IMU 方向不断变化

问题描述 投票:0回答:2

我们有 XSENS MTi IMU 设备并使用 ROS 框架 (Ubuntu / Fuerte)。 我们订阅了 IMU 数据,除了方向之外,所有数据看起来都不错。

在欧拉输出模式中,就像在四元数输出模式中一样,值不断变化。它们不是随机的,而是以或多或少恒定的速率缓慢增加或减少,有时我观察到变化趋于平缓,然后改变其方向。

当第二个 X 处的值可能是:

x: 7.79210457616
y: -6.58661204898
z: 41.2841955308

Z值在几秒内(我认为是10-20秒)在大约10的范围内变化。

什么会导致这种行为?我们是否误解了数据或者驱动程序有问题?奇怪的是,这也发生在另外 2 个驱动程序和另一个 IMU 设备(我们有 2 个)上。每个组合的结果相同。

请随时询问更精确的数据或任何您想知道的可能对我们有帮助的信息。我们将参加 11 月份的 Spacebot-Cup,因此完成 IMU 将会是一件很轻松的事情。 :)

orientation ros hardware robotics imu
2个回答
3
投票

如果您没有磁力计来提供正确的航向,则完全正常。

陀螺仪仅测量转弯速率,并且不知道任何轴上任何给定时间的方向。如果您知道初始航向且陀螺仪 100% 准确,则对转弯速率进行积分即可得出航向。无论如何,即使它经过完美校准,它也会发生漂移,因为您是以离散间隔而不是连续采样。

添加加速计至少可以修复向下的方向(因为它测量重力,朝向地球中心)。这将使 Z 轴解决方案与垂直方向保持一致,但不会固定水平方向(航向或偏航)。正如你所看到的,这将继续漂移。

添加磁力计将固定相对于地球磁场的航向。这将为您提供相对于磁北的航向。您需要对当地磁偏角进行平移才能获得真北。这些通常可以在线获取,并且在数十公里内相当稳定。谷歌 ITREF。

一些集成传感器没有磁力计。这就是标题漂移的原因。像 MPU6050 这样的单元具有内置固件,可以访问磁力计,但通常的固件不使用它,因此您必须在微控制器或连接的 PC 上实现 Madgwick 等。博世有一个内置处理单元的新单模块。希望它使用 9 个自由度,而不是 MPU6050 上的 DMP 获得的 6 个自由度。

磁传感器的精确度约为 2 度。局部磁偏角修正也有误差。您可以通过在长基线上使用 GPS 来执行额外的校准,以获得更好的结果。还值得注意的是,由于侧风/横流,航向和航向通常会有所不同。

Madgwick 算法相当稳定且易于实现,并且比需要执行矩阵求逆的卡尔曼滤波器使用更少的资源。它仍然会产生轻微的抖动,但结果的轻微平滑不会导致太多的滞后。


2
投票

如果您有IMU版本,我假设设备上没有进行任何信号处理。 (但我不知道该产品)。因此,您获得的方向数据应该只是陀螺仪数据的积分。

您看到的漂移是正常的,可能来自噪声积分、不良的零速率校准或陀螺仪的偏差。

为了纠正这种漂移,我们通常使用

AHRS
VRU
算法(取决于校正偏航的需要)。这是一种融合传感器算法,它利用来自加速度计的重力和磁力计数据(用于 AHRS)来纠正这种漂移。

经常使用的算法是

Kalman filter
complementary filter
(Madgwick/Mahony)。

这不是一件容易的事,需要在 matlab/python 上进行一些阅读和实验来配置这些过滤器:)

© www.soinside.com 2019 - 2024. All rights reserved.