使用加速度计计算距离

ste*_*sel 19 accelerometer

在阅读了许多关于如何根据加速度数据测量距离的论坛旁边的研究和论文之后我发现了双重积分方法,但是这种方法的误差很大并且随着时间的推移而增加.另外我找到了一些建议卡尔曼滤波器的人我读了一些关于它的参考文献,但我不清楚如何使用它.还有一些人正在谈论融合传感器...但在阅读之后我没有得到任何新的想法.所以我仍然感到困惑,我没有找到正确的答案......抱歉这个漫长的介绍.


让我们考虑一下,我手里拿着9轴传感器,我向某个方向移动手,我怎样才能在空间找到我手的新位置?如何获取从初始点到新点的运动矢量我的意思是如何知道三个轴上的传递距离?

如果没有直接的答案...一些建议或参考将是伟大的或一些算法,提供准确的答案,我可以自己研究和使用它.非常感谢你

小智 16

对你的问题的简短回答是你不能这样做.

双重积分方法实际上是仅使用加速度计获取所需信息的唯一方法.您发现此方法存在问题.错误随着时间的推移而增加,并且通常不能提供许多人正在寻找的准确性.

卡尔曼滤波通常需要2个设备,基本上可以充分利用两个设备并滤除坏设备.见下面的例子.

卡尔曼滤波是一个非常棘手的主题,我试图深入研究高级设计,但在我的有限测试中从未发现任何有意义的结果.这个youtube视频系列是了解这个主题的好地方.

这是与斯坦福大学一起赢得DARPA挑战的人,并以一种易于理解的方式解释了这个话题.整个课程是一个6单元的视频系列,关于编程机器人移动和了解他们在未知环境中的位置.值得一看,如果你有时间和兴趣.

听起来你正在尝试做类似于我为高级设计做的事情,给出真正特定的相对位置信息.

另一个伟大的卡尔曼过滤读取此(如果此链接不起作用谷歌卡尔曼过滤器平衡机器人并点击TKJ博客链接).基本上这个人使用加速度计和陀螺仪来跟踪现实世界中的方向.

还有其他东西可以查看wiki Real Time Kinematic.这适用于拖拉机和联合收割机,以提供真正准确的位置信息.John Deere出售一套系统,但它就像是20,000美元.这是使用GPS和beagleboard的穷人版本


dde*_*vaz 6

通过 9 轴传感器,我假设这意味着:

  • 三轴陀螺仪(测量转速)
  • 三轴加速度计(测量加速度)
  • 三轴磁力计(测量航向)

如果不使用其他使用外部参考(如 GPS)的传感器,就不可能从这种类型的 9 轴传感器中获得实际的位置估计。

从理论上讲,如果您知道空间中物体的加速度及其初始位置和速度,您将能够通过将有关其加速度和速度的信息传播回初始位置(即对加速度进行两次积分)来计算物体的新位置. 实际中不可能的原因是加速度计有噪声。该噪声将具有非零均值,因此在对加速度信号进行积分时,非零均值噪声会不断添加并累积在所得速度信号中。这被视为传感器漂移。速度估计开始时相当正确,但由于这种累积的噪声,很快就会漂移。第二次积分以获得位置只会通过重复该过程使情况恶化。

通过使用外部参考(例如 GPS),卡尔曼滤波器可用于将更新缓慢的 GPS 信号和快速更新的加速度信号组合在一起,以产生可靠的位置估计。GPS 具有将通过对加速度信号进行积分而累积的漂移归零的效果。

我建议看一下 Khamey 推荐的 Udacity Youtube 视频。在学习卡尔曼滤波器时,它有助于对目标是什么以及卡尔曼滤波器在做什么有一个清晰的总体概述。然后算法的数学和实际步骤将更容易理解。学习卡尔曼滤波器的另一件事是一次对一个状态变量而不是整个状态向量进行学习。这只是帮助您将注意力集中在卡尔曼滤波器的实际作用上,这样您就不会被矩阵代数所困扰。


jba*_*ina 5

不考虑旋转:

让我们考虑一下,当时t=t0您处于位置[ x0 , y0 , z0 ]并且速度向量为[ vx0 , vy0 , vz0 ]

t=t1您读取加速度矢量[ ax1 , ay1 , az1 ](来自t0和的平均加速度t1)。

那么,速度矢量 att=t1将是:

[ vx1 , vy1 , vz1 ] = [ vx0 + ax1 * (t1 - t0) , vy0 + ay1 * (t1 - t0) , vz0 + az1 * (t1 - t0) ] 
Run Code Online (Sandbox Code Playgroud)

之间的平均速度t0t1

[ vx01 , vy01 , vz01 ] = [ (vx0 + vx1) / 2 , (vy0 + vy1) / 2 , (vz0 + vz1) / 2 ]
Run Code Online (Sandbox Code Playgroud)

位置t=t1将是:

[ x1 , y1 , z1 ] = [x0 + vx01 * (t1 - t0), y0 + vy01 * (t1 - t0), y0 + vy01 * (t1 - t0) ]
Run Code Online (Sandbox Code Playgroud)

如您所见,误差随 一起传播t^2,这就是惯性系统需要通过 GPS 等外部参考进行补偿的原因。