首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >安卓传感器管理器旋转矢量(TYPE_ROTATION_VECTOR)不可靠/慢

安卓传感器管理器旋转矢量(TYPE_ROTATION_VECTOR)不可靠/慢
EN

Stack Overflow用户
提问于 2015-09-26 11:35:42
回答 1查看 2.2K关注 0票数 1

目前,我在读取Android旋转矢量的值时遇到了一些问题。正如Android文档所解释的,旋转矢量是陀螺仪、磁强计和加速度计的传感器融合。当装置处于平直位置时,旋转矢量的参考框架为X向东,Y向北,Z垂直。

所有这些特点在我的应用中都是正确的和有效的。

现在的问题是:旋转矢量在一定程度上似乎非常不准确。首先,旋转矢量的值似乎滞后于实际的运动,其次,旋转矢量的值确实受到device的快速运动的影响。

为了排除我的实现所犯的任何错误,我们还测试了一个google的演示应用程序。源代码位于这里。在这个演示中,旋转矢量在快速运动中似乎部分滞后和不可靠。

有没有其他人遇到过仙女座旋转矢量的问题?

下面是我的做法:注册传感器和侦听器:

代码语言:javascript
运行
复制
sensorManager.registerListener(this, gravitySensor, SensorManager.SENSOR_DELAY_FASTEST, handler)

读取值并创建用于OpenGL呈现的旋转矩阵:

代码语言:javascript
运行
复制
@Override
public void onSensorChanged(SensorEvent event) {
    if (event.sensor.getType() == Sensor.TYPE_ROTATION_VECTOR) {
        SensorManager.getRotationMatrixFromVector(rotationMatrix4D, event.values);
    }
}

编辑:我正在开发三星银河S3迷你。也许只是这个设备的感应器没那么好。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-07 18:08:54

在深入研究了Android在不同设备上的旋转矢量之后,我发现这个传感器确实是不准确的。

因此,有很多可能得到一个更准确和稳定的方向。1.平滑旋转矢量随时间的变化。2.与旋转矢量和陀螺仪等进行传感器融合。

我的方法是存储初始旋转矢量,然后使用陀螺仪计算设备的实际方位。由于陀螺仪很可能会受到漂移的影响,所以每隔几秒钟我就重新设置旋转矢量的方向。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32796748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档