MSCKF アルゴリズムの概要

感謝:紫芋大根https://zhuanlan.zhihu.com/p/76341809

論文: https://arxiv.org/abs/1712.00036
コード: https://github.com/KumarRobotics/msckf_vio   

(非常に良いです。最初に理論を読むことをお勧めします) 全体的な説明: http://www.xinliang-zhong.vip/msckf_notes/

 

1.MSCKFとは何ですか?

MSCKFの正式名は、マルチステート制約カルマン フィルター (マルチステート制約下のカルマンフィルター) です。フィルターベースの VIO アルゴリズムです。これは、2007 年に Mourikis によって「ビジョンのためのマルチステート制約カルマン フィルター」で初めて導入されました。 -補助慣性航法」を提案します。MSCKF は、EKF フレームワークの下で IMU と視覚情報を統合しており、単純な VO アルゴリズムと比較して、より激しい動きや一定期間のテクスチャ損失などに適応でき、最適化ベースの VIO と比較して高い堅牢性を備えています。アルゴリズム (VINS、OKVIS) と同様に、MSCKF は同等の精度と高速な速度を備えており、コンピューティング リソースが限られている組み込みプラットフォームでの実行MSCKFはロボットやドローン、AR/VRの分野で広く利用されており、例えばGoogle Project Tangoでは姿勢推定にMSCKFが利用されています。

VO に対する VIO の利点:

  1. スケールの復元: IMU はスケール情報 (加速度計) を提供して、単眼 VO のスケールを復元できない問題を解決できます。
  2. 純粋な回転への対処: 純粋な回転の場合、VO ポーズ ソリューションは奇妙に見えますが、VIO は IMU のジャイロスコープ (角速度計) を使用して純粋な回転運動を推定できます。
  3. 画像特徴の短期的な損失に対処するには: 画像が露出過度である場合、画像が暗すぎる場合、または環境テクスチャが不十分である場合、VO は動作できません。VO が失敗した場合、VIO は IMU 積分を使用して動き推定を実行できます。 、短期的な視覚効果に対処できます。機能が欠如しており (IMU が統合される時間が長くなるほど、累積誤差が大きくなります)、VO よりも堅牢です。
  4. より高い精度:VIOは2つのセンサーからの情報を融合し、姿勢推定の精度がより高くなります。

 

2. MSCKF関連の学習教材

MSCKF の先駆的な取り組み

https://www-users.cs.umn.edu/~stergios/papers/ICRA07-MSCKF.pdf

数学理論に関する情報

http://mars.cs.umn.edu/tr/reports/Trawny05b.pdf

http://www.iri.upc.edu/people/jsola/JoanSola/objectes/notes/kinematics.pdf

Li Mingyang 教授の一連の論文、MSCKF2.0、FEJ

http://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=188A46DC6DD79B40220CE2E9CCB42647?doi=10.1.1.261.1422&rep=rep1&type=pdf

クロック同期誤差推定

https://intra.ece.ucr.edu/~mourikis/papers/Li2014IJRR_timing.pdf

可観測性分析、FEJ

https://intra.ece.ucr.edu/~mourikis/papers/Li2013IJRR.pdf

Shelly (TUM CVG) の修士論文、iPhone 上で MSCKF を実行、実装手順が非常に詳細

https://vision.in.tum.de/_media/spezial/bib/shelley14msc.pdf

双眼 MSCKF とそのサポート論文は、Vijay Kumar 研究所によって Github 上でオープンソース化されています

https://github.com/KumarRobotics/msckf_vio

https://github.com/KumarRobotics/msckf_vio

 

3. MSCKFの核となる考え方

MSCKF の目標は、 EKF-SLAM の次元爆発問題を解決することです従来のEKF-SLAMは状態ベクトルに特徴点を追加してIMUの状態を一括推定するため、環境が大きい場合には特徴点の数が多くなり、状態ベクトルの次元が非常に大きくなってしまいます。MSCKF は、状態ベクトルに特徴点を追加しませんが、さまざまな時点でカメラのポーズ (位置 P と姿勢四元数 Q) を状態ベクトルに追加します。特徴点は複数のカメラによって認識されるため、複数のカメラ状態で幾何学的制約が適用されます。 (制約)は(マルチステート)間で形成され、幾何学的制約を使用して観測モデルを構築し、EKF を更新します。カメラ ポーズの数は特徴点の数よりもはるかに少ないため、MSCKF 状態ベクトルの次元は EKF-SLAM と比較して大幅に削減されます。過去のカメラ状態は継続的に削除され、固定数のカメラ ポーズのみになります ( Sliding) Window) が維持されるため、MSCKF バックエンドの計算量が制限されます。

3.1 IMU 状態ベクトルと INS

座標

