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)里這樣設置很好看。 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM