タグ付けされた質問 「ekf」

2
EKFの視覚化とデバッグ
現在、EKF(拡張カルマンフィルター)のデバッグと調整を行っています。タスクは、ランドマークがARマーカーである従来の移動ロボットポーズトラッキングです。 ある測定値が推定値にどのように影響するかに驚かされることがあります。関係する数値と行列を調べて計算すると、更新手順がどのように実行されたのか、何がなぜ起こったのかがわかりますが、これは非常に退屈です。 だから、EKF更新ステップで何が起こっているのかをよりよく感じるために、誰かが何らかのテクニック、トリックまたは巧妙な視覚化を使用しているのだろうか? 更新#1(より具体的で、私が念頭に置いているものの最初の近似値を表示します) 私が探しているのは、測定の各コンポーネントが状態の各コンポーネントにどのように影響するかの感覚を与える方法で、1つの更新ステップを視覚化する方法です。 私の最初のアイデアは、測定値とその予測をKマトリックスから取得したいくつかのベクトルと一緒にプロットすることです。Kのベクトルは、イノベーションベクトル(測定-測定予測、プロットではない)が状態の各コンポーネントにどのように影響するかを表します。 現在、状態が2Dポーズ(x、y、angle)であり、測定も2DポーズであるEKFで作業しています。 添付画像(新しいページ/タブで開いてフル解像度で表示)で、(スケーリングされた)ベクトルK(1,1:2)(3x3マトリックスからサブマトリックスを取得するMATLAB構文)は、最初のEKF状態のコンポーネントは、現在のイノベーションベクトルK(2,1:2)によって変化します。EKFの2番目のコンポーネントがどのように変化するかなど。この例では、イノベーションベクトルは比較的大きなxコンポーネントを持ち、ベクトルK(2,1:2)-状態の2番目のコンポーネント(y座標)が最も変化します。 このプロットの問題の1つは、イノベーションベクトルの3番目のコンポーネント(角度)が状態にどのように影響するかを感じさせないことです。状態の最初のコンポーネントは、K(1:1:2)が示すものとは反対に少し増加します-イノベーションの3番目のコンポーネントがこれを引き起こしますが、現在これを視覚化することはできません。 最初の改善点は、イノベーションの3番目の要素がどのように状態に影響するかを視覚化することです。それから、共分散データを追加して、K行列がどのように作成されるかを感じてください。 更新#2現在、プロットの状態空間には、測定の各コンポーネントが位置をどのように変更するかを示すベクトルがあります。このプロットから、測定の3番目のコンポーネントが最も状態を変化させることがわかります。

1
なぜUKFの代わりにEKFを使用する必要があるのですか?
アンセンテッドカルマンフィルターは、拡張カルマンフィルターの変形であり、一次テイラー級数展開ではなく、「シグマポイント」のセットの変換に依存する異なる線形化を使用します。 UKFはヤコビアンの計算を必要とせず、不連続変換で使用でき、最も重要なことには、非常に非線形な変換のEKFよりも正確です。 私が見つけた唯一の欠点は、「EKFはしばしばUKFよりもわずかに速い」(確率論的ロボティクス)ことです。これは私には無視できるようであり、それらの漸近的な複雑さは同じようです。 それで、なぜ誰もがまだUKFよりもEKFを好むように見えるのですか?UKFの大きな欠点を見逃しましたか?

2
レーザースキャン+既知のマップを備えた拡張カルマンフィルター
私は現在、レーザースキャナーを備えたポイントロボットに拡張カルマンフィルターを実装する必要がある学校のプロジェクトに取り組んでいます。ロボットは、回転半径0度で回転し、前進することができます。すべての動作は区分的に線形です(駆動、回転、駆動)。 私たちが使用しているシミュレーターは、加速をサポートしていません。すべての動きは瞬時です。 また、ローカライズする必要のある既知のマップ(PNG画像)もあります。レーザースキャンをシミュレートするために、画像のレイトレースを行うことができます。 私のパートナーと私は、使用する必要があるモーションモデルとセンサーモデルについて少し混乱しています。 これまでのところ、状態をベクトルとしてモデル化しています。(x,y,θ)(x,y,θ)(x,y,\theta) 次のように更新式を使用しています void kalman::predict(const nav_msgs::Odometry msg){ this->X[0] += linear * dt * cos( X[2] ); //x this->X[1] += linear * dt * sin( X[2] ); //y this->X[2] += angular * dt; //theta this->F(0,2) = -linear * dt * sin( X[2] ); //t+1 ? this->F(1,2) = linear …

1
イノベーションステップekfローカリゼーション?
センサーからの観測束があり、ランドマークの予測測定値を取得できるマップがあるとします。補正ステップのEKF位置測定では、各観測値を予測された測定全体と比較する必要がありますか?この場合、2つのループがありますか?または、各観測値と各予測測定値を比較するだけですか?したがって、この場合は1つのループがあります。私は、センサーがすべてのランドマークのすべての観測値をスキャンごとに提供できると思います。次の図はシナリオを示しています。これで、EKFローカリゼーションを実行するたびに、が得られ、があるので、私は得ることができますziziz^{i}z^私z^i\hat{z}^{i}z私ziz^{i}z^私z^i\hat{z}^{i}z私= {z1、z2、z3、z4}zi={z1,z2,z3,z4}z^{i} = \{ z^{1}, z^{2}, z^{3}, z^{4}\}メートルmmz^私= {z^1、z^2、z^3、z^4}z^i={z^1,z^2,z^3,z^4}\hat{z}^{i} = \{ \hat{z}^{1}, \hat{z}^{2}, \hat{z}^{3}, \hat{z}^{4}\}。イノベーションのステップを得るために、これは私がやったことです ここで技術革新です。イテレーションごとに4つのイノベーションが生まれます。これは正しいです?この本の確率的ロボティクスの 204ページで、EKFローカリゼーションを使用しています。Z1=z1−z^1Z2=z2−z^2Z3=z3−z^3Z4=z4−z^4Z1=z1−z^1Z2=z2−z^2Z3=z3−z^3Z4=z4−z^4 Z^{1} = z^{1} - \hat{z}^{1} \\ Z^{2} = z^{2} - \hat{z}^{2} \\ Z^{3} = z^{3} - \hat{z}^{3} \\ Z^{4} = z^{4} - \hat{z}^{4} \\ ZZZ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.