MSCKF は本質的に EKF です。MSCKF を導入する前に、まず INS (慣性航法システム) における IMU 状態 EKF 推定を導入します。INS における IMU の状態ベクトルは次のとおりです。

ここに画像の説明を挿入します

INS の EKF ステップは次のとおりです。

  • EKF 予測: まず、センサーによって取得された観測加速度と観測角速度を使用して状態を推定します。明らかに、このステップにより推定の不確実性/共分散がますます大きくなります。
  • EKF 更新: 次に、視覚的観測を使用して観測モデルを構築し、状態ベクトルの平均と共分散を更新し、予測プロセスの累積誤差を修正して、不確実性を低減します。

 

3.2 MSCKFの観測モデル(GPS/INSの緩い組み合わせとの違いをよく理解する

MSCKF の場合、EKF 予測ステップは INS と同じですが、異なる点は、EKF 観測更新では、IMU によって予測されるステータスを更新するための観測モデルを構築するために視覚情報が必要であることです。INS の GPS は位置観測を直接提供できますが、ビジョンは通常、複数のカメラ間の相対的な姿勢関係に制約を提供することしかできません。では、観測モデルはどのように構築すればよいのでしょうか?

視覚における制約は、通常、カメラへの特徴点の再投影誤差 (カメラの姿勢と位置に従ってカメラ平面に投影された空間内の 3D 特徴点と、実際に観察された特徴点との間の誤差) です。

この再投影誤差の制約式を観測モデルとして利用したいと考えていますが、その前提として特徴点の3次元座標が既知である必要があり、実際の応用においては特徴点の3次元座標は不明です。

  • EKF-SLAM のアプローチは、状態ベクトルに特徴点を追加して推定することですが、特徴点の数が増加すると、その状態ベクトルは非常に大きくなります。
  • MSCKF のアプローチは、過去のカメラのポーズと観察に基づいて特徴点の 3D 座標を三角測量し、計算することです。これにより、別の疑問が生じます: 三角測量の精度を確保するにはどうすればよいでしょうか? 三角測量誤差が大きすぎると、観測モデルが不正確になり、最終的には VIO の精度が非常に低くなります。MSCKF メソッドは、特徴点の追跡が失われたときに三角測量を実行します。特徴点の喪失は、この特徴の観測値の数がこれ以上増加し続けないことを示します。現時点では、すべての過去の観測値が三角測量に使用されます。したがって、MSCKFにおける観測更新のタイミングは特徴点の追跡となります

4. MSCKF アルゴリズムのステップ

MSCKF アルゴリズムの手順は次のとおりです。

  1. IMU の統合: まず、IMU の加速度と角速度を使用して状態ベクトルの IMU 状態を予測し、通常はマルチフレーム IMU 観測データを処理します。
  2. カメラ状態の拡張: 各ピクチャが到着した後、現在のカメラの状態が計算されて状態ベクトルに追加され、同時に状態の共分散が拡張されます。
  3. 特徴点の三角形分割: 3D 特徴点は、履歴的なカメラ状態の三角形分割に基づいて推定されます。
  4. 機能更新: 複数の履歴カメラ状態に対する特徴点の制約を再利用して、状態ベクトルを更新します。注:これは単に過去のカメラの状態を修正するだけではありません。過去のカメラの状態と IMU の状態(カメラと IMU の外部パラメータ)の間には直接的な関係があるため、IMU の状態も同時に修正されます。 。
  5. 履歴カメラ状態の削除: カメラ状態の数が N を超える場合、最も古いまたは最新のカメラ状態と対応する共分散が削除されます。

MSCKF ステータスの伝達と更新のプロセスを次の図に示します。

図では、X は状態ベクトルを表し、P は対応する共分散行列を表し、赤色は現在のステップの変化量を表します

  1. まず状態ベクトルと共分散を初期化します。
  2. 次に、IMU 積分を実行すると、状態ベクトルと共分散の両方が変化します。
  3. 次に、新しいカメラの状態を状態ベクトルに追加し、共分散行列 (新しいカメラ自身の共分散と の共分散)を展開します。
  4. 観測値が更新されると、すべての状態と共分散が変化します。(注:最初はカメラ状態が 1 つしかないため、再投影制約を形成できないため、最初の観測更新では何も行われません)
  5. カメラ状態の数が制限を超えると、最も履歴的なカメラ状態とそれに対応する共分散項が削除されます。
  6. 2~5を繰り返します。

 

 

感謝:紫芋大根https://zhuanlan.zhihu.com/p/76341809

論文: https://arxiv.org/abs/1712.00036
コード: https://github.com/KumarRobotics/msckf_vio   

(非常に良いです。最初に理論を読むことをお勧めします) 全体的な説明: http://www.xinliang-zhong.vip/msckf_notes/

 

1.MSCKFとは何ですか?

MSCKFの正式名は、マルチステート制約カルマン フィルター (マルチステート制約下のカルマンフィルター) です。フィルターベースの VIO アルゴリズムです。これは、2007 年に Mourikis によって「ビジョンのためのマルチステート制約カルマン フィルター」で初めて導入されました。 -補助慣性航法」を提案します。MSCKF は、EKF フレームワークの下で IMU と視覚情報を統合しており、単純な VO アルゴリズムと比較して、より激しい動きや一定期間のテクスチャ損失などに適応でき、最適化ベースの VIO と比較して高い堅牢性を備えています。アルゴリズム (VINS、OKVIS) と同様に、MSCKF は同等の精度と高速な速度を備えており、コンピューティング リソースが限られている組み込みプラットフォームでの実行MSCKFはロボットやドローン、AR/VRの分野で広く利用されており、例えばGoogle Project Tangoでは姿勢推定にMSCKFが利用されています。

VO に対する VIO の利点:

  1. スケールの復元: IMU はスケール情報 (加速度計) を提供して、単眼 VO のスケールを復元できない問題を解決できます。
  2. 純粋な回転への対処: 純粋な回転の場合、VO ポーズ ソリューションは奇妙に見えますが、VIO は IMU のジャイロスコープ (角速度計) を使用して純粋な回転運動を推定できます。
  3. 画像特徴の短期的な損失に対処するには: 画像が露出過度である場合、画像が暗すぎる場合、または環境テクスチャが不十分である場合、VO は動作できません。VO が失敗した場合、VIO は IMU 積分を使用して動き推定を実行できます。 、短期的な視覚効果に対処できます。機能が欠如しており (IMU が統合される時間が長くなるほど、累積誤差が大きくなります)、VO よりも堅牢です。
  4. より高い精度:VIOは2つのセンサーからの情報を融合し、姿勢推定の精度がより高くなります。

 

2. MSCKF関連の学習教材

MSCKF の先駆的な取り組み

https://www-users.cs.umn.edu/~stergios/papers/ICRA07-MSCKF.pdf

数学理論に関する情報

http://mars.cs.umn.edu/tr/reports/Trawny05b.pdf

http://www.iri.upc.edu/people/jsola/JoanSola/objectes/notes/kinematics.pdf

Li Mingyang 教授の一連の論文、MSCKF2.0、FEJ

http://citeseerx.ist.psu.edu/viewdoc/download;jsessionid=188A46DC6DD79B40220CE2E9CCB42647?doi=10.1.1.261.1422&rep=rep1&type=pdf

クロック同期誤差推定

https://intra.ece.ucr.edu/~mourikis/papers/Li2014IJRR_timing.pdf

可観測性分析、FEJ

https://intra.ece.ucr.edu/~mourikis/papers/Li2013IJRR.pdf

Shelly (TUM CVG) の修士論文、iPhone 上で MSCKF を実行、実装手順が非常に詳細

https://vision.in.tum.de/_media/spezial/bib/shelley14msc.pdf

双眼 MSCKF とそのサポート論文は、Vijay Kumar 研究所によって Github 上でオープンソース化されています

https://github.com/KumarRobotics/msckf_vio

https://github.com/KumarRobotics/msckf_vio

 

3. MSCKFの核となる考え方

MSCKF の目標は、 EKF-SLAM の次元爆発問題を解決することです従来のEKF-SLAMは状態ベクトルに特徴点を追加してIMUの状態を一括推定するため、環境が大きい場合には特徴点の数が多くなり、状態ベクトルの次元が非常に大きくなってしまいます。MSCKF は、状態ベクトルに特徴点を追加しませんが、さまざまな時点でカメラのポーズ (位置 P と姿勢四元数 Q) を状態ベクトルに追加します。特徴点は複数のカメラによって認識されるため、複数のカメラ状態で幾何学的制約が適用されます。 (制約)は(マルチステート)間で形成され、幾何学的制約を使用して観測モデルを構築し、EKF を更新します。カメラ ポーズの数は特徴点の数よりもはるかに少ないため、MSCKF 状態ベクトルの次元は EKF-SLAM と比較して大幅に削減されます。過去のカメラ状態は継続的に削除され、固定数のカメラ ポーズのみになります ( Sliding) Window) が維持されるため、MSCKF バックエンドの計算量が制限されます。

3.1 IMU 状態ベクトルと INS

座標

MSCKF は本質的に EKF です。MSCKF を導入する前に、まず INS (慣性航法システム) における IMU 状態 EKF 推定を導入します。INS における IMU の状態ベクトルは次のとおりです。

おすすめ

転載: blog.csdn.net/xiaojinger_123/article/details/127850925