c - 使用 IMU 传感器跟踪 2D 定位

标签 c math accelerometer sensors gyroscope

我正在使用微型车,我想估计位置。我们不能使用 GPS 模块,我看到的大多数跟踪系统都使用 IMU senson 和 GPS 模块。在我们的汽车中,我们能够通过图像处理找到我们准确的正确位置,但对于一些没有足够标记的部件,我们无法做到这一点。所以我们想使用 IMU 作为我们定位的备份。所以只要定位接近就对我们有好处。

我们只对我们的 2D 位置感兴趣,因为汽车在平坦的地面上。

我正在使用 IMU 9DOF 传感器,我想计算我的运动。我已经看到一些使用 IMU 跟踪 body 运动的惊人作品,但没有任何代码或简单的解释。所以基本上我有加速度计、陀螺仪和磁力计的读数。我也有四分之一的方向。从设备上我也得到了线性加速度,但即使我没有朝任何方向移动它,值也不是 0,这真的很令人困惑。

你能帮我解决这个问题吗?

提前致谢

最佳答案

  • 这里不需要四元数,而是 vector 。

  • 您应该根据陀螺仪方向转动测得的加速度 vector 。因此,您将拥有沿 X、Y、Z 轴的精确加速度分量

  • 通过对加速度分量进行双重积分来计算沿轴的距离变化。第一积分 - 速度,第二积分 - 坐标。

至于集成,请在 Knuth 寻找算法- 他是最棒的。

但是只有当你在平坦的地球上时,所有这些才有效。 20-30 公里没问题,但数百公里就不好了。如果您需要某个区域的坐标,则可以在球体上进行全部数学计算。如果距离是数千公里,你必须考虑到地球实际上是一个椭球体。您需要一位非常合格的大地测量学(geomatics)数学专家,远距离高精度大地测量学(天文大地测量学),另一位陀螺仪和加速度计专家。也许您会找到一个通用的 - 在年长的海洋测量师中有这样的专家。或者来自太空大地测量学的人。不要以为你可以简单地从书本上读到它——你需要一个硕士学位。

即使是平面变体也比您想象的要难得多 - 您必须考虑错误并进行大量计数,并使用一些特殊的实用方法来检测和限制它们。在这里,数学家/测量员顾问就足够了。

主要问题是测量员通常数学较弱,而数学家不做测量:-)。这些专家真的很少见。我自己一直在做这件事,但现在我什至不能向你推荐任何人 - 在捷克代表这里,这样的专家没有用。

关于c - 使用 IMU 传感器跟踪 2D 定位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21182408/

相关文章:

iphone - 如何将运动传感器数据从 Iphone 转换到 Android?

单击取消暂停 SDL2 音频的声音

math - 什么是梯度方向和梯度大小?

c++ - 使用 GtkBuilder 但在 GTKmm 上的自动连接信号

在许多段中找到最接近点的算法(反向地理编码)

java - 燃料图平滑算法

iphone - 计算倾角和走向

python - 从 Python 上的 IMU 传感器获取 3D 位置坐标

c - 如何用双指针释放C中的树结构

c++ - 嵌套锁和简单锁的区别