Visual SLAM に関する 14 の講義 ---予備知識

スラムとは何ですか?

SLAMとはSimultaneous Localization and Mappingの略で、測位と地図構築を同時に行うことを意味します。環境に関する事前情報なしに、特定のセンサー
を備えた個体が移動中の環境のモデルを構築し、同時に自身の動きを推定することを指します。ここでのセンサーが主にカメラであれば「ビジュアルSLAM」と呼ばれます。

SLAMの目的

SLAM の目的は、「位置特定」と「マップ構築」の問題を解決することです。つまり、一方ではセンサー自体の位置を推定する必要があり、他方ではセンサーを構築する必要があります。周囲の環境を再現した模型。
これにはセンサー情報が必要です。センサーは外界を特定の形式で観察しますが、センサーが異なれば観察方法も異なります。
私たちは、事前知識がなくても、リアルタイムで SLAM を実行できるようにしたいと考えています。カメラをセンサーとして使用する場合、連続した動画(動画)からカメラの動きや周囲の環境を推測する必要があります。

SLAMアプリケーション

  • 屋内掃除機と移動ロボットには位置決めが必要
  • 野生の自動運転車には測位が必要です
  • 空のドローンは位置を決める必要がある
  • 仮想現実および拡張現実デバイス。

SLAMシステムモジュール

  • ビジュアルオドメトリ
  • バックエンドの最適化
  • マッピング
  • ループバック検出

センサーは 2 つのカテゴリに分類されます

  • ロボットのホイールコード、カメラ、レーザーセンサーなどをロボット本体に搭載します。
  • ガイドレールやQRコードサインなど環境に設置されます。環境に設置されたセンシング機器は通常、ロボットの位置情報を直接測定し、位置決めの問題を簡単かつ効果的に解決できます。ロボットは人の足取りによって環境を制御する必要があるため、利用範囲がある程度限定される。

センサーは外部環境を制限します。これらの制約が満たされる場合にのみ、それらに基づく位置決めスキームが機能します。制約を満たせない場合には位置決めを行うことができません。このようなセンサーはシンプルで信頼性がありますが、万能の万能ソリューションを提供することはできません。対照的に、レーザー センサー、カメラ、ホイール エンコーダー、慣性測定ユニット (IMU) など、ロボット本体に搭載されているセンサーは、通常、直接的な位置データではなく間接的な物理量を測定します。たとえば、ホイール エンコーダは車輪の回転角度を測定し、IMU は運動の角速度と加速度を測定し、カメラとレーザー センサーは外部環境の特定の観測データを読み取ります。

ポータブル センサーを使用して SLAM を完了することが私たちの主な関心事です。特に、ビジュアル SLAM について話すときは、主にカメラがローカリゼーションとマッピングの問題をどのように解決するかを指します。同様に、センサーが主にレーザーである場合、それはレーザー SLAM と呼ばれます。

SLAMで使用されるカメラは、私たちが普段目にしている一眼レフカメラとは異なります。これはよりシンプルで、通常は高価なレンズを搭載しませんが、一定のレートで周囲の環境を撮影して連続的なビデオ ストリームを形成します。通常のカメラは 1 秒あたり 30 枚の速度で画像をキャプチャできますが、高速カメラはさらに高速です。

さまざまな作業方法に応じて、カメラは単眼カメラ、双眼カメラ、深度 (RGB-D) カメラの 3 つのカテゴリに分類できます。直感的には、単眼カメラには 1 つのカメラしかありませんが、双眼カメラには 2 つのカメラがあります。RGB-D の原理はより複雑です。カラー画像を収集することに加えて、各ピクセルとカメラの間の距離も読み取ることができます。通常、深度カメラには複数のカメラが搭載されており、その動作原理は通常のカメラとは異なります。

SLAM には、パノラマ カメラやイベント カメラなどの特殊なカテゴリまたは新興カテゴリもあります。

単眼カメラ

