首页 > 解决方案 > 从 Python 上的 IMU 传感器获取 3D 位置坐标

问题描述

我计划从包含加速度计和陀螺仪的 IMU(惯性传感器)获取 3D 笛卡尔坐标中的位置。我正在使用它来跟踪 3D 中的对象位置和轨迹。

1-根据我有限的知识,我假设仅加速​​度计就足够了,导致xyz轴A(Ax,Ay,Az)的加速度,需要积分两次才能获得速度和位置,但积分会增加一个未知的常数值,这种称为漂移的误差会随着时间的推移而增加。如何消除此错误?

2-此外,为什么首先需要陀螺仪,我们不能仅将 xyz 轴加速度转换为位移,如果加速度计告诉运动轴,那么为什么要从陀螺仪检查方向。抱歉,这是一个非常基本的问题,我在任何地方都检查过 Gyro+Accel 都被使用但不知道为什么。

3-即使在静止且没有任何运动时,地球的重力也会作用在传感器上,其值总是比传感器运动所产生的值更大。你如何消除重力?

完成此操作后,将对它们应用卡尔曼滤波器以融合它们并平滑值。对于不能选择 GPS 的环境,这种方法对物体的轨迹估计有多准确。我从arduino获取加速度计和陀螺仪值,然后导入到Python中,它将被绘制在实时更新的 3D 图形上。任何帮助将不胜感激,尤其是类似代码的链接。

标签: pythonpositionaccelerometerimupykalman

解决方案


1 - 可以校准加速度计以解决部分漂移问题,但最终没有传感器是完美的,不准确将不可避免地导致漂移。要解决这个问题,您需要一些滤波器(例如卡尔曼滤波器)来使用加速度计来获取短高频数据,还需要一个辅助传感器(例如相机)来定期获取绝对位置并更新内部位置。这是卡尔曼滤波器背后的基本思想。

2 - 加速度计不适用于高频旋转数据。仅使用加速度计数据意味着系统无法区分水平线性加速度和旋转位置。陀螺仪用于高频数据,而加速度计用于低频数据,以调整和抵消旋转漂移。卡尔曼滤波器是解决此问题的一种可能方法,并且有许多很棒的在线资源对此进行了解释。

3 - 您必须使用包括陀螺仪/加速度传感器融合在内的方法来获得传感器的 3d 方向,然后使用矢量数学从该方向中减去 1g。

您最好查看一些在线资源以了解其要点,然后使用预先构建的传感器融合系统,无论它是加速度计上的库还是融合系统(在当今大多数加速度计上,包括 mpu6050)。这些板载系统通常比简单的卡尔曼滤波器做得更好,并且可以结合其他传感器(例如磁力计)来获得更高的精度。


推荐阅读