首页 文章

利用加速度计陀螺仪计算汽车小型车的位置

提问于
浏览
1

我想计算一辆小型遥控车的位置(相对于起始位置) . 汽车在平坦的表面上移动,例如:房间地板 . 现在,我正在使用加速度计和陀螺仪 . 准确地说这个板 - > http://www.sparkfun.com/products/9623

作为第一步,我只是在x和y轴上采用加速度计数据(因为汽车在表面上移动)并对数据进行双重积分以获得位置 . 我使用的公式是:

vel_new = vel_old + ( acc_old + ( (acc_new - acc_old ) / 2.0 ) ) * SAMPLING_TIME;
pos_new = pos_old + ( vel_old + ( (vel_new - vel_old ) / 2.0 ) ) * SAMPLING_TIME;
vel_old = vel_new;
pos_old = pos_new;
acc_new = measured value from accelerometer

以上公式基于此文件:http://perso-etis.ensea.fr/~pierandr/cours/M1_SIC/AN3397.pdf

然而,这是一个可怕的错误 .

在这个论坛上阅读其他类似的问题后,我发现我需要通过陀螺仪以某种方式从上面的加速度值(每次从acc_new)中减去重力分量 . 这个想法在时间23:49的Google Tech Talks视频Sensor Fusion on Android Devices: A Revolution in Motion Processing中得到了很好的解释 .

现在我的问题是如何减去重力成分?我从陀螺仪获得角速度 . 如何将其转换为加速度,以便我可以从加速度计的输出中减去它?

3 回答

  • 2

    It won't work,这些传感器不够精确,无法计算位置 .

    原因也在您所指的视频中进行了解释 .

    你能做的最好的事情就是根据车轮的转速来获得速度 . 如果您还知道属于速度的航向,则可以将速度积分到位置 . 远非完美但它应该给你一个合理的位置估计 .

    我不知道你怎么能得到汽车的 Headers ,这取决于你的硬件 .

  • 0

    我担心阿里的答案对于那些设备来说是完全正确的 . 但是你为什么不尝试搜索arduino dead reckoning,它将涵盖人们尝试类似电路板的故事?

    这是我认为可能对您有所帮助的搜索后出现的链接:

    Converting IMU to INS

    即使看起来所有这些都失败了,您可能会遇到变通方法,这会将误差降低到可接受的数量,或者使用其他传感器校准您的算法,使其恢复正常,因为加速度的平方误差以及陀螺仪白噪声会破坏精度 .

  • 0

    您遇到巨大错误的一个原因是该等式似乎是错误的 .

    示例:要获取更新的vel,请使用.. Velnew=velold+((accelold+accelnew)/2)*sampletime .

    看起来你在等式中有一个额外的加速项 . 单独使用这个不会纠正所有的错误....需要正如你所说的那样对重力和其他事物的影响是正确的 .

相关问题