SLAM に 1 台のカメラのみを使用する方法は、単眼 SLAM と呼ばれます。この種のセンサーは非常に単純な構造で低コストであるため、単眼SLAMは研究者から大きな注目を集めています。
単眼カメラデータ:写真。写真は本質的に、カメラの撮像面に残された情景を投影したものです。三次元の世界を二次元で記録します。このプロセスでは、深さ (または距離) として知られるシーンの 1 つの次元が失われます。単眼カメラでは、シーン内のオブジェクトとカメラの間の距離 (近くと遠く) を 1 枚の写真から計算することはできません。この距離は、SLAM において非常に重要な情報です。私たちは、数多くの画像を見て生来の直観力を養っており、ほとんどのシーンにおいて直感的な距離感(空間感覚)を持っており、画像内の物体間の距離関係を判断するのに役立ちます。近くの物体と遠くの物体の遠近関係により、画像内では同じサイズに見える場合があります。
単眼カメラで捉えた画像は 3 次元空間を 2 次元に投影したものに過ぎないため、本当に 3 次元構造を復元したい場合はカメラの視点を変更する必要があります。同じ原理が単眼 SLAM にも当てはまります。カメラを動かしてその動き (Motion)を推定し、同時にシーン内のオブジェクトの距離とサイズ (構造)を推定する必要があります。近くの物体は速く動き、遠くの物体はゆっくりと動き、非常に遠い(無限遠)物体(太陽や月など)は動かないように見えます。したがって、カメラが移動すると、画像上でこれらのオブジェクトの動きが視差(Disparity)を形成します。視差により、どの物体が遠くにあり、どの物体が近くにあるかを定量的に判断できます。物体までの距離がわかったとしても、それは相対的な値にすぎません。
単眼 SLAM によって推定された軌道と地図は、実際の軌道と地図とはある要因によって異なります。スケール単眼 SLAM は画像だけからはこの真のスケールを決定できないため、スケール不確実性 (Scale Ambiguity)とも呼ばれます
奥行きは平行移動後にしか計算できないことと、実際のスケールを決定できないこと、この 2 つのことが単眼 SLAM の応用には大きな問題を引き起こします。根本的な理由は、単一の画像からは奥行きを決定できないことです。深度を取得するには、双眼カメラと深度カメラが使用されます。

双眼カメラと深度カメラ

双眼カメラと深度カメラを使用する目的は、距離を知ることができない単眼カメラの欠点を克服し、何らかの手段で物体とカメラの間の距離を測定することです。距離がわかれば、スケールの不確実性を排除しながら、シーンの 3 次元構造を 1 枚の画像から復元できます。
どちらも距離を測定するために使用されますが、双眼カメラと深度カメラでは深度を測定する原理が異なります。双眼カメラは 2 台の単眼カメラで構成されますが、2 台のカメラ間の距離 [ベースラインと呼ばれる] は既知です。このベースラインを使用して、人間の目と非常によく似た各ピクセルの空間位置を推定します。
私たち人間は、左目と右目の画像の違いによって物体の距離を判断できますが、コンピューターでも同じことが当てはまります。双眼カメラを拡張すればマルチカメラカメラを構築できますが、本質は変わりません。
双眼カメラデータ:左目画像、右目画像。左右の目の違いによって、シーン内のオブジェクトとカメラの間の距離を判断できます。
双眼カメラによって測定される深さの範囲は、ベースラインを基準としています。基線距離が大きいほど、より遠くの対象物を測定できるため、無人車両に搭載される双眼カメラは通常大型のものになります。双眼カメラの距離推定は、左右の目の画像を比較することで得られ、他のセンシングデバイスに依存しないため、屋内と屋外の両方に適用できます。双眼または多眼カメラの欠点は、構成とキャリブレーションが比較的複雑であり、深度範囲と精度が両眼のベースラインと解像度によって制限されること、さらに、視差の計算には非常に多くのコンピューティング リソースが消費され、GPU の使用が必要になることです。 FPGA機器との連携により高速化し、画像全体の距離情報をリアルタイムに出力します。したがって、現状では計算量が両眼視の大きな問題の一つとなっている。
デプス カメラ (RGB-D カメラとも呼ばれます) の最大の特徴は、物体に能動的に光を照射し、レーザー センサーのような赤外線構造化光または Time-og-Flight (ToF) 原理を通じて物体を検出できることです。戻り光を受けるカメラとの距離 双眼カメラのようなソフトウェア計算ではなく、物理的な計測手法によって解決されるため、双眼カメラに比べて計算リソースを大幅に節約できます。
現在一般的に使用されている RGB-D カメラには、Kinect/Kinect V2、Xtion Pro Live、RealSense などが含まれます。また、一部の携帯電話で顔を認識するためにこれらのカメラを使用することもあります。現在のほとんどの RGB-D カメラは、測定範囲が狭い、ノイズが多い、視野が狭い、太陽光の干渉を受けやすい、投影材料を測定できないなど、依然として多くの問題を抱えています。SLAMに関しては主に屋内で使用されますが、屋外で使用するのはさらに困難です。
RGB-D データ: 深度カメラは物体の画像と距離を直接測定し、それによって 3 次元構造を復元できます。
カメラがシーン内で移動すると、連続的に変化する一連の画像が取得されます。ビジュアル SLAM の目的は、このような画像を通じて位置決めと地図の構築を実行することです。データを入力すれば、測位情報や地図情報を継続的に出力できます。

