Man*_*noi 5 android android-sensors
我试图使用Android设备旋转来控制车辆的转向.
Samsung Galaxy S4(运行Android 4.4.2)上不存在TYPE_GAME_ROTATION_VECTOR..我通过获取所有可用传感器的列表来确认.
有没有办法可以丢弃磁力计数据TYPE_ROTATION_VECTOR?
除忽略磁力计输入外,TYPE_GAME_ROTATION_VECTOR与TYPE_ROTATION_VECTOR相同.
可以通过为TYPE_GRAVITY和TYPE_GYROSCOPE进行传感器融合来实现吗?
任何参考将不胜感激.
您绝对可以使用加速度计和陀螺仪的组合来检测设备旋转(“重力”是两者的融合,其中陀螺仪用于使数据更平滑且响应更灵敏)。
根据我自己的测试,游戏旋转矢量传感器受到磁场数据的影响(可能通过陀螺仪偏置消除间接影响),因此您可能应该找到另一种解决方案(我的测试是在汽车中跟踪旋转,与仅四处走动相比,转弯)汽车的磁场干扰了旋转 - 我制作了一个视频,比较游戏旋转矢量数据与仅在此处集成陀螺仪输出)。
如果没有磁场数据,您将始终存在漂移(水平面中旋转误差的缓慢累积)。您需要做的主要部分是随着时间的推移整合陀螺仪数据(请参阅Google 自己的关于使用陀螺仪数据跟踪旋转的代码)。
为了防止垂直漂移,您必须使用加速度计来跟踪重力相对于设备的位置,并将其与陀螺仪数据结合起来。通常建议的方法是使用卡尔曼滤波器,但根据您的应用程序,这可能会不必要地复杂,因此我建议使用所谓的互补滤波器,它可以描述为融合来自低通的数据经过过滤的、嘈杂但稳定的信号(加速度计)和针对响应但漂移的信号(陀螺仪)的高通滤波器。可以在这里找到有关卡尔曼和互补滤波器的丰富资源。
| 归档时间: |
|
| 查看次数: |
1939 次 |
| 最近记录: |