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

标签 python position accelerometer imu pykalman

我计划从包含加速度计和陀螺仪的 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)。这些机载系统通常比简单的卡尔曼滤波器做得更好,并且可以结合其他传感器(如磁力计)以获得更高的精度。

关于python - 从 Python 上的 IMU 传感器获取 3D 位置坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66167733/

相关文章:

python - 返回查询集对象时出现错误 : Cannot resolve expression type, unknown output_field

python - 删除cStringIO.StringIO的已使用部分

javascript - 使用 JQuery 定位一个 div

javascript - Canvas 元素 : Image clicked

javascript - jQuery UI 相对于两个元素的位置

javascript - Intel XDK watchAcceleration 方法和同名 Cordova 方法有什么区别?

android - 检测手机上的向前/向后运动

python - 如何读取多个图像并用它们创建 3D 矩阵?

python - 在 Keras 中添加自定义均方根误差

algorithm - DeviceMotion采用什么算法从加速度计和陀螺仪计算姿态?