• Android Sensors (5) 运动传感器 Motion Sensors


    运动传感器 Motion Sensors

      Android平台提供了一些监控设备运动的传感器。

      运动传感器中有两个永远是基于硬件的,即加速度计陀螺仪accelerometer and gyroscope)。

      运动传感器中有三个是既可以基于硬件又可以基于软件的,即重力感应器、线性加速度计、旋转向量传感器

      运动传感器用来监测设备的运动,比如倾斜,震动,旋转或摇摆(tilt, shake, rotation, or swing)。

     

    运动传感器的返回值

      所有的运动传感器都返回一个多维的向量值,保存在SensorEventvalues数组中。

      参见链接:http://developer.android.com/guide/topics/sensors/sensors_motion.html

    加速度计Accelerometer

      加速度传感器测量作用于设备的加速度Ad:

       Ad = -∑Fs / mass

      公式中是施加于设备的外力之和和设备质量的比值。

     

      但是,重力加速度会影响这个公式:

      Ad = -g -∑F / mass

     

      我的理解是:Ad是设备的实际加速度(我们想知道的值),而加速度的读数是一个受到了重力影响的读数。即Ad+9.81

      比如,把设备静止地平放在桌面上,这时,Ad是零;加速度计的读数大小是重力加速度的数值g = 9.81 m/s2。这个常量值的大小可以用STANDARD_GRAVITY来表示。

      而当设备自由落体时,它以9.81 m/s2的加速度向地面运动,Ad为-9.81 m/s2,这时加速度计的读数应该是0。

     

    坐标系的设置

      当把设备平放在桌面上,以它的自然方向放置:

      如果你从设备左边推它,它往右移,这时它的X加速度值是正的;

      如果你从设备下方推它,它将朝着远离你的方向移动,这时它的Y加速度值是正的;

      如果你把设备以A m/s2的加速度推向天空,Z轴的加速度值应当等于A + 9.81,(which corresponds to the acceleration of the device (+A m/s2) minus the force of gravity (-9.81 m/s2))。

     

    重力传感器Gravity Sensor

      重力传感器测量的是重力值在三个方向上的大小。

      重力传感器和加速度传感器的单位一样m/s2,并且它们使用的坐标系也一样。

      当设备静止时,重力传感器的输出和加速度传感器的输出是完全一致的。

     

    陀螺仪Gyroscope

      陀螺仪测量的是设备绕三个轴向的旋转速度,单位是rad/s。

      所使用的坐标系统仍然和加速度计的一样。

      旋转的值在逆时针方向为正,即,如果一个观察者从某个轴的正向某点向原点看,如果观察到的旋转是逆时针的,则是一个正值的旋转。这是一个关于旋转方向的标准的数学定义,注意,这个和方向传感器所用的定义不同。

      陀螺仪的输出需要对时间积分来计算。有一个例子见:http://developer.android.com/guide/topics/sensors/sensors_motion.html

     

      标准的陀螺仪提供原始的旋转数据,对噪声和漂移没有过滤和校正。

      实际运用时,陀螺仪的噪声和漂移会引入错误,所以需要被补偿。通常可以通过其他传感器(重力传感器或加速度计)来检测噪声和漂移。

     

    线性加速度计Linear Accelerometer

      线性加速度计提供了沿着每个轴的加速度值,并且是排除了重力的值。

      即:linear acceleration = acceleration - acceleration due to gravity

      它所使用的单位和坐标系都和加速度计相同。

      线性加速度计有一个偏移值(offset),你需要移除这个偏移值,比较简单的方法是在你的应用一开始设置一个标定步骤:让用户把设备放在桌子上,然后读出三个轴的offset值,之后,在从线性加速度计中读数的时候减去这个offset值,就可以得到实际的线性加速度值。

     

    旋转向量传感器Rotation Vector Sensor

      旋转向量用一个角度和轴向的组合来表达设备的方向信息。比如,设备绕着某一个轴向旋转了一个角度 θ。

      旋转向量的三个元素的值如下:

      x*sin(θ/2)

      y*sin(θ/2)

      z*sin(θ/2)

      rotation vector的大小是sin(θ/2),方向是它的旋转轴向。

      旋转向量没有单位。

      X轴指向东,Y轴指向北,Z轴与地面垂直,指向天空。

     

    参考资料

      API Guides:Motion Sensors

      http://developer.android.com/guide/topics/sensors/sensors_motion.html

      另,今天的标题设置(圆角div)参见:http://www.cnblogs.com/mslove/archive/2009/03/24/1420703.html 

      起因就是看见人家博客(http://www.cnblogs.com/TerryBlog/archive/2013/03/13/2957158.html)里这样设置很好看。 

      

  • 相关阅读:
    eclipse新建工作空间后的常用设置
    Maven将代码及依赖打成一个Jar包的方式
    MemCache详细解读(转)
    memcached单机或热备的安装部署
    memcache的基本操作
    Java中int和String类型之间转换
    Linux中普通用户配置sudo权限(带密或免密)
    Java字符串中常用字符占用字节数
    java各种数据类型的数组元素的默认值
    validator
  • 原文地址:https://www.cnblogs.com/mengdd/p/2961954.html
Copyright © 2020-2023  润新知