我想计算一个小型遥控汽车的位置(相对于起始位置)。汽车在平坦的表面上移动,例如:房间地板。现在,我使用的是加速度计和陀螺仪。准确地说,这块板--> 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中)中减去重力分量。这个想法在谷歌技术讲座视频Sensor Fusion on Android Devices: A Revolution in Motion Processing中得到了很好的解释,时间是23:49。
现在我的问题是如何减去重力分量?我从陀螺仪得到角速度。如何将其转换为加速度,以便从加速度计的输出中减去它?
发布于 2012-06-19 00:59:25
It won't work,这些传感器不够精确,无法计算位置。
原因在你提到的视频中也有解释。
你能做的最好的就是得到基于轮子转速的速度。如果你也知道属于速度的航向,你可以积分速度来得到位置。这远不是完美的,但它应该给你一个合理的位置估计。
我不知道你怎么能知道汽车的方向,这取决于你拥有的硬件。
发布于 2013-02-13 19:27:32
当涉及到这些设备时,我恐怕阿里的答案是非常正确的。然而,你为什么不试着搜索arduino dead searching,它将涵盖人们尝试类似的板的故事?
这是一个在搜索后出现的链接,我认为它可能会对你有所帮助:
Converting IMU to INS
即使它们看起来都失败了,你也可能会遇到将误差降低到可接受的量的变通方法,或者使用其他传感器校准你的算法,将其恢复为加速度平方误差和陀螺仪白噪声破坏精度。
发布于 2015-05-23 19:48:32
你有一个巨大的错误的原因之一是方程似乎是错误的。
示例:要获取更新的vel,请使用..Velnew=velold+((accelold+accelnew)/2)*sampletime。
看起来你在方程式中多了一个加速项。单独使用此选项不会将所有error....need更正为您所说的针对重力和其他影响的更正。
https://stackoverflow.com/questions/11087076
复制相似问题