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

Getting 3D Position Coordinates from an IMU Sensor on Python

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

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

2- 此外,为什么首先需要陀螺仪,我们不能直接将 x-y-z 轴加速度转换为位移,如果加速度计告诉运动轴那么为什么要检查陀螺仪的方向。对不起,这是一个非常基本的问题,我到处检查都使用了 Gyro+Accel 但不知道为什么。

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

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

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

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

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

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