我想计算一辆小型遥控车的位置(相对于起始位置)。汽车在平坦的表面上移动,例如:房间地板。现在,我正在使用加速度计和陀螺仪。确切地说,这个板——> 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)中减去重力分量。这个想法在 Google 技术讲座视频Sensor Fusion on Android Devices: A Revolution in Motion Processing中得到了很好的解释,时间 23:49。
现在我的问题是如何减去重力分量?我从陀螺仪获得角速度。如何将其转换为加速度,以便我可以从加速度计的输出中减去它?