実際のカルマンフィルター


17

カルマンフィルターの説明を読みましたが、実際にどのように組み合わされるかについては明確ではありません。線形状態遷移が必要であり、同じ理由で異常検出や状態遷移の特定に役立たないため(線形状態遷移が必要)、主に機械システムまたは電気システムをターゲットにしているようです。実際には、カルマンフィルターを使用するために事前に既知であると予想されるコンポーネントをどのように見つけるのが一般的です。コンポーネントをリストしましたが、事前に知っておくべきことの理解が間違っている場合は修正してください。

これらを「事前に」知る必要はないと思います。

  • プロセスノイズw
  • 観測ノイズv
  • 実際の状態(これは、カルマンフィルターが推定しようとするものです)x

カルマンフィルターを使用するには、これらを「事前に」知る必要があると思います。

  • に適用する線形状態遷移モデル(これを事前に知る必要があるため、状態は既知の法則に準拠する必要があります。つまり、カルマンフィルターは、ある状態から別の状態への遷移がよく理解され、わずかなノイズまで決定論的-異常を発見したり、ランダムな状態変化を見つけるツールではありません)x
  • 制御ベクトルu
  • 制御ベクトル適用される入力モデルを制御します(これを事前に知る必要があるため、カルマンフィルターを使用するには、制御値がモデルにどのように影響するかを最大である程度のガウスノイズまで事前に知る必要があります。効果は線形である必要があります)u
  • プロセスノイズの共分散(ウィキペディアの記事では時間に依存しているように見えます。つまり、時間kに依存します)-事前に、また時間をかけてこれを知る必要があるように見えますが、実際には一定であると見なされます?Qk
  • (線形)観測モデルH
  • 共分散(ウィキペディアの記事でも時間に依存しているようです)-Qと同様の問題RQ

PSそして、はい、これらの多くは時間に依存していることを知っています。すべての添え字が散らかっただけです。必要に応じて、各変数名の右下の小文字を自由に想像してください。k


回答:


18

一部のコンテキストでは、カルマンフィルターの方程式に戻りましょう。

バツk+1=Fkバツk+Gkあなたはk+wkzk=Hkバツk+vk

つまり、単純なバニラKFの場合:

は完全に定義する必要があります。これは、システムの微分方程式から直接得られます。そうでない場合は、二重推定の問題があります(つまり、状態とシステムモデルの両方を推定します)。システムの微分方程式がない場合、KFは適切ではありません。Fk

は、定義により、認識できません。結局、それを知っていれば、それは推定の問題ではないでしょう!バツk

制御ベクトルは完全に定義する必要があります。追加のシステムモデリングがなければ、制御ベクトルの唯一の不確実性はAWGNであり、プロセスノイズに組み込まれる可能性があります。既知の行列Gk は、制御入力を状態に関連付けます。たとえば、補助翼の動きが航空機の横揺れにどのように影響するかなどです。これは、KF開発の一部として数学的にモデル化されています。あなたはkGk

wkQkQ

Hkzk

vkRk

単純なバニラKFの制限を回避するために実行できる膨大な数の「トリック」がありますが、これらはこの質問の範囲をはるかに超えています。


結果論:

「カルマンフィルター」をグーグルで検索すると100万件のヒットが発生しますが、注目に値するものがいくつかあります。ウィキペディアのページは、あまりにも効果的に学ぶために雑然としている:(

AVRフリークス、私はそれが本当のために使用されている場所を紹介しようとするいくつかの時間前に書いたカルマン・フィルタへのイントロ「自由の方程式」があります。

あなたが数学を恐れていないなら、上級の学部/初期の大学院レベルにある読む価値のある本がいくつかあります。BrownとHwangのいずれかを試してください。これには、すべての理論と多くのシステム例が含まれています。強くお勧めしますが、私が読んだことのないもう1つはGelbです。


1
AVR Freaksリンクの+1!とてもうまくできました。おそらくクラスでそれを使用します。:-)
ピーターK。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.