androidメトリックの地球座標系に対する加速度
1974 ワード
1.android測定データ
(1)androidデバイス座標系
(2)方向センサ
Androidの方向センサは3つのデータを取得できる.
orientation 0:y軸の水平面での投影は正北方向からずれた角度で,範囲は0〜359度,正北は0,正東は90,正南は180,正西270であった.
orientation 1:y軸とy軸の水平面への投影の角度、すなわちy軸と水平面との挟み角.
orientation 2:x軸とx軸が水平面に投影される角度、すなわちx軸と水平面との挟み角.
(3)加速度センサ
Androidの加速度センサは3つのデータを取得できる.
accelerometerX:x軸方向の加速度-重力加速度のx軸上の成分.
accelerometerY:y軸方向の加速度-重力加速度のy軸上の成分.
accelerometerZ:z軸方向の加速度-重力加速度のz軸上の成分.
上記の2つのセンサによれば、携帯電話x,y,z軸の地上参照系に対する方向と携帯電話の携帯電話参照系に対する加速度を測定することができる.
私たちのプロジェクトの必要性から、携帯電話の地上参照系に対する加速度を測定するために、いくつかの計算が必要です.
2.地面参照系に対する加速度の算出
構想:携帯電話座標系に対する3つの加速度を地上参照系の3方向に対して分解し,さらに分解後の加速度成分を地上参照系の3方向に基づいて加算合成する.地面参照系に対する加速度が得られる.
計算に先立ち、地面参照系の3方向を定義し、垂直方向を1、水平方向を北へ2、水平方向を東へ3とする.
(1)y軸
まずy軸の単位ベクトルの地上参照系における3方向の成分を求める.(ここのo 1はorientation 1であり、このように推す)
y0 = (-Math.sin(o1));
y1 = Math.cos(o1)*Math.cos(o0);
y2 = Math.cos(o1)*Math.sin(o0);
(2)x軸
temp = Math.acos(-(Math.tan(o1)*Math.tan(o2)));
x0 = (-Math.sin(o2));
x1 = Math.cos(o2)*Math.cos(o0+temp);
x2 = Math.cos(o2)*Math.sin(o0+temp);
(3)z軸
z0 = x2*y1-x1*y2;
z1 = x0*y2-x2*y0;
z2 = x1*y0-x0*y1;
(4)地上参照系の3方向に対する加速度を算出する(ここでのaxはaccelerometerXであり、これに類する)
a0 = ax*x0+ay*y0+az*z0+SensorManager.STANDARD_GRAVITY;(ここでは標準重力加速度を加えてデフォルトの重力加速度を相殺します)
a1 = ax*x1+ay*y1+az*z1;
a0 = ax*x2+ay*y2+az*z2
このようなa 0,a 1,a 2データは,携帯電話の地上参照系に対する絶対加速度である.
(1)androidデバイス座標系
x<0 x>0
^
|
+-----------+--> y>0
| |
| |
| |
| | / z<0
| | /
| | /
O-----------+/
|[] [ ] []/
+----------/+ y<0
/
/
|/ z>0 (toward the sky)
O: Origin (x=0,y=0,z=0)
, , , x , y , x y
z , ,z 。
(2)方向センサ
Androidの方向センサは3つのデータを取得できる.
orientation 0:y軸の水平面での投影は正北方向からずれた角度で,範囲は0〜359度,正北は0,正東は90,正南は180,正西270であった.
orientation 1:y軸とy軸の水平面への投影の角度、すなわちy軸と水平面との挟み角.
orientation 2:x軸とx軸が水平面に投影される角度、すなわちx軸と水平面との挟み角.
(3)加速度センサ
Androidの加速度センサは3つのデータを取得できる.
accelerometerX:x軸方向の加速度-重力加速度のx軸上の成分.
accelerometerY:y軸方向の加速度-重力加速度のy軸上の成分.
accelerometerZ:z軸方向の加速度-重力加速度のz軸上の成分.
上記の2つのセンサによれば、携帯電話x,y,z軸の地上参照系に対する方向と携帯電話の携帯電話参照系に対する加速度を測定することができる.
私たちのプロジェクトの必要性から、携帯電話の地上参照系に対する加速度を測定するために、いくつかの計算が必要です.
2.地面参照系に対する加速度の算出
構想:携帯電話座標系に対する3つの加速度を地上参照系の3方向に対して分解し,さらに分解後の加速度成分を地上参照系の3方向に基づいて加算合成する.地面参照系に対する加速度が得られる.
計算に先立ち、地面参照系の3方向を定義し、垂直方向を1、水平方向を北へ2、水平方向を東へ3とする.
(1)y軸
まずy軸の単位ベクトルの地上参照系における3方向の成分を求める.(ここのo 1はorientation 1であり、このように推す)
y0 = (-Math.sin(o1));
y1 = Math.cos(o1)*Math.cos(o0);
y2 = Math.cos(o1)*Math.sin(o0);
(2)x軸
temp = Math.acos(-(Math.tan(o1)*Math.tan(o2)));
x0 = (-Math.sin(o2));
x1 = Math.cos(o2)*Math.cos(o0+temp);
x2 = Math.cos(o2)*Math.sin(o0+temp);
(3)z軸
z0 = x2*y1-x1*y2;
z1 = x0*y2-x2*y0;
z2 = x1*y0-x0*y1;
(4)地上参照系の3方向に対する加速度を算出する(ここでのaxはaccelerometerXであり、これに類する)
a0 = ax*x0+ay*y0+az*z0+SensorManager.STANDARD_GRAVITY;(ここでは標準重力加速度を加えてデフォルトの重力加速度を相殺します)
a1 = ax*x1+ay*y1+az*z1;
a0 = ax*x2+ay*y2+az*z2
このようなa 0,a 1,a 2データは,携帯電話の地上参照系に対する絶対加速度である.