0

加速度計の読み取り値を使用して、初期位置に関する脚の角度を瞬時に計算しようとしています。

これに近づくにつれて、平均化された重力ベクトルを記録し、現在の読み取り値とそれの間の角度を計算する必要があると判断しました。

理論的にはもっともらしく思われます: 重力の読み取り値は脚の位置ごとに異なるため、静止位置では、開始時の読み取り値に関して、脚の角変位を見つけるために使用できるベクトルに読み取り値が収束するはずです。

ただし、いくつかの組み合わせを試しました。Z 成分と Y 成分のみを使用した両方のベクトル間の角度 ( thisを使用)。重力と電流の差ベクトルを計算し、atan2(dY,SQRT(dX^2+dZ^2)); を実行します。atan2(dY,dz)... を計算します (ここで、dY と dZ は、それぞれ Y 成分と Z 成分の現在のベクトルと重力ベクトルの減算です)

これらの解決策はどれも機能していないように見えるので、これができるかどうか疑問に思っています。

誰かがこれに対する解決策を持っていますか?

4

1 に答える 1

1

画面がユーザーと同じ方向を向いた状態でデバイスが脚に結び付けられていると仮定すると、画面の表面と東北平面の間の角度として角度を計算できます。ここで、角度が東北平面の下か上かを知るために、さらに作業を行う必要があるという考えを示します。角度は次のように計算できます。

Math.acos(event.values[3] / norm of event.values[3]);  

したがって、ユーザーが立っている場合、角度は規則に応じて 90 または -90 になります。脚が上に移動すると、角度の絶対値が減少します。太ももが東北平面に平行な場合、つまり画面が平らで脚が上に動くと、脚が下に動くのと同じ角度になるので、これを理解するにはもう少し情報を使用する必要があります。
画面がユーザーの向いている方向に直交している場合、東北平面と画面に直交する平面の間の角度を計算する必要があります。event.values 0 or 1デバイスが縦向きか横向きかに応じて、おそらく上記の式になります。

于 2013-03-29T19:54:34.550 に答える