标签:
当今的智能手机已经集成了众多的传感器设备,比如温度传感器、气压传感器、光线传感器等。在实际使用过程中,每个传感器都有自己的作用。今天聊聊关于方位传感器的使用。
方位传感器即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角度,并不能检测手机的正反面翻转动作。
下面是方位传感器的测试视频:
優科技(YourTechnic)的博客:http://www.yourtechnic.com:7080/wordpress
标签:
原文地址:http://blog.csdn.net/xuing/article/details/46007225