陀螺仪传感器漂移及正确角度估算

6

我正在使用LG Optimus 2x智能手机(陀螺仪和加速度传感器)进行定位。

我想从陀螺仪中获取正确的旋转角度,以便后续用于身体到地球坐标的转换。我的问题是:

如何测量和消除陀螺仪传感器中的漂移。

一种方法是在移动设备静止时对陀螺仪样本进行平均,并将其从当前样本中减去,但这并不是一个好方法。

当移动设备处于旋转/运动状态时,如何获取无漂移的角度?

3个回答

2
我是一个指南针应用程序的作者,该应用程序集成了磁力和陀螺仪传感器的数据(steady compass)。我主要在运行Android 2.2的LG Optimus Black上进行了测试,因此我将分享我的经验:
  • 陀螺仪读数非常准确。这个传感器与加速度计和磁性传感器完全相反,后者会产生很多抖动。
  • 陀螺仪的读数(即角速度)根本不会漂移。如果你只是整合陀螺仪的读数,你会在方向估计中出现漂移。由于你在不同时间内整合样本,所以你只会得到一个逼近值,每次整合步骤后都会变差。
  • 为了避免方向估计中的漂移,你必须考虑其他输入源来纠正来自陀螺仪数据整合的结果。解决方案是整合来自方向传感器(磁性+加速度)和来自陀螺仪的数据。
小心使用LG手机:根据Android API,陀螺仪将返回以rad/s为单位的数据。Froyo版本的LG Optimus Black以degrees/s为单位给出读数。该手机的Android 2.3更新刚刚发布。我必须测试新版本是否符合规格。
你的手机使用的是哪个Android版本?你是否测试过任何使用陀螺仪的应用程序?你得到了预期的结果吗?

嗨jap1968,我也在使用同样的LG Optimus 2x。最初是安卓2.2版本,我注意到陀螺仪信号没有漂移,只有由于震动和突然变化引起的漂移。当我升级到安卓2.3.4版本时,我注意到两件事情,第一,陀螺仪值以弧度/秒为单位,第二,现在即使手机静止不动,陀螺仪也有一些偏移值,在Froyo 2.2版本中,陀螺仪信号几乎为零,没有偏移。你有没有观察到相同的情况?如果你测试过,请评论一下。问候Navigator - Navigator
本地供应商(Orange Spain)尚未发布升级,因此用于测试的Optimus Black仍在运行Android 2.2。我还在其他配备陀螺仪的设备上测试了指南针:运行Android 3.1和3.2的平板电脑以及运行Android 2.3.x的三星Galaxy S II。在某些设备中,陀螺仪确实非常准确,而在其他设备中,即使设备完全静止,读数也不接近零。结果是:一些用户由于良好的表现给予应用程序5星评价,而另一些用户由于糟糕的表现给予1星评价。 - jap1968

2

我不认为卡尔曼滤波器实际上是在传感器管理器中实现的。你可以在http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/2.3.4_r1/android/hardware/SensorManager.java#SensorManager查看源代码。祝好,导航员。 - Navigator
当我查看源代码时,它看起来像是一个卡尔曼滤波器,但也许我被愚弄了。但无论如何,现代Android操作系统采用传感器融合技术。OP应该查看重力传感器而不是加速度传感器。重力传感器是通过组合加速度计和陀螺仪创建的虚拟传感器。它本质上是线性加速度传感器,过滤掉了运动效果。 - Edward Falk

1

基本上,陀螺仪会在长时间内漂移。而加速度计没有漂移,但往往不稳定。通过使用卡尔曼滤波器结合两个传感器的信息,您可以获得准确的姿态。对于一些人来说,更简单的方法是使用补偿滤波器。

有关更多信息,请参见此帖子: 组合陀螺仪和加速度计数据


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接