Androidセンサー紹介


Android 2.3 gingerbreadシステムでは、googleは11種類のセンサ供給用層を提供しています. 
#define SENSOR_TYPE_ACCELEROMETER       1 //   
#define SENSOR_TYPE_MAGNETIC_FIELD      2 //  
#define SENSOR_TYPE_ORIENTATION         3 //  
#define SENSOR_TYPE_GYROSCOPE           4 //   
#define SENSOR_TYPE_LIGHT               5 //    
#define SENSOR_TYPE_PRESSURE            6 //  
#define SENSOR_TYPE_TEMPERATURE         7 //   
#define SENSOR_TYPE_PROXIMITY           8 //  
#define SENSOR_TYPE_GRAVITY             9 //  
#define SENSOR_TYPE_LINEAR_ACCELERATION 10//     
#define SENSOR_TYPE_ROTATION_VECTOR     11//    

?
この11種類のセンサーを見てみましょう
 
1加速度センサ
加速度センサはG-sensorとも呼ばれ、x、y、zの3軸の加速度数値を返します.
この数値は地心引力の影響を含み,単位はm/s^2である.
携帯電話をデスクトップに並べ、x軸を0、y軸を0、z軸を9.81に設定します.
携帯電話を下にしてデスクトップに置き、z軸は-9.81です.
携帯電話を左に傾け、x軸を正の値にします.
携帯電話を右に傾け、x軸はマイナスです.
携帯電話を上に傾け、y軸はマイナスです.
携帯電話を下に傾け、y軸を正の値にします.
 
加速度センサは最も成熟したmems製品であり、市場の加速度センサの種類が多い.
携帯電話でよく使われる加速度センサーはBOSCHのBMAシリーズ、AMKの897 Xシリーズ、STのLIS 3 Xシリーズなど.
これらのセンサは一般に±2 Gから±16 Gまでの加速度測定範囲を提供し,I 2 CまたはSPIインタフェースを用いてMCUに接続され,データ精度は16 bit未満である.
 
2磁力センサー
磁力センサはM-sensorと略称し,x,y,zの3軸の環境磁場データを返す.
この数値の単位はマイクロテスラ(micro-Tesla)でuTで表される.
単位はガウス(Gauss)、1 Tesla=100000 Gaussであってもよい.
ハードウェアには一般に独立した磁力センサはなく,磁力データは電子コンパスセンサによって提供される(E−compass).
電子コンパスセンサは、以下の方向センサデータを同時に提供する.
 
3方向センサ
方向センサはO-sensorと略称し,三軸の角度データを返し,方向データの単位は角度である.
正確な角度データを得るためには、E-compassはG-sensorのデータを取得する必要があり、
O-sensorデータを計算して生成します.そうしないと、水平方向の角度しか取得できません.
方向センサは、azimuth、pitch、rollの3つのデータを提供します.
azimuth:方位、水平に戻ると磁気北極とY軸の挟み角、範囲は0°~360°です.
0°=北,90°=東,180°=南,270°=西.
pitch:x軸と水平面の挟み角は、−180°〜180°の範囲である.
z軸y軸が回転すると角度は正の値となる.
roll:y軸と水平面の挟み角は、履歴上-90°~90°の範囲である.
x軸方向z軸が移動すると角度は正の値となる.
 
電子羅盤は正確なデータを取得する前にキャリブレーションを行う必要があり、通常は8字キャリブレーション法を用いることができる.
8ワードキャリブレーション法は、キャリブレーションが必要な設備を使用して空中で8ワードの揺れを行うことをユーザーに要求する.
原則として装置の法線方向を空間のすべての8象限に指向させる.
 
携帯電話に使われる電子羅盤チップには、AKM社の897 Xシリーズ、ST社のLSMシリーズ、ヤマハ社などがある.
G-sensorデータを読み出しM-sensorとO-sensorデータを算出する必要があるため、
そのため、メーカーは一般的にバックグラウンドdaemonを提供して仕事を完成し、電子羅盤アルゴリズムは一般的に会社の私有財産権である.
 
4ジャイロセンサ
ジャイロセンサはGyro-sensorと呼ばれ,x,y,zの3軸の角加速度データを返す.
角加速度の単位はradians/secondです.
Nexus S携帯電話の実測によると:
水平反時計回りに回転し、Z軸は正です.
水平反時計回りに回転し、z軸は負です.
左に回転し、y軸は負です.
右に回転し、y軸が正です.
上向きに回転し、x軸は負です.
下に回転し、x軸は正です.
 
STのL 3 Gシリーズのジャイロセンサーが流行しており、iphone 4やgoogleのnexus sで使われている.
 
5光線センサー
光線誘導センサはリアルタイムの光線強度を検出し,光強度単位はluxであり,その物理的意義は単位面積に照射される光束である.
光線センサーは主にAndroidシステムのLCD自動輝度機能に用いられる.
LCDの輝度は、サンプリングされた光強度の数値に基づいてリアルタイムで調整することができる.
 
6圧力センサー
圧力センサは現在の圧力を返し,単位は100パスカルhectopascal(hPa)である.
 
7温度センサー
温度センサーは現在の温度を返します.
 
8近接センサー
センサーに接近して物体と携帯電話の距離を検出し、単位はセンチメートルである.
いくつかの近接センサは遠位と近位の2つの状態しか戻らない.
従って、近接センサは、最大距離を遠状態に戻し、最大距離よりも小さくて近状態に戻す.
近接センサは、電話に出るときにLCD画面を自動的に閉じて電力を節約するために使用することができる.
一部のチップは近接センサと光線センサの両方の機能を統合している.
 
 
次の3つのセンサはAndroidが新たに提案したセンサタイプで、どのアプリケーションが使用されているのかはまだよく分かりません.
9重力センサー
重力センサはGV-sensorと略称し、重力データを出力する.
地球上では重力の数値は9.8で、単位はm/s^2です.
座標系は加速度センサと同じです.
装置がリセットされると、重力センサの出力は加速度センサと同じである.
 
10リニア加速度センサ
線形加速度センサはLA-sensorと略称する.
線形加速度センサは加速度センサから重力の影響を差し引いたデータである.
単位はm/s^2で、座標系は加速度センサと同じです.
加速度センサ、重力センサ、線形加速度センサの計算式は以下の通りである.
加速度=重力+線形加速度
 
11回転ベクトルセンサ
回転ベクトルセンサはRV-sensorと略称する.
回転ベクトルは装置の方向を表し、座標軸と角度を混合して計算したデータである.
RV-sensorは3つのデータを出力します.
x*sin(theta/2)
y*sin(theta/2)
z*sin(theta/2)
sin(theta/2)はRVの桁である.
RVの方向は軸が回転する方向と同じである.
RVの3つの数値はcos(theta/2)と1つの四元群を構成する.
RVのデータは単位がなく、使用する座標系は加速度と同じである.
例:
?
1
2
3
4 sensors_event_t.data[0] = x* sin (theta/2) sensors_event_t.data[1] = y* sin (theta/2) sensors_event_t.data[2] = z* sin (theta/2) sensors_event_t.data[3] =   cos (theta/2)
GV,LA,RVの数値は物理センサなしで直接与えることができ,
G−sensor,O−sensor,Gyro−sensorはアルゴリズム計算を経て得られる必要がある.
アルゴリズムは一般的にセンサ会社の私有財産権である.
 
参考文献:
android source code hardware\libhardware\include\hardwaresensor.h 
http://www.dzsc.com/data/html/2010-11-29/87454.html