背景:我的目的是弄清楚手机的倾斜角度,例如对于游戏,其中向后倾斜手机意味着“踩油门”,向左/向右倾斜则意味着向左和向右转动方向盘.
我在看this talk关于不同Android传感器之间的传感器融合.
在演讲的最后,看来我可以使用“来自旋转矩阵的向量来找出我要指向的方向”.
问题:那样,是否意味着获得这些角度的正确方法将是“Using the Rotation Vector Sensor”/TYPE_ROTATION_VECTOR?
如果是,那么我的问题现在是具体的:设备使用TYPE_ROTATION_VECTOR传感器需要使用哪些传感器?我的猜测是加速度计的初始值加上陀螺仪的校正(再加上指南针的附加校正)?
额外的信用问题:在哪里可以找到符合该标准的设备列表?和/或是否有人建议使用具有所需传感器的超便宜设备?
解决方法:
简短答案:
旋转矢量传感器:加速度计,陀螺仪和地磁场.
游戏旋转矢量传感器:加速度计和陀螺仪.
地磁旋转矢量传感器:加速度计和地磁场.
长答案:
根据传感器文档,旋转矢量传感器使用加速度计,同时使用陀螺仪和地磁场进行绝对旋转校准.
他们还提供了游戏旋转矢量传感器和地磁旋转矢量传感器,它们与之非常相似,但是有所不同,并且经常用于其他目的.
游戏旋转矢量传感器仅使用陀螺仪进行校准,并且更适合测量相对旋转,并且不受磁场变化的影响.
地磁旋转矢量传感器使用磁力计而不是陀螺仪进行校准,因此降低了功耗.建议在后台使用,并与批处理结合使用.
现在,大多数设备都具有9轴IMU,其中包括加速度计,陀螺仪和磁力计x 3轴.因此,使用该传感器应该没问题.唯一需要担心的是,某些设备可能不提供上述“软件传感器”实现,因此您可能需要自己进行传感器融合.
希望这可以帮助!