目前,我在读取Android旋转矢量的值时遇到了一些问题。正如Android文档所解释的,旋转矢量是陀螺仪、磁强计和加速度计的传感器融合。当装置处于平直位置时,旋转矢量的参考框架为X向东,Y向北,Z垂直。
所有这些特点在我的应用中都是正确的和有效的。
现在的问题是:旋转矢量在一定程度上似乎非常不准确。首先,旋转矢量的值似乎滞后于实际的运动,其次,旋转矢量的值确实受到device的快速运动的影响。
为了排除我的实现所犯的任何错误,我们还测试了一个google的演示应用程序。源代码位于这里。在这个演示中,旋转矢量在快速运动中似乎部分滞后和不可靠。
有没有其他人遇到过仙女座旋转矢量的问题?
下面是我的做法:注册传感器和侦听器:
sensorManager.registerListener(this, gravitySensor, SensorManager.SENSOR_DELAY_FASTEST, handler)
读取值并创建用于OpenGL呈现的旋转矩阵:
@Override
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_ROTATION_VECTOR) {
SensorManager.getRotationMatrixFromVector(rotationMatrix4D, event.values);
}
}
编辑:我正在开发三星银河S3迷你。也许只是这个设备的感应器没那么好。
发布于 2015-10-07 18:08:54
在深入研究了Android在不同设备上的旋转矢量之后,我发现这个传感器确实是不准确的。
因此,有很多可能得到一个更准确和稳定的方向。1.平滑旋转矢量随时间的变化。2.与旋转矢量和陀螺仪等进行传感器融合。
我的方法是存储初始旋转矢量,然后使用陀螺仪计算设备的实际方位。由于陀螺仪很可能会受到漂移的影响,所以每隔几秒钟我就重新设置旋转矢量的方向。
https://stackoverflow.com/questions/32796748
复制相似问题