手机方位传感器的使用经历

当今的智能手机已经集成了众多的传感器设备,比如温度传感器、气压传感器、光线传感器等。在实际使用过程中,每个传感器都有自己的作用。今天聊聊关于方位传感器的使用。

方位传感器即Orientation Sensor。它的数据是利用加速度计和地磁场传感器计算得到的。在网上能够查到的关于方位传感器的解释为:

方位传感器由x、y、z三轴坐标表示。

技术分享

三轴坐标返回的都是角度值。以度为单位。

第一个角度:Azimuth (degrees of rotation around the z axis).

表示手机自身的y轴与地磁场北极方向的角度,即手机顶部朝向与正北方向的角度。

当手机绕着自身的z轴旋转时,该角度值将发生改变。

范围从0到360度。

 

第二个角度:Pitch (degrees of rotation around the x axis).

表示手机顶部或尾部翘起的角度。

当手机绕着自身的x轴旋转,该角度会发生变化,值的范围是-180到180度。

当z轴正向朝着y轴正向旋转时,该角度是正值;当z轴正向朝着y轴负向旋转时,该角度是负值。

假设将手机屏幕朝上水平放在桌子上,如果桌子是完全水平的,该角度应该是0。

假如从手机顶部抬起,直到将手机沿x轴旋转180度(屏幕向下水平放在桌面上),这个过程中,该角度值会从0变化到-180。

如果从手机底部开始抬起,直到将手机沿x轴旋转180度(屏幕向下水平放在桌面上),该角度的值会从0变化到180。

 

第三个角度:Roll (degrees of rotation around the y axis).

表示手机左侧或右侧翘起的角度。

当手机绕着自身x轴旋转时,该角度值将会发生变化,取值范围是-90到90度。

当z轴正向朝着x轴正向旋转时,该角度是负值;

当z轴正向朝着x轴负向旋转时,该角度是正值。

更详细的文档可以在网上查到。

         但我在实际使用过程中发现该角度的范围是0到90度。

         于是我做了个演示观察为何出现与说明的不符合。

技术分享

 

图中是我将手机的方位传感器信息以三维方式显示在图上。

其中,蓝色线表示X轴,绿色线表示Y轴,红色线表示Z轴。(看的时候有点不习惯:))

画面左上角中的data数据框中实时显示方位传感器的三轴数据,单位度。

实际测试中,发现Azimuth和Pitch的角度显示与官方文档中的说明相一致。Azimuth的角度是从0到360度。Pitch的角度是从-180到180度。而Roll的角度并非从-90到90度,而是从0到90度。

凡是不同总会有它的原因。在做Roll旋转时很清楚的看到为何只有0到90度了。

技术分享

 

技术分享

 

图中前一张是Roll角度在0-90度之间,后一张是超过90度之后的情况。

很明显能看到,坐标翻转了。

而在旋转第二个90度的时候,坐标系并没有翻转。

接着在旋转第三个90度的时候,坐标系又发生了翻转。

最后旋转的90度时,坐标系没有发生翻转。

至此,我们可以很直接的观察到,在超过第一个90度和第三个90度时,机器(手机)翻了过来。也就是说:

         利用旋转Roll角度的特性,可以检测手机正反面翻转的动作。

现在能够解释为什么Roll的角度只有0到90度了。

 

进一步再想一下,既然旋转Roll角度能够检测手机翻转的动作,那旋转Pitch角度能否也能检测手机的翻转动作哪?

技术分享

 

技术分享

 

图中前一张是Pitch角度接近180度时的情况,后一张是超过180度时变为-180度左右时的情况。

也能很明显看到,坐标并没有发生翻转。

继续旋转后一个180度后,坐标也没有发生翻转。也就是说:

旋转Pitch角度,并不能检测手机的正反面翻转动作。

下面是方位传感器的测试视频:

OrientationSensor

優科技(YourTechnic)的博客:http://www.yourtechnic.com:7080/wordpress

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。