Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何使用陀螺仪获得计算的初始方向?_Android_Orientation_Accelerometer_Sensors_Gyroscope - Fatal编程技术网

Android 如何使用陀螺仪获得计算的初始方向?

Android 如何使用陀螺仪获得计算的初始方向?,android,orientation,accelerometer,sensors,gyroscope,Android,Orientation,Accelerometer,Sensors,Gyroscope,我的问题可能很简单,但也可能是我完全错了——因此我决定问。最后,我将利用陀螺仪传感器的数据计算手机的方位。我知道我应该使用卡尔曼滤波器或互补滤波器来处理陀螺漂移。我将在第二步中这样做,但我在这里提出的问题对于两种方法都是一样的。因此,真正的问题是: 从陀螺仪我只得到角度变化(积分后)。所以我需要的是一些初始值,我可以将当前测量的变化添加到。但是我怎么才能得到这个起点呢?我是否使用加速计和磁强计来确定手机的方向?还有更好的办法吗 如果有必要的话,我会使用安卓系统来实现这一点,并通过加速计和磁强计来

我的问题可能很简单,但也可能是我完全错了——因此我决定问。最后,我将利用陀螺仪传感器的数据计算手机的方位。我知道我应该使用卡尔曼滤波器或互补滤波器来处理陀螺漂移。我将在第二步中这样做,但我在这里提出的问题对于两种方法都是一样的。因此,真正的问题是:

从陀螺仪我只得到角度变化(积分后)。所以我需要的是一些初始值,我可以将当前测量的变化添加到。但是我怎么才能得到这个起点呢?我是否使用加速计和磁强计来确定手机的方向?还有更好的办法吗


如果有必要的话,我会使用安卓系统来实现这一点,并通过加速计和磁强计来确定手机的方向,但这是非常不准确的。

使用任意方向作为初始方向

任何合理的过滤器都必须从中恢复,并迅速收敛到实际方向


我使用了中描述的过滤器。我通过限定
总体校正
(第27页)来处理问题。工作起来很有魅力

这很有趣。然后我将尝试使用互补滤波器,并检查它将如何工作。谢谢你的链接。别忘了:你必须确保不会出现饱和。在我的测试中,边界
TotalCorrection
就足够了。祝你好运谢谢你的评论。如果我没弄错的话,饱和是一个可能发生的问题,如果设备的旋转速度比陀螺仪的测量速度更快(或者更好地说,在一段时间内旋转得更多)?你通过限定总的修正值来解决这个问题?如果我再次做对了,这对我来说没有问题,因为我不会做任何平衡或修正,而是“简单地”确定我的手机的方向。对不起,我太马虎了(如果您从任意方向开始,则
TotalCorrection
可能会变得非常大,因为方向中明显存在巨大错误。根据我的经验,值得限制
TotalCorrection
。这会使收敛速度稍慢,但过滤器将是防弹的。它需要调整,但哪个过滤器不需要调整。)做你自己的实验,你会看到的!好吧,我想说的是:注意这个。不管怎样,这个问题会出现在任何其他的过滤器上,它必须从严重的错误中恢复。如果积分结束被注意,你可以愉快地从任何位置开始,过滤器会收敛到真正的方向。这只是一个例子下面:你实现了算法吗?