在这个论坛上的第一个帖子,希望我做得对。我知道过去有几个关于加速度双积分的线程,我知道加速度计不是200k+军用级传感器固有的误差。幸运的是,我的目的,我只需要它是大约正确的(+/- 3英寸)不超过十秒钟。
我已经快到了。我使用的是bno055 IMU的线性加速度。我的采样频率是50hz(每20ms一次)。每次采样,我都使用基本的梯形积分从acc到速度,从速度到位置。我有一个"判别窗口"来抛出静止错误,还有一个"运动结束检测"代码,用于在给定数量的加速度为0后将速度设置回0。
它在某种程度上起作用了,我只是需要它工作得更好一点。当我移动加速度计时,我看到了一些非常奇怪的反冲现象,当我停下来时,位置会随之正确地移动,然后位置会"反冲"几英寸——有时几乎回到我开始的位置。我找了一个比我聪明得多的朋友,他建议我更聪明地集成,使用4或5个数据点,而不是我在梯形集成中使用的最后两个。
所以我的问题是:我如何使用最后的四到五个数据点来比基本的梯形积分更精确地积分?我试着研究欧拉和RK4,但自从我做过更高层次的数学以来,我已经很长时间了,我不知道从哪里开始。如果有人能简单地解释一下,那就太棒了。谢谢。在后台,这些代码都是在微型计算机上运行的,所以我不能通过matlab来运行数据。
p。有人还建议我使用高通滤波器,但是,当我试图开始阅读数字高通滤波器时,我就是无法理解它。我想我应该从更聪明的集成开始,看看它能做什么。
虽然OP在发布后的两年中无疑解决了这个问题,但我正在回应,因为我遇到了同样的问题,并在阅读此问题后发现了解决方案。
对于OP的目的,梯形积分甚至是积分的中点估计都可以很好地工作。对于表示这种简单运动的曲线来说,不需要更复杂或更精确的积分,也无助于解决这一特殊问题。
描述的问题是位置在一段时间内被正确跟踪,但是当设备停止移动时位置向后跳。
当设备移动然后停止时,有一个瞬间的加速度,然后是一段时间的等速运动(零加速度),然后是一段时间的减速(速度下降),直到设备再次静止。
OP使用
报告"移动结束检测"代码将速度设置回0后对于给定的次数,加速度为0。
OPs问题很可能是在匀速运动期间,加速度为零,因此在此尝试降噪(阻尼)算法时,速度被人为地重置为零。随后的减速会在一段时间内产生负速度,使计算出的位置几乎一路返回到起点。
如果跟踪小的离散运动,这个特殊问题的一个解决方案是检测和跟踪加速->滑行->减速的循环,并仅在循环的减速部分完成后应用阻尼算法。