まず最初に、このように完全かつ最適化されたセンサ フュージョン ライブラリをオープン ソースで作成していただいたことに感謝したいと思います。
設定:
私は、さまざまなベンダーの加速度センサとジャイロスコープを利用して、MCU (RTOS なし) 上でセンサ フュージョン ライブラリを実行しています。具体的には、fRun_3DOF_G_BASIC 関数と fRun_6DOF_GY_KALMAN 関数を使用します。MCU で計算され、Wifi 経由で PC に送信されたクォータニオンの方向に基づいて方向を変更して 3D キューブを表示する、PC 上で動作するプログラムを作成しました。
問題:
fRun_3DOF_G_BASIC 関数を使用すると立方体は正しく動作しますが、fRun_6DOF_GY_KALMAN の事後方向四元数「fqPl」を使用すると、立方体は顎 (z 軸) 上で異常な動作をします。最初にセンサをテーブルの上に置いたままにしておくとドリフトは発生しません (キューブは Z 軸上で回転しません)。しかし、キューブを動かしたり振ったりすると、再びセンサをテーブルの上に置いても、キューブは Z 軸上で非常に速く回転し始めます。そして、センサを傾けると、回転速度が低下します。
コードをデバッグすると、共分散マトリックスP+「fPPlus9x9[9][9]」の要素[2][2]が非常に速く増加し、センサを傾けると減少することに気付きました。
質問:
私はこの分野の専門家ではありませんが、センサがテーブルと平行な場合、加速度センサは Z 軸 (ヨー) を補正するための情報を提供できないため、Z 軸上でのこの一定の回転は、ジャイロスコープ (カルマンの前に較正されていない) のバイアスとドリフトによるものだと思います。これは 6 軸ジャイロ/Acc Fusion 構成の制限ですか?
また、コードに含まれるカルマン定数(カルマン フィルターのノイズ分散、Qw 共分散マトリックスの初期化、線形加速時間定数)がこの問題に影響しているのではないかとも思います。データシートで同様の値が見つからないため、他のセンサを使用しているにもかかわらず、これらの定数を変更していないからです。
どうもありがとうございます!
心から
カルロス、
Freescale のハードウェアを使用していないとおっしゃっていました。Windows 上で実行されている Sensor Fusion Toolbox と通信できますか?このような種類の問題を特定できるように特別に設計されています。センサーとフィルターの出力をリアルタイムで確認できるため、問題の追跡に役立ちます。それがなければ、おそらく目隠し飛行をしていることになる。
あなたが行っているように、カルマン フィルターを再初期化する必要はありません。FRDM-KL26Zと新しいFRDM-STBC-AGM01 9 軸センサ ボードに投資して、既成プロジェクトの 1 つを実行し、どのように動作するか確認することをお勧めします。
よろしくお願いいたします。
Mike
早急なご返答誠にありがとうございます、大変助かります。私のアプリケーションの問題は、カルマン フィルタがヨーに対して非常に大きな回転を継続的に予測し、3D キューブが 1 秒あたり多数の回転で回転し続けることです。SO、カルマン フィルタを 50 回の反復ごとに再初期化して停止させることでこの問題を修正しましたが、50 回目の反復に達する前に IMU を静止させると、まだ少し回転します。さらに重要なのは、IMU を回転させると、キューブを Z の 1 つの方向 (より小さな回転) に回転させることが難しい一方で、ドリフトの方向である他の Z 方向に回転させる (通常の回転) 方が簡単であることです。この非常に大きなドリフトは二重積分の産物なのだろうか?常に多少のドリフトはあると思いますが、Madgwick フィルターを使用してこれがうまく機能していることを確認したので、私が実験しているほど大きくはありません。そうでなければ、6DOF Acc/Gyro カルマン フィルターのヨー情報は、単純なアプリケーションでも役に立たないでしょう。しかし、何が間違っているのかがわかりません。フュージョン ライブラリの新しいバージョンをダウンロードしましたが、非常に役立つドキュメントがさらに追加されていることがわかりました。ありがとうございます!
カルロス、
正解です。6 軸加速度 + 磁気フィルターを使用しており、X、Y、Z センサ軸のいずれかが重力と揃っている場合、ジャイロ オフセット推定を修正するのに役立つ新しい情報はフィルターに入力されません。デバイスを傾けると、その軸の計算に新しい情報が導入され、修正が始まります。これがまさに、9 軸融合のために磁力計を追加する理由です。
さまざまな定数を少し調整することでパフォーマンスが向上する可能性がありますが、コードはそのままでも他のセンサに問題なく移植できることがわかっています。
まだお試しいただいていない方は、先週末このスペースに投稿した新しいバージョン 5.00 ライブラリをぜひお試しください。ヨードリフトを改善するために特別に再設計されました。
よろしくお願いいたします。
Mike