「カルマン フィルターと指数フィルターの長所と短所は何ですか? カルマン フィルターは計算が複雑ですが、システムの詳細なモデルがあるため、マルチセンサー フュージョンではより正確です (?)。」
基本的にはそれだけです。一般に、システムのモデルが優れているほど、カルマン フィルターを使用しているかどうかに関係なく、フィルターも優れています。
「指数関数フィルターは、ジッターなどがある場合のノイズ キャンセリングに役立ちます。一方、カルマン フィルターは、実際のマルチセンサー フュージョンに役立ちます。これは正しいですか?」
私はこの声明に同意しません。ノイズキャンセリングに関しては、カルマンフィルタが優れています。共分散行列に格納されているすべての情報を最大限に活用するため、ローパス フィルターよりもはるかにスマートです。見ているパフォーマンス指標が「フィルター処理された値が実際の値とどの程度一致しているか?」である場合 単純なローパスフィルターが期待できる最善のことは、そのパフォーマンスに一致することであり、それはランダムウォークの最も単純な場合のみです。興味深い状態遷移行列が得られるとすぐに、ローパスフィルターにはチャンスがないと思います。たとえば、速度の不確実性が位置の不確実性にどのように漏れるかがわからないためです。
「真の方位を推定するために磁気コンパスとジャイロスコープを組み合わせようとしています。」
これはまさに、カルマン フィルターが設計された種類のものです。
しかし、カルマン フィルターの実装の複雑さが気になる場合は、ローパス フィルター バージョンの実装から始めます。
1) 簡単なシミュレーションから始める
predictedAngle = oldAngle+rotationRate*dt
2) 測定値に基づいてシミュレーションの状態を更新します
rotationRate = alpha1*rotationRate +(1-alpha1)*gyro.rotationRate
filteredAngle = alpha2*predictedAngle+(1-alpha2)*compass.angle
これは基本的に、このシステムのカルマン (最も単純な) フィルターのフレームワークです。不足しているのは次のことだけです。
- すべて行列形式で書く
- シミュレーション ステップ中に「プロセス ノイズ」を追加する
alpha
の固定値を使用する代わりに、 「最適なカルマン ゲイン」を計算するステップを追加します。
- フィルターの共分散を更新するステップを追加します。
「また、センサーフュージョンに遺伝的アルゴリズムはどの程度有用ですか?」
それらがどこに収まるかわかりません。詳しく説明していただけますか?