6

9 DOF (加速度計、ジャイロスコープ、磁力計) の加速度計が与えられた場合、加速度計の読み取りにおける重力の影響を除去/補正したいと考えています (加速度計は自由に回転できます)。センサーは、(磁気) 北、西、および上参照フレームに対する四元数表現で方向を示します。

これを見つけましたhttp://www.varesano.net/blog/fabio/simple-gravity-compensation-9-dom-imus が、与えられた方程式の根拠を理解できませんでした。

上記の情報をどのように達成できますか?

4

2 に答える 2

14

クォータニオンによって加速度計の読み取り値を地球の参照フレームに (必要に応じて部屋の座標系に) 回転させてから、重力を差し引く必要があります。残りの加速度は、線形加速度またはユーザー加速度と呼ばれることが多い基準の地球フレームでのセンサーの加速度です。

擬似コードでは、このようなもの

acceleration = [ax, ay, ay]  // accelerometer reading

q                            // quaternion corresponding to the orientation

gravity = [0, 0, -9.81]      // gravity on Earth in m/s^2

a_rotated = rotate(acceleration, q) // rotate the measured acceleration into
                                    // the Earth frame of reference

user_acceleration = a_rotated - gravity

qAPIを介して取得できると言います。唯一の重要なステップは、rotate()関数を実装することです。

vで回転したときのベクトルのイメージを計算するにはq、次の式を適用する必要があります: v回転= q v q -1 . 浮動小数点数で計算するには、自分で式を計算する必要があります。それらはクォータニオン回転の使用 で利用できます。

私が知る限り、あなたが提供したリンクはまさに​​これを行います.そこに展開された数式が表示され、それらがどこから来たのかがわかります. また、リンクされたコンテンツは重力を g 単位で測定しているようです。つまり、重力は [0,0,-1] です。

符号規則 (重力 [0,0,-1] または [0,0,1] を考慮するかどうか) と座標系の利き手に注意してください

于 2013-08-15T13:47:46.740 に答える
0

加速度計の読み取り値はセンサー本体のフレームにあると思います。まず、加速度計のデータを慣性座標系で表し、次に重力を差し引く必要があります。四元数ではなくオイラー角を直接使用している場合は、回転行列を計算する必要があります

R = [
    ctheta*cpsi,
    -cphi*spsi + sphi*stheta*cpsi,
    sphi*spsi + cphi*stheta*cpsi;
    ctheta*spsi, cphi*cpsi + sphi*stheta*spsi,
    -sphi*cpsi + cphi*stheta*spsi;
    -stheta, sphi*ctheta, cphi*ctheta
]

(MATLAB表記で与えられます)。ここでphiは、ロール角、thetaピッチ、psiヨーを表します。このR行列は、本体から慣性系までです。飛行力学では、方向余弦行列 (DCM) の転置としても知られていると思います。

z行列乗算演算を適用する場合、静的加速度、つまり重力を除去するために、方向から重力を差し引く必要があります。

于 2016-11-13T00:36:32.710 に答える