在Android系统中,陀螺仪传感器的类型是TYPE_GYROSCOPE,单位是rad/s,能够测量设备X、Y、Z三轴的角加速度数据。Android中的陀螺仪传感器又名为Gyro-sensor角速度器,利用内部震动机械结构侦测物体转动所产生的角速度,进而计算出物体移动的角度。侦测水平改变的状态,但无法计算移动的激烈程度。在接下来的内容中,将详细讲解Android中的陀螺仪传感器的基本知识。
(1)陀螺仪传感器和加速度传感器的对比
在Android的传感器系统中,陀螺仪传感器和加速度传感器非常类似,两者的区别如下。
● 加速度传感器:用于测量加速度,借助一个三轴加速度计可以测得一个固定平台相对地
球表面的运动方向,但是一旦平台运动起来,情况就会变得复杂得多。如果平台做自由
落体,加速度计测得的加速度值为零。如果平台朝某个方向做加速度运动,各个轴加速
度值会含有重力产生的加速度值,使得无法获得真正的加速度值。例如,安装在60°横滚
角飞机上的三轴加速度计会测得2g的垂直加速度值,而事实上飞机相对地区表面是60°
的倾角。因此,单独使用加速度计无法使飞机保持一个固定的航向。
● 陀螺仪传感器:用于测量机体围绕某个轴向的旋转角速率值。当使用陀螺仪测量飞机
机体轴向的旋转角速率时,如果飞机在旋转,测得的值为非零值,飞机不旋转时,测
量的值为0。因此,在60°横滚角的飞机上的陀螺仪测得的横滚角速率值为0,同样在
飞机做水平直线飞行时的角速率值为0。可以通过角速率值的时间积分来估计当前的
横滚角度,前提是没有误差的累积。陀螺仪测量的值会随时间漂移,经过几分钟甚至(www.xing528.com)
几秒钟定会累积出额外的误差来,而最终会导致对飞机当前相对水平面横滚角度完全
错误的认知。因此,单独使用陀螺仪也无法保持飞机的特定航向。
综上所述,加速度传感器在较长时间的测量值(确定飞机航向)是正确的,而在较短时间内由于信号噪声的存在,而有误差。陀螺仪传感器在较短时间内比较准确而较长时间则会因为漂移而存有误差。因此,需要两者(相互调整)来确保航向的正确。
(2)物联网设备中的陀螺仪传感器
在物联网设备中,三自由度陀螺仪是一个可以识别设备,能够相对于地面绕X、Y、Z轴转动角度的感应器。无论是可穿戴设备,还是智能手机、平板电脑,通过使用陀螺仪传感器可以实现很多好玩的应用,例如指南针。
在实际开发过程中,可以用一个磁场感应器(Magnetic Sensor)来实现陀螺仪。磁场感应器是用来测量磁场感应强度的。一个三轴的磁sensor IC可以得到当前环境下X、Y和Z方向上的磁场感应强度,对于Android中间层来说就是读取该感应器测量到的3个值。当需要时,上报给上层应用程序。磁感应强度的单位是T(特斯拉)或者是Gs(高斯),1T等于10000Gs
在了解陀螺仪之前,需要先了解Android系统定义坐标系的方法,如下的文件中进行了定义
在上述文件sensors.h中,有一个如下图10-14所示的效果图。
图10-14 Android系统定义的坐标系
图10-14中表示设备的正上方是Y轴方向,右边是X轴方向,垂直设备屏幕平面向上的是Z轴方向,这个很重要。因为应用程序就是根据这样的定义来写的,所以传递应用的数据要和这个定义符合。还需要清楚磁传感器芯片贴在板上的坐标系。我们从芯片读出数据后要把芯片的坐标系转换为设备的实际坐标系。除非芯片贴在板上刚好与设备的X、Y、Z轴方向一致。
陀螺仪的实现是根据磁场感应强度的3个值计算出另外3个值。当需要时可以计算出这3个值传递给应用程序,这样就实现了陀螺仪的功能。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。