クラシックなビジュアル SLAM フレームワーク

ビジュアル SLAM プロセス全体には、次の手順が含まれます。

  • **センサー情報の読み取り。**ビジュアル SLAM では、主にカメラ画像情報の読み取りと前処理が行われます。ロボット内にある場合は、コード ディスク、慣性センサー、その他の情報を読み取って同期する必要がある場合もあります。
  • **フロントエンドのビジュアルオドメトリ (VO)。**ビジュアル オドメトリのタスクは、隣接する画像間のカメラの動きと、ローカル マップがどのように見えるかを推定することです。VOはフロントエンドとも呼ばれます。
  • **バックエンド (非線形) 最適化 (最適化)。**バックエンドは、さまざまな時点でビジュアル オドメトリによって測定されたカメラ ポーズとループ検出情報を受け取り、それらを最適化して、グローバルに一貫した軌道とマップを取得します。VOの後に接続されるため、バックエンド(Back End)とも呼ばれます。
  • **ループ終了の検出。**ループバック検出により、ロボットが前の位置に到達したかどうかが判断されます。ループバックが検出された場合、処理のためにバックエンドに情報が提供されます。
  • **マッピング。**推定された軌道に基づいてミッション要件に対応するマップを構築します。
    作業環境が静的な剛体に限定されており、光の変化が明白でなく、人間の干渉がない場合、このシナリオの SLAM テクノロジーはすでにかなり成熟しています。

ビジュアルオドメトリ

ビジュアル オドメトリでは、隣接する画像間のカメラの動きを考慮します。最も単純なケースは、もちろん 2 つの画像間の動きの関係です。
コンピュータ ビジョンの分野では、人間にとって直感的に非常に自然なことでも、コンピュータ ビジョンでは非常に困難です。画像はコンピュータ内の数値行列にすぎません。
視覚的 SLAM では、ピクセルを 1 つずつ見ることしかできず、それらがカメラの撮像面上の特定の空間点の投影の結果であることがわかります。したがって、カメラの動きを定量的に推定するには、まずカメラと空間点の間の幾何学的関係を理解する必要があります。
ビジュアル オドメトリは、隣接するフレーム間の画像からカメラの動きを推定し、シーンの空間構造を復元できます。これは、実際の走行距離計と同様に、隣接する瞬間の動きのみをカウントし、過去の情報とは関係がないため、「走行距離計」と呼ばれます。現時点では、視覚的オドメトリは短期記憶しか持たない種のようなものです (ただし、2 フレームに限定することはできません。5 ~ 10 フレームなど、さらに多くのフレームを使用することもできます)。
視覚的なオドメトリがすでに存在する場合は、2 つの画像間のカメラの動きが推定されます。一方で、隣接する瞬間の動きが「つながっている」限り、ロボットの移動軌跡が形成され、それによって位置決めの問題が解決されます。一方、各瞬間のカメラ位置に基づいて各ピクセルに対応する空間点の位置を計算し、マップを取得します。
確かに視覚的なオドメトリは SLAM の鍵ですが、視覚的なオドメトリだけで軌道を推定すると、蓄積されたドリフトが必然的に発生します。これは、ビジュアル オドメトリが最も単純な場合にのみ 2 つの画像間の動きを推定するという事実によって引き起こされます。
エラーが蓄積すると長期的な推定が正確でなくなり、ループ閉鎖の検出と全体的な修正が必要になります。これをドリフトとも言います。そうなると、一貫性のあるマップを構築できなくなります。
ドリフト問題を解決するには、バックエンドの最適化ループバック検出という2 つのテクノロジーも必要です。ループ検出は「ロボットが元の位置に戻った」ことを検出する役割を果たし、バックエンドの最適化はこの情報に基づいて軌道全体の形状を修正します。

バックエンドの最適化

バックエンドの最適化とは、主に SLAM プロセスのノイズ問題に対処することを指します。実際には、最も正確なセンサーであっても、ある程度のノイズが含まれています。安価なセンサーは測定誤差が大きくなりますが、高価なセンサーは誤差が小さくなる場合があり、センサーによっては磁場や温度の影響を受ける場合もあります。「画像からカメラの動きを推定する方法」を解決することに加えて、この推定にどの程度のノイズが含まれているか、このノイズが前の瞬間から次の瞬間にどのように伝達されるか、現在の推定にどの程度自信があるかについても考慮する必要があります。 . .
バックエンドの最適化で考慮すべき問題は、これらのノイズの多いデータからシステム全体の状態をどのように推定するか、および状態推定がどの程度不確実であるかです。これは最大事後確率推定 (Minimum-a-Posteriori、MAP) と呼ばれます。 。ここでの状態には、ロボット自身の軌跡とマップの両方が含まれます。
視覚的なオドメトリ部分は「フロントエンド」と呼ばれることもあります。SLAM フレームワークでは、フロントエンドは最適化するデータとその初期値をバックエンドに提供します。バックエンドは全体的な最適化プロセスを担当し、多くの場合、データのみに対応し、データがどのセンサーから取得されたものであるかを気にする必要はありません。
ビジュアル SLAM では、フロントエンドは画像特徴抽出やマッチングなどのコンピュータ ビジョン研究分野に関連しており、バックエンドは主にフィルタリングや非線形最適化アルゴリズムです。
歴史的に見て、現在バックエンド最適化と呼ばれるものは、長い間直接「SLAM 研究」と呼ばれていました。初期の SLAM 問題は状態推定の問題であり、まさにバックエンドの最適化が解決すべき問題でした。SLAM を提案した最初の一連の論文では、当時の人々はそれを「空間的不確実性の推定」と呼んでいましたが、
SLAM の本質は、移動する被写体そのものと周囲の環境の空間的不確実性を推定することです。SLAM 問題を解決するには、位置とマッピングの不確実性を表現する状態推定理論が必要です。その後、フィルターまたは非線形最適化を使用して状態の平均と不確実性 (分散) を推定します。

ループバック検出

閉ループ検出とも呼ばれるループバック検出は、主に時間の経過とともに位置推定がドリフトする問題を解決します
どうやって解決すればいいでしょうか?実際には、ロボットは一定の移動後に原点に戻るが、ドリフトにより位置推定が原点に戻らないと仮定します。どうやってするの?ロボットに「原点に戻った」ことを知らせたり、「原点」を特定したりする何らかの方法があれば、位置推定を「プル」することができ、ドリフトを排除することができます。これをループバック検出と呼びます。
ループバック検出は、「測位」と「マッピング」の両方に密接に関連しています。
実際、地図の主な目的はロボットに自分がどこにいたかを知らせることであると私たちは考えています。ループバック検出を実装するには、ロボットの下にマーカー (QR コード画像など) を設定する必要があります。この標識を見れば、原点に戻ったことが分かる。このマーカーは本質的に環境内のセンサーですが、アプリケーション環境には制限があります。
ロボットが搭載するセンサー、つまり画像自体を使用してこのタスクを完了できることが望ましいと考えられます (たとえば、画像間の類似性を判断してループ検出を完了できます)。ループバックの検出が成功すると、累積誤差を大幅に減らすことができます。
ビジュアル ループ検出は、本質的に画像データの類似性を計算するためのアルゴリズムです。画像情報が非常に豊富であるため、ループの終了を正確に検出することの難しさは大幅に軽減されます。
ループバックを検出したら、バックエンドの最適化アルゴリズムに「AとBは同じ点である」という情報を伝えます。次に、この新しい情報に基づいて、バックエンドはループ クロージャーの検出結果と一致するように軌道とマップを調整します。このようにして、十分かつ正確なループ閉鎖検出があれば、累積誤差を排除し、グローバルに一貫した軌跡とマップを取得できます。

マッピング

マッピングとは、地図を構築するプロセスを指します。マッピングとは、地図を構築するプロセスを指します。マップは環境の説明ですが、この説明は固定されておらず、SLAM によって決定される必要があります。
私たちには地図に関するアイデアやニーズがたくさんあります。したがって、前述の視覚的なオドメトリ、バックエンドの最適化、ループ検出と比較して、マッピングには固定された形式やアルゴリズムがありません。空間的な点の集まりも地図と言えますし、美しい 3D モデルも地図であり、都市、村、鉄道、河川などを描いた絵も地図です。マップの形式は SLAM のアプリケーションによって異なります。一般に、メトリック マップトポロジ マップの
2 つのタイプに分類できます

メトリックマップ

メトリック マップは、マップ内のオブジェクトの位置関係を正確に表現することに重点を置き、通常はSparseDenseに分類されます。
スパース マップは一定レベルの抽象化を提供しますが、必ずしもすべてのオブジェクトを表すわけではありません。
高密度マップは、目に見えるものすべてをモデル化することに重点を置いています。位置を特定するには、まばらなランドマーク マップで十分です。ナビゲーションに使用する場合、多くの場合、密なマップが必要になります (そうでないと、2 つの道路標識の間の壁にぶつかった場合はどうなりますか?) 密なマップは、通常、特定の解像度の多数の小さな正方形 (Vovel) で構成されます。通常、小さなブロックには、グリッド内にオブジェクトがあるかどうかを表す、占有、空き、不明の 3 つの状態が含まれます。特定の空間的位置をクエリすると、その位置が通行可能かどうかに関する情報が地図から得られます。
このようなマップは、 A 、 D* などのさまざまなナビゲーション アルゴリズムで使用でき、ロボット研究者によって高く評価されています。しかし一方で、この種のマップは各ポイントのステータスを保存する必要があるため、多くのストレージ スペースを消費し、ほとんどの場合、マップの詳細の多くは役に立たないこともわかります。一方で、大規模なメトリック マップでは一貫性の問題が発生することがあります。わずかなステアリングのエラーにより 2 つの部屋の壁が重なり、マップが無効になる場合があります。

トポロジーマップ

トポロジー マップでは、マップの精度を測定するのではなく、マップ要素間の関係が強調されます。トポロジ マップはノードとエッジで構成されるグラフ (Graph) であり、ノード間の接続性のみを考慮します。(たとえば、点 A と点 B が接続されているかどうかのみに注目し、点 A から点 B に移動する方法は考慮しません)。これにより、マップでの正確な位置の必要性が緩和され、マップの詳細が削除され、よりコンパクトな表現になります。しかし、位相地図は複雑な構造の地図を表現するのが苦手です。マップをセグメント化してノードとエッジを形成する方法、およびナビゲーションと経路計画に位相構造を使用する方法は、まだ研究すべき課題です。

まず、ロボットの位置 x が何かを説明します。場所の意味を明確に説明していません。
平面内を移動する大根は、2 つの座標と回転角度の形式でその位置をパラメータ化できます。
3 次元空間の動きは 3 つの軸で構成されていることがわかっているため、大根の動きは 3 軸上の並進と 3 軸を中心とした回転で合計 6 つの自由度で記述されます。

おすすめ

転載: blog.csdn.net/weixin_45867259/article/details/132473312