IMU定位不断变化

时间:2015-08-26 13:54:03

标签: orientation hardware ros robot imu

我们有XSENS MTi IMU-Device并使用ROS-Framework(Ubuntu / Fuerte)。 我们订阅了IMU-Data,除方向外,所有数据看起来都不错。

在Quaternion-Outputmode中的Euler-Outputmode中,值不断变化。它们不是随机的,它们以或多或少的恒定速率缓慢增加或减少,有时我观察到变化变平,然后改变它的方向。

当第二个X的值可能是:

x: 7.79210457616
y: -6.58661204898
z: 41.2841955308

Z值在几秒钟内变化约10(我认为10-20秒)。

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

随时可以请求更准确的数据或您想知道的任何可能帮助我们的信息。我们将参加11月举行的Spacebot-Cup,因此完成IMU将会非常轻松。 :)

2 个答案:

答案 0 :(得分:2)

如果你没有磁力计来给出正确的航向,那就完全正常了。

单独使用陀螺仪测量转弯速度,并且不知道任何轴上任何给定时间的方向。如果您知道初始航向并且陀螺仪100%准确,则积分转速给出航向。无论如何,它都会漂移,即使它是完美校准的,因为你是以不连续的间隔而不是连续采样。

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

添加磁力计将固定相对于地球磁场的航向。这将为您提供相对于磁北的航向。您将需要应用本地磁偏角的转换以获得True North。这些通常可在线获得并且相当长达数十公里。 Google ITREF。

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

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

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

答案 1 :(得分:1)

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

您可以看到的漂移是正常的,可能来自噪声的整合,错误的零速率校准或陀螺仪的偏差。

为了纠正这种偏差,我们通常使用AHRSVRU算法(取决于需要纠正的偏航)。它是一种融合传感器算法,它利用加速度计的重力和磁力计数据(用于AHRS)来纠正这种漂移。

经常使用的算法是Kalman filtercomplementary filter(Madgwick / Mahony)。

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