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)中减去重力分量。这个想法在 Google 技术讲座视频Sensor Fusion on Android Devices: A Revolution in Motion Processing中得到了很好的解释,时间 23:49。

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

4

3 回答 3

2

它不起作用,这些传感器不够精确,无法计算位置。

您所指的视频中也解释了原因。

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

我不知道您如何获得汽车的航向,这取决于您拥有的硬件。

于 2012-06-18T16:59:24.933 回答
0

对于这些设备,恐怕阿里的回答是相当正确的。但是,您为什么不尝试搜索 arduino 航位推算,它将涵盖人们尝试类似板的故事?

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

将 IMU 转换为 INS

即使看起来它们都失败了,您也可能会遇到变通方法,这些变通方法会将错误减少到可接受的数量,或者使用其他传感器校准您的算法,使其回到正轨,因为加速度的平方误差以及陀螺仪白噪声破坏精度。

于 2013-02-13T11:27:31.883 回答
0

你有一个巨大的错误的一个原因是方程似乎是错误的。

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

看起来你在等式中有一个额外的加速项。单独使用它并不能纠正所有的错误......正如你所说的,需要纠正重力和其他事物的影响。

于 2015-05-23T11:48:32.480 回答