現在、アンドロイド携帯電話で傾き補正された直線加速度計を開発中です。私が基本的に到達したいのは、センサーフレームではなく、地球フレームにある加速です。私はまた、私のベクトルの重力を自由にしたい。加速度計のX軸は、陸上車両のx軸とは別個に割り振られます。したがって、ヨー補正(電話のx軸と磁気北の間の角度)は望ましくない。このため回転行列から任意の回転軸を取り除く
我々は2つのセンサ読取値を有する:
1)3×3回転行列R土フレームから(回転センサにフレーム)
2)3×1加速度ベクトル=(Xを
手動から重力を除去するために、センサのフレームから、Y、Z)^ Tは、我々は、CA a_transposed N単にアースフレームに重力ベクトルを定義:
G =(0,0,9.81)^ T
私は今、回転行列Rと重力を乗算し、ベクターからそれをsubstractことができます。結果として、'は、重力フリー加速度ベクトルである。
'= - (Rの* gを) は(この段階で' ここまで
APIのソフトウェアセンサーLINEAR_ACCELERATIONと同じ値を持っている)すべてが正常に動作します。
は、今私は、アカウントにしてZ軸の回転角を取ることなく、私の直線加速度ベクトルに地球フレームで」を回転したいです。最初そうするために、私はそれのtranposeに等しい回転行列Rの逆行列を計算する:
R ^( - 1)= R^T
そしてiが「を乗算しますをR ^( - 1)とし、アースフレームに戻します。
「= R ^( - 1)*」自分の携帯電話は、磁北を向いている場合、私は、チルト補償線形加速度データを持っているこのステップで
、私はまた、Z軸回りに回転しているので、その必要ない。最終的な正しい結果を得るためにはz軸の周りを回転させる必要があります。この目的のために、ヨー行列である回転行列からオイラー角(z軸周りの回転)を計算しました。そしてヨー角を使って逆方向にベクトルを1回転させた。これは最終的な補正ステップですが、オイラー角を使用するコストがあります。
この方法は、ロール角度が90度で、ジンバルロックが発生した場合でも、携帯電話を直接上向きに保持すると機能しません。私の計算したヨー角はであり、これはであり、逆回転に失敗します。
私の質問は、オイラー角を使用せずにz軸を無視してx軸とy軸の周りを回転することができるように回転行列を変更/変更する方法です。
私がチェックしalreadているが、それは私を助けたのdidnt: How do I remove axis from a rotation matrix?
これは不明です。電話が北向きで東を加速している場合、**は**東を指します。あなたはそれをどのように指摘したいですか?電話機が上を向いて東を加速している場合、**は**東を指します。あなたはそれをどのように指摘したいですか? – Beta
携帯電話は車両の中に置かれ、電話のx軸は車の前側である車のx軸(gpsによる別の較正ステップで)に割り当てられます。電話が北に面して東を加速していて、電話のx軸が東を指している場合、それは問題ありません。 – kolpazar
それでは、なぜ「最終的な正しい結果を得るためには、あなたは反復しなければなりませんか? – Beta