标签:android rotation android-sensors
我正在开发一款使用Android传感器的应用程序,以帮助车辆在室内导航.作为我对不同传感器的评估过程的一部分,我想尝试“旋转矢量”传感器.由于各种原因,磁场读数对我的位置不是很有用,因此我想尝试“游戏旋转矢量”传感器(传感器融合,可从API级别18及更高版本获得). description表示它与常规旋转矢量传感器相同,除了没有使用磁场信息来校正垂直轴周围的陀螺仪漂移.
在寻找有关旋转矢量传感器的信息时,我遇到了来自Google的example,他们使用3d立方体显示旋转矢量传感器.它工作得非常好,除了对局部磁场非常敏感(我远北,更糟糕的是,因为这里的水平分量非常小).
由于长期漂移可以通过其他参考数据(地图信息)进行补偿,我想为我的应用程序使用游戏旋转矢量传感器.但是,在示例代码中将所有引用从“TYPE_ROTATION_VECTOR”更改为“TYPE_GAME_ROTATION_VECTOR”时,立方体不再对围绕垂直轴的旋转做出反应(例如,我旋转我的椅子,将设备放在我面前).在另外两个方向上倾斜设备移动了立方体.我也注意到这次立方体更加“迟钝”,对任何运动反应都非常缓慢.
这是游戏旋转矢量传感器应该工作的方式(例如,忽略任何Z轴旋转)?这是有道理的,因为在后排座位上玩的游戏玩家不应该受到车辆转弯的影响,但同时它与Google提供的描述(我的第一个链接)不同.根据描述,我的印象是它会慢慢漂移,而不是忽略所有的旋转.
对于这个问题的任何意见,我将深表感谢.
最好的祝福,
约翰
解决方法:
好的,万一有人碰巧发现这个,这是我的发现:
游戏旋转矢量传感器确实检测绕垂直轴的旋转.在大多数情况下它非常准确.
然而,它有几个问题……首先,在静止时它会加速水平漂移(即使基于陀螺仪的方向具有线性漂移).对于我的设备,游戏旋转矢量开始很好,但加速,最后在一个小时内漂移超过400度.
其次,更令人不安的是,它似乎没有忽略磁场,这与官方描述(在问题中相关)相反.我试着在停车场周围驾驶,我的设备固定在乘客座位上,游戏旋转矢量很大程度上落后(在一次完整旋转超过40秒后超过180度),而集成的陀螺仪数据准确无误度.当陀螺仪在零度左右徘徊时,它也显示出旋转的变化,这表明它实际上补偿了(我认为是)磁场的变化.
我仍然不知道为什么它在我之前链接的测试应用程序中表现得很糟糕,但我已经决定使用互补滤波器来组合加速度计和陀螺仪数据.
标签:android,rotation,android-sensors 来源: https://codeday.me/bug/20190609/1205163.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。