使用Python从IMU传感器获取3D位置坐标

5

我计划从含有加速度计和陀螺仪的IMU(惯性传感器)中获取3D笛卡尔坐标系中的位置。我将使用它来跟踪物体在3D空间中的位置和轨迹。

1- 根据我的有限知识,我认为只需要加速度计就足够了,可以得到沿着xyz轴的加速度A (Ax,Ay,Az),需要对其进行两次积分才能得到速度,然后再得到位置,但是积分会添加一个未知的常数值,这种误差称为漂移,随着时间增加而增加。如何消除此误差?

2- 此外,为什么首先需要陀螺仪呢?如果加速度计告诉我们运动的轴线,那么我们不能将x-y-z轴的加速度直接转化为位移吗?为什么要通过陀螺仪检查方向?很抱歉这是一个非常基本的问题,在我查询的所有地方都使用了陀螺仪+加速度计,但不知道为什么。

3- 即使静止不动,地球的重力也会作用于传感器上,这将始终产生比传感器运动所产生的值更大的值。如何去除重力影响?

完成后,我将对它们应用卡尔曼滤波器进行融合和平滑值。在GPS不可用的环境中,这种方法对于物体轨迹估计有多准确?我从arduino获取加速度计和陀螺仪的值,然后导入到Python中,在3D图表上实时更新。非常感谢任何帮助,尤其是提供类似代码的链接。


根据我的经验,将加速度计的值积分以获取速度和位置是非常容易出错的。因为误差会被放大。你需要一个陀螺仪来减少或协助加速度计。 - Epsi95
1个回答

4

1 - 加速度计可以进行校准来纠正一部分漂移,但最终没有传感器是完美的,因此不可避免地会导致不准确性引起漂移。为了解决这个问题,您需要一些过滤器,如卡尔曼滤波器,以使用加速度计进行短暂的高频数据,并使用二次传感器(例如摄像头)定期获取绝对位置并更新内部位置。这是卡尔曼滤波器背后的基本思想。

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

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接