7

この質問はすでにどこかで何度も確実に解決されていることを知っています。その存在を知っている場合は教えてください。ありがとうございます。

簡単な要約: 3 軸加速度計から、これら 3 軸のそれぞれの重力成分を計算したいと考えています。2 軸自由体図を使用して、世界の XZ、YZ、および XY 軸における加速度計の重力成分を計算しました。しかし、解決策は少しずれているように見えます。加速度計の 1 つの軸だけが重力にさらされている極端なケースでは許容できますが、ピッチとロールが両方とも 45 度の場合、合計の大きさは重力よりも大きくなります (Xa^2+Ya^ で取得)。 2+Za^2=g^2; Xa、Ya、および Za は、X、Y、および Z 軸の加速度センサーの読み取り値です)。

詳細: デバイスは Nexus One で、3 軸加速度計に加えて、方位角、ピッチ、ロール用の磁場センサーを備えています。

世界の軸 (Z は重力と同じ方向、X または Y は北極を指しますが、これはあまり重要ではないと思いますか?) では、デバイスが YZ 軸にピッチ (P) を持っていると仮定しました。 XZ 軸上のロール (R)。それで、単純なトリガーを使用して取得しました: Sin(R)=Ax/Gxz Cos(R)=Az/Gxz Tan(R)=Ax/Az

ピッチの別のセット、P があります。

ここで、世界の軸に 3 つのコンポーネント、XZ 軸でのみ測定可能な Gxz、YZ の Gyz、および XY 軸の Gxy を持つように重力を定義しました。Gxz^2+Gyz^2+Gxy^2=2*G^2 2G は、この定義に重力が事実上 2 回含まれているためです。

ああ、そして XY 軸はもっとエキゾチックなものを生み出します...必要に応じて後で説明します。

これらの方程式から Az の式を取得し、tan90 計算の処理方法がわからないため、tan 演算を削除しました (無限大ですか?)。

だから私の質問は、私がこれを正しい/間違っているか、正しい方向に向けることができるかを知っている人はいますか?

ありがとう!DVD

4

5 に答える 5

5

あなたの質問を理解しているように、デバイスのピッチとヨーを(磁力計から)知っており、この情報を使用して(デバイス)座標軸のそれぞれに沿った重力の成分を計算したいですか?

物理学者として、私はピッチ-ヨー-ロールの代わりにオイラー角で育てられましたが、http://en.wikipedia.org/wiki/Yaw,_pitch,_and_rollを見ると、これを次のように計算します:最初はグローバル座標フレームに沿って方向付けられているため、重力はgvec:={0,0,-g}(ローカル フレーム内に) あります。ここで、yaw-pitch-roll を通過するときに gvec のローカル座標を計算する必要があります (yaw は、あなたが言及したように何もしません)。私にとって、これは回転行列で最も簡単です。角度の符号を変更する必要がありgvecます。Mathematica でこれを行います。これは私のハンマーで、これは釘だからです。

yaw = RotationMatrix[-yawangle,{0,0,1}];
pitch = RotationMatrix[-pitchangle, {0,1,0}];
roll = RotationMatrix[-rollangle,{1,0,0}];
gvec={0,0,-g}
yaw.gvec
pitch.yaw.gvec
roll.pitch.yaw.gvec

gvec出力は、ヨーイング前、ヨーイング、ピッチ、ロール後のローカル座標です(したがって、以下の最後の行が答えになるはずです)。

{0,0,-g}
{0,0,-g}
{g Sin[pitchangle],0,-g Cos[pitchangle]}
{g Sin[pitchangle],-g Cos[pitchangle] Sin[rollangle],-g Cos[pitchangle] Cos[rollangle]}
于 2010-06-07T02:59:17.470 に答える
1

投稿が古いことは承知していますが、他の人がそれを使用している場合に備えて: あなたの最後の回答では、特に大きな角度ではまだ多少のずれが見られることを示しています. 私は同じことを経験しましたが、キャリブレーションルーチンを追加して平らな面で加速度計の読み取り値をキャプチャし、その後のすべての読み取り値を平らな面の読み取り値と比較して作成したときに消えました.

于 2014-01-10T19:53:53.270 に答える
1

私もこの問題に興味があるので知りたいです。

調査を開始するのに適した場所は、http://www.diydrones.com/です。そこの人々は、航空機の自動操縦のコンテキストでこの問題をすでに解決しています。そのサイトからリンクされている大量の高品質のオープン ソース コードと、関連する数学の議論があります。

于 2010-06-07T02:04:05.223 に答える
0

ありがとうヤヌス!あなたの説明は、回転行列に関して私をちょっと啓発しました。そして最後の行は私の問題を解決しました!

今、私は何が間違っていたかを見つけるために自由体図を作り直す必要があります...重力はXY軸に直交するため、重力のXY成分を持つべきではなかったことがすでにわかりました...

再度、感謝します!

編集: 最後の行のフォローアップ: {g Sin[pitchangle],-g Cos[pitchangle] Sin[rollangle],-g Cos[pitchangle] Cos[rollangle]}

-g Cos[pitchangle] Sin[rollangle] Sin[roll] の代わりに、自由体図から実際の加速度にもっとよく似ていることがわかりました。

私が今理解できないのは、最後のコンポーネントです -g Cos[pitchangle] Cos[rollangle] これで、小さなピッチ角とロール角に最適になり、ピッチ角またはロール角のいずれかで正常に機能し、もう一方は 0 のままです。しかし、ピッチとロールの両方がもはや小さな角度 (たとえば 40 度) でなくなると、偏差が大きくなります。実際、nexus 1 で 45 ロールと 45 ピッチを実現することにも気付きました。電話の Z 軸の読み取り値は 0 で、X と Y の両方が 6.8 の加速度で表示されます。一方、45 ロールと 45 ピッチでの回転行列の乗算から得られる式は 0.5 重力になります。

方位センサーの出力に異常はありませんか?それとも、これがピッチとロールの仕組みですか?

これを説明する方法を知っている人はいますか?

ありがとう!

于 2010-06-11T11:20:18.023 に答える
0

加速度センサーから重力ベクトルを取得するのは簡単ではありません。加速度計の読み取り値から正しい重力部分を取得するには、ジャイロ (利用可能な場合) などの別のセンサーが必要です。

よろしくナビゲーター

于 2012-01-23T21:50:08.420 に答える