如何使用传感器数据计算移动设备的行进路径?
How do I calculate the traveled path of mobile devices using sensor data?
我想使用加速度计、陀螺仪和其他智能手机传感器绘制设备的 3D 运动 space。
经过一番研究,我发现了一个方程式,该方程式表示可以通过对 a*t^2
方程式进行二重积分来完成,但它引入了巨大的累积误差和漂移余量。我对此的解决方案是跳过双重积分,而是计算梯形的面积 - ((a(t) - a(t-1)) * dt / 2) + (dt * a(t))
然而,这给出了离散结果,当加起来时不提供正确的路径(即使不应用重力过滤器并且在移动设备时平面)。
是否有更准确的实时执行这些计算的方法,因为我有一个恒定的增量时间值和每个时间间隔的传感器数据样本,其中第 N 个样本是在时间 N*dt 采集的。
不幸的是,如果您只使用加速度计和陀螺仪数据,那么您通常会看到数据随时间发生相当大的漂移。您还使用哪些其他传感器?您可以访问 GPS 数据吗?您是否有您希望智能手机经历的那种运动的数学模型?
就是说,如果您坚持使用 IMU,那么有大量不同的滤波器可以为您提供比简单积分更好的估计值。其中最简单的可能是 Madgwick Filter,它实施起来很简单,只需结合您的线性加速度计和陀螺仪数据。这里的一个重要收获是陀螺仪传感器数据被转换和更新为四元数。
tutorial actually gives a pretty nice overview of the mathematical model of an IMU, and a few of the filters you can test out. The most complex is the Kalman Filter and varieties of it, like the Unscented Kalman Filter,它们可能很难调优,但通常性能良好。
抱歉,您的问题没有简单的答案。但是你问了一个广泛的问题,答案在很大程度上取决于你的应用程序。但我建议您使用该教程中列出的 Madgwick 或 Complementary 过滤器,它们非常简单,可能会让您快速改进您的初始估计。
我想使用加速度计、陀螺仪和其他智能手机传感器绘制设备的 3D 运动 space。
经过一番研究,我发现了一个方程式,该方程式表示可以通过对 a*t^2
方程式进行二重积分来完成,但它引入了巨大的累积误差和漂移余量。我对此的解决方案是跳过双重积分,而是计算梯形的面积 - ((a(t) - a(t-1)) * dt / 2) + (dt * a(t))
然而,这给出了离散结果,当加起来时不提供正确的路径(即使不应用重力过滤器并且在移动设备时平面)。
是否有更准确的实时执行这些计算的方法,因为我有一个恒定的增量时间值和每个时间间隔的传感器数据样本,其中第 N 个样本是在时间 N*dt 采集的。
不幸的是,如果您只使用加速度计和陀螺仪数据,那么您通常会看到数据随时间发生相当大的漂移。您还使用哪些其他传感器?您可以访问 GPS 数据吗?您是否有您希望智能手机经历的那种运动的数学模型?
就是说,如果您坚持使用 IMU,那么有大量不同的滤波器可以为您提供比简单积分更好的估计值。其中最简单的可能是 Madgwick Filter,它实施起来很简单,只需结合您的线性加速度计和陀螺仪数据。这里的一个重要收获是陀螺仪传感器数据被转换和更新为四元数。
tutorial actually gives a pretty nice overview of the mathematical model of an IMU, and a few of the filters you can test out. The most complex is the Kalman Filter and varieties of it, like the Unscented Kalman Filter,它们可能很难调优,但通常性能良好。
抱歉,您的问题没有简单的答案。但是你问了一个广泛的问题,答案在很大程度上取决于你的应用程序。但我建议您使用该教程中列出的 Madgwick 或 Complementary 过滤器,它们非常简单,可能会让您快速改进您的初始估计。