本论坛的第一篇文章,希望我做得对。我知道过去有两个关于加速度的双重整合的线程,我知道加速度计中固有的误差不是200k +军用级传感器。幸运的是,我只需要它大约正确(+/- 3英寸)不超过十秒。
我已经差不多了。我正在使用bno055 IMU的线性加速度。我以50hz(每20ms)的速率采样。每次我采样时,我都会使用基本trapezoidal integration从acc到速度和速度移动到位置。我有一个“识别窗口”可以抛出静止错误,还有一个“运动结束检测”代码,用于在给定数量的计数加速度为0后将速度设置回0。
它正在以时尚的方式运作,我只是需要它才能更好地工作。我看到一些非常奇怪的回扣,我移动加速度计,位置移动得非常正确,直到我停止,然后位置“踢回”几英寸 - 有时几乎回到我开始的地方。带给我的朋友比我聪明得多,他建议我使用4或5个数据点而不是我在梯形积分中使用的最后两个数据点更智能地集成。
所以我的问题:我怎样才能使用最后的四个或五个数据点来比基本的梯形积分更精确地集成?我试过调查Euler和RK4但是我已经很久了我做了更高级别的数学,我不知道从哪里开始。如果有人能够简单地解释,那就太棒了。谢谢。对于后台,此代码全部在微型计算机上运行,因此我无法通过matlab运行数据。
PS。我还建议使用高通滤波器,但同样,当我尝试开始读取数字高通滤波器时,我无法理解它。我以为我会从更聪明的整合开始,看看它是做什么的。
答案 0 :(得分:0)
虽然OP在发布后的两年内无疑已经解决了这个问题,但我正在回应,因为我遇到了同样的问题并在阅读完这个问题后发现了解决方案。
对于OP的目的,梯形积分甚至整合的中点估计都可以正常工作。对于表示这种简单运动的曲线,不需要更复杂或更精确的积分,并且对这个特定问题没有帮助。
描述的问题是位置被正确跟踪一段时间,但是当设备停止移动时位置会向后跳跃。出现此问题的原因是速度阻尼使用不当。
当设备移动然后停止时,会出现瞬间加速,然后是一段恒速运动(零加速),然后是一段减速(降低速度),直到设备再次处于静止状态。
OP报告使用
“运动结束检测”代码,将速度设置回0后 对于给定数量的计数,加速度为0。
OPs问题很可能是在恒定速度运动期间,加速度为零,因此在这种降噪(衰减)算法的尝试中人为地将速度重置为零。随后的减速然后在一段时间内产生负速度,将计算出的位置几乎一直返回到起点。
如果跟踪小的离散运动,这个特定问题的一个解决方案是检测并跟踪加速循环 - >滑行 - >减速并仅在循环的减速部分完成后应用阻尼算法。