GSLAM | 一般的な SLAM アーキテクチャとベンチマーク

王林
リリース: 2023-10-20 11:37:01
転載
772 人が閲覧しました

突然発見された 19 年分の論文

GSLAM: 一般的な SLAM フレームワークとベンチマーク

オープン ソース コード: https://github.com/zdzhaoyong/GSLAM

この作品の良さを実感するには、全文を直接ご覧ください~

1 要約

SLAM テクノロジーは、最近多くの成功を収め、多くの人々を魅了しています。ハイテク企業の注目を集めた。ただし、既存または新たなアルゴリズムへのインターフェイスを使用して、速度、堅牢性、移植性に関するベンチマークを効果的に実行する方法は依然として問題です。この論文では、GSLAM と呼ばれる新しい SLAM プラットフォームを提案します。これは評価機能を提供するだけでなく、研究者が独自の SLAM システムを迅速に開発するための便利なツールを提供します。 GSLAM の核となる貢献は普遍的なものです。クロスプラットフォームの完全にオープンソースの SLAM インターフェイスは、入力データセット、SLAM 実装、視覚化、およびアプリケーションの相互作用を統一フレームワークで処理するように設計されています。このプラットフォームを通じて、ユーザーはプラグインの形で独自の機能を実装し、SLAM のパフォーマンスを向上させ、SLAM の応用をさらに推進することができます。

2 はじめに

SLAM (Simultaneous Localization and Mapping) は、1980 年代以来、コンピューター ビジョンとロボット工学の分野で注目を集めてきました。研究テーマ。 SLAM は、ロボット工学、無人航空機 (UAV)、自動運転、仮想現実や拡張現実など、リアルタイム ナビゲーションを必要とする多くのアプリケーションに不可欠な機能を提供します。近年、SLAM技術は急速に発展しており、単眼SLAMシステム(特徴点ベース、直接法、半直接法)、マルチセンサーSLAMシステム(RGBD、双眼法、慣性支援法)など、さまざまなSLAMシステムが提案されています。 ) および学習ベースの SLAM システム (教師ありメソッドと教師なしメソッド)。

しかし、SLAM テクノロジーの急速な発展に伴い、ほぼすべての研究者が独自の SLAM システムの理論と実装に焦点を当てているため、アイデアの交換が難しくなり、他のシステムへの移行を実装するのが容易ではありません。これは、さまざまな産業分野での SLAM テクノロジーの迅速な適用を妨げています。さらに、現在、SLAM システムにはさまざまな実装があり、速度、堅牢性、移植性を効果的にベンチマークする方法が依然として課題となっています。最近、Nardi らと Bodin らは、定量的で比較可能な検証可能な実験研究を実施し、さまざまな SLAM システム間のトレードオフを調査するための統合 SLAM ベンチマーク システムを提案しました。これらのシステムにより、データセットやメトリクス評価モジュールを用いた評価実験が容易になります。

既存のシステムは評価ベンチマークを提供するだけであるため、この論文では、開発、評価、適用段階を含む SLAM アルゴリズムのライフサイクル全体にサービスを提供するプラットフォームを確立することが可能であると考えています。さらに、深層学習ベースの SLAM は近年大幅な進歩を遂げているため、ジオメトリと深層学習ベースの SLAM システムの統合をより適切にサポートするには、C だけでなく Python もサポートするプラットフォームを作成する必要があります。したがって、この論文では、評価機能を提供するだけでなく、研究者が独自の SLAM システムを迅速に開発するための便利なツールを提供する新しい SLAM プラットフォームを紹介します。このプラットフォームでは、一般的に使用される機能がプラグインの形式で提供されるため、ユーザーはそれらを直接使用することも、パフォーマンスを向上させるために独自の機能を作成することもできます。このプラットフォームにより、SLAMシステムの実用化がさらに促進されることが期待されます。要約すると、この論文の主な貢献は次のとおりです。

  1. この論文は、以前のベンチマーク システムを超える、研究および商業用途向けに設計された、汎用のクロスプラットフォームで完全にオープン ソースの SLAM プラットフォームを提案します。 SLAM インターフェイスは、複数の軽量で依存関係のないヘッダー ファイルで構成されており、これにより、統合フレームワーク内のプラグインの形式で、さまざまなデータ セット、SLAM アルゴリズム、アプリケーションとの対話が容易になります。さらに、Web ベースおよび深層学習ベースの SLAM アプリケーションをサポートするために、JavaScript と Python が提供されています。
  2. が提案する GSLAM プラットフォームでは、Estimator、Optimizer、Vocabulary の 3 つの最適化されたモジュールがユーティリティ クラスとして導入されています。 Estimator は、強力なサンプル一貫性 (RANSAC) を備え、すべてのケースをカバーする一連の閉形式ソルバーを提供することを目的としています; Optimizer は、一般的な非線形 SLM 問題への統一インターフェイスを提供することを目的としています; Vocabulary は、効率的で移植可能な語彙を提供することを目的としています。スレッド化され SIMD に最適化された場所認識。
  3. 上記のインターフェイスの利点を活用して、この作業では、既存のデータセット、SLAM 実装、視覚化アプリケーションのプラグインを統合フレームワークで実装および評価します。また、将来登場するベンチマークやアプリケーションも簡単にさらに統合できます。 。

以下では、まず GSLAM フレームワークのインターフェイスを紹介し、GSLAM の動作原理を説明します。次に、Estimator、Optimizer、Vocabulary という 3 つの実用的なコンポーネントが導入されます。次に、いくつかの一般的な公開データセットを使用した GSLAM フレームワークを使用して、さまざまな一般的な SLAM 実装が評価されます。最後に、これらの研究を要約し、今後の研究の方向性を期待します。

3 関連作品

同時ローカリゼーションとマッピング

SLAM テクノロジーは、未知の環境でのマップの構築に使用されます、主にリアルタイム操作に焦点を当てて、マップ内のセンサーの位置を特定します。初期の SLAM は主に拡張カルマン フィルタリング (EKF) に基づいていました。 6 自由度のモーション パラメーターと 3D ランドマークは、単一の状態ベクトルとして確率的に表現されます。従来の EKF の複雑さはランドマークの数が増加するにつれて二次関数的に増加し、そのスケーラビリティが制限されます。近年、SLAM技術は急速に発展しており、特徴点ベースの直接法や半直接法など多くの単眼視覚SLAMシステムが提案されている。ただし、単眼 SLAM システムにはスケール情報が欠如しており、純粋な回転状況を処理できないため、堅牢性と精度を向上させるために、RGBD、双眼および慣性支援方式を含む他のいくつかのマルチセンサー SLAM システムが登場しました。

多数の SLAM システムが提案されていますが、これらのアルゴリズムのインターフェイスを統一する取り組みはほとんどなく、パフォーマンスの包括的な比較も行われていません。さらに、これらの SLAM アルゴリズムの実装は、ライブラリではなくスタンドアロンの実行可能ファイルとしてリリースされることが多く、どの標準構造にも準拠していないことがよくあります。

最近、深層学習に基づく教師ありおよび教師なしビジュアル オドメトリ (VO) が、従来の幾何学ベースの方法と比較して新しいアイデアを提案しています。ただし、複数のキーフレームの一貫性をさらに最適化することはまだ簡単ではありません。 GSLAM は、グローバルな一貫性を向上させるのに役立つツールを提供します。このフレームワークにより、結果の視覚化や評価が容易になり、さらにさまざまな産業分野に適用することができます。

コンピューター ビジョンとロボティクス プラットフォーム

ロボット工学とコンピューターの分野では、ロボット システム (ROS) はノード間の非常に便利な通信方法を提供し、ほとんどのロボットに好まれています。 . 研究者が好む。多くの SLAM 実装は、センサー データをサブスクライブし、視覚化結果を公開するための ROS ラッパーを提供します。ただし、SLAM 実装の入力と出力が統一されていないため、異なる SLAM システムをさらに評価することが困難になります。

GSLAM は、ROS メッセージ アーキテクチャからインスピレーションを得て、メッセンジャーと呼ばれる同様のプロセス間通信ユーティリティ クラスを実装しています。これにより、SLAM 実装内で ROS の代替手段が提供され、互換性が維持されます。つまり、すべての ROS 定義メッセージがフレームワーク内でサポートされ、ROS ラッパーが自然に実装されます。インプロセス設計のおかげで、メッセージはシリアル化やデータ転送なしで配信され、遅延や追加コストを発生させることなくメッセージを送信できます。同時に、メッセージのペイロードは ROS 定義のメッセージに限定されず、コピー可能な任意のデータ構造にすることもできます。さらに、評価機能を提供するだけでなく、研究者が独自の SLAM アルゴリズムを迅速に開発および統合するための便利なツールも提供します。

SLAM ベンチマーク

現在、KITTI ベンチマーク、TUM RGB-D ベンチマーク、ICL-NUIM RGB-D ベンチマーク データ セットなど、いくつかの SLAM ベンチマーク システムがあります。システムは評価関数のみを提供します。さらに、SLAMBench2 はこれらのベンチマークをアルゴリズムとデータセットに拡張するため、ユーザーは公開された実装を評価のために SLAMBench2 と互換性のあるものにする必要がありますが、これをより多くのアプリケーション分野に拡張するのは困難です。これらのシステムとは異なり、このホワイトペーパーで提案する GSLAM プラットフォームは、開発から評価、アプリケーションに至るまで、SLAM 実装のライフサイクル全体に対応できるソリューションを提供します。研究者に独自の SLAM システムを迅速に開発し、統一インターフェイスに基づいて視覚化、評価、アプリケーションをさらに開発するための便利なツールを提供します。

4 一般的な SLAM アーキテクチャ

フレームワークの概要

GSLAM のフレームワークを次の図に示します。形。全体として、インターフェイスは 3 つの部分の相互作用を処理するように設計されています。

  1. SLAM 実装の入力を処理します。 SLAM を実行する場合、センサー データといくつかのパラメーターが必要です。 GSLAM の場合、パラメータ設定とコマンド処理に Svar クラスを使用します。 SLAM 実装に必要なすべてのセンサー データは、データセット実装によって提供され、メッセンジャーを使用して送信されます。 GSLAM は、いくつかの一般的なビジュアル SLAM データセットを実装しているため、独自のデータセット プラグインを自由に実装できます。
  2. SLAM 実装。 GSLAM は、各実装をプラグイン ライブラリとして扱います。開発者は、GSLAM インターフェイスとユーティリティ クラスに基づいて SLAM 実装を簡単に設計できます。開発者は、インターフェイスを使用して、追加の依存関係を導入することなく実装をラップすることもできます。ユーザーは、SLAM 実装の外部で処理する必要がある入出力を気にすることなく、コア アルゴリズムの開発に集中できます。
  3. SLAM 結果を使用した視覚化パーツまたはアプリケーション。 SLAM 実装が入力フレームを処理した後、ユーザーは結果を表示または活用したい場合があります。一般性を高めるために、SLAM の結果は標準形式で公開される必要があります。デフォルトでは、GSLAM は視覚化に Qt を使用しますが、ユーザーは自由にカスタム視覚化ツールを実装し、評価アプリケーションなどのアプリケーション プラグインを追加できます。

GSLAM | 一个通用的SLAM架构和基准

このフレームワークは、単眼、両眼、RGBD、およびマルチセンサー フュージョンによるマルチカメラ視覚慣性オドメトリを含むがこれらに限定されない、さまざまなタイプの SLAM 実装と互換性があるように設計されています。最新の深層学習プラットフォームと開発者は Python でコーディングすることを好むため、GSLAM は Python バインディングを提供し、開発者が Python で SLAM を実装し、GSLAM を使用して呼び出すことや、Python を使用して C ベースの SLAM 実装を呼び出すことができるようにします。さらに、JavaScript は Web ベースでの使用をサポートしています。

基本インターフェイス クラス

SLAM インターフェイスで一般的に使用されるデータ構造には、パラメーターの設定/読み取り、画像フォーマット、姿勢変換、カメラ モデル、マップ データ構造が含まれます。以下に、いくつかの基本的なインターフェイス クラスを簡単に紹介します。

パラメータ設定

GSLAM は、小規模なパラメータ解析およびパラメータ設定クラス Svar を使用します。これには、ヘッダー ファイルが 1 つだけ含まれ、C 11 に依存し、次の特性があります。

a. パラメータの解析、設定の読み込み、およびヘルプ情報。 Google gflags などの一般的なパラメータ解析ツールと同様に、変数設定はコマンド ライン引数、ファイル、システム環境からロードできます。ユーザーは、さまざまなタイプのパラメータを定義し、ヘルプ ドキュメントに表示される紹介情報を提供することもできます。

b. 構成ファイルをより強力にするために、変数、関数、条件ステートメントをサポートする小さなスクリプト言語。

c. スレッドセーフな変数のバインドと共有。頻繁に使用される変数をポインターまたは参照にバインドすることをお勧めします。これにより、効率だけでなく利便性も向上します。

d, 単純な関数定義と C または純粋なスクリプトからの呼び出し。コマンドと関数間のバインディングは、開発者がファイルの依存関係を分離するのに役立ちます。

e. ツリー構造表現をサポートしているため、XML、JSON、YAML 形式を使用して構成を簡単にロードまたは保存できます。

プロセス内メッセージング

ROS はノード間の非常に便利な通信方法を提供するため、ほとんどのロボット研究者に好まれています。 ROS2 メッセージ アーキテクチャからインスピレーションを得た GSLAM は、メッセンジャーと呼ばれる同様のプロセス間通信ユーティリティ クラスを実装しています。これにより、互換性を維持しながら、SLAM 実装内で ROS の代替手段が提供されます。 Messenger はプロセス間の設計により、追加コストなしで任意のクラスを公開およびサブスクライブできます。以下はその他の機能の紹介です:

a. インターフェイスは ROS スタイルを採用しており、ユーザーが簡単に始めることができます。また、ROS で定義されたすべてのメッセージをサポートしているため、元の ROS メッセージング システムを置き換える作業はほとんど必要ありません。

b. シリアル化やデータ転送がないため、メッセージは遅延や追加コストなく送信できます。同時に、メッセージのペイロードは ROS 定義のメッセージに限定されず、コピー可能なあらゆるデータ構造もサポートします。

c. ソース コードには C 11 ベースのヘッダー ファイルのみが含まれており、追加の依存関係は含まれていないため、移植可能です。

d.API はスレッドセーフであり、キュー サイズがゼロより大きい場合のマルチスレッドの条件付き通知をサポートします。パブリッシャーとサブスクライバーが相互に接続する前に、トピック名と RTTI データ構造がチェックされ、それらが正しく呼び出されることを確認します。

#3D 変換

GSLAM | 一个通用的SLAM架构和基准

GSLAM | 一个通用的SLAM架构和基准

##回転パーツについては、いくつかの表現オプションから選択できます。 、行列、オイラー角、単位四元数、リー代数 so(3) を含みます。特定の変換については、それらのいずれかを使用してそれを表すことができ、相互に変換できます。ただし、複数の変換と多様体の最適化を考慮する場合は、選択した表現に細心の注意を払う必要があります。行列表現は 9 つのパラメーターを使用してオーバーパラメーター化されていますが、回転の自由度 (DOF) は 3 つだけです。オイラー角表現は 3 つの変数を使用するため理解しやすいですが、ユニバーサル ロックの問題があり、複数の変換には不便です。単位四元数は複数の回転を実行する最も効率的な方法であり、リー代数は一般的な最適化を実行するための一般的な表現です。

GSLAM | 一个通用的SLAM架构和基准

同様に、剛体のリー代数 se(3) と sim(3) および相似変換が定義されます。 GSLAM は四元数を使用して回転部分を表し、ある表現を別の表現に変換する関数を提供します。表 1 は、変換の実装を示し、他の 3 つの多様体実装 (Sophus、TooN、および Ceres) と比較しています。 Ceres の実装では角度軸表現が使用されるため、回転の指数関数や対数は必要ありません。表に示されているように、GSLAM の実装は四元数を使用し、最適化が優れているためパフォーマンスが優れていますが、TooN は行列実装を使用し、点変換の点でパフォーマンスが優れています。

GSLAM | 一个通用的SLAM架构和基准

#画像形式

画像データの保存と送信は、ビジュアル SLAM の最も重要な機能の 1 つです。効率と利便性を向上させるために、GSLAM は cv::Mat と互換性のあるデータ構造 GImage を使用します。メモリが安全に解放されることを保証するスマート ポインタ カウンタを備えており、メモリをコピーすることなく簡単に転送できます。データ ポインターは、単一命令複数データ (SIMD) アクセラレーションを容易にするために調整されています。ユーザーはメモリをコピーすることなく、GImage と cv::Mat の間でシームレスかつ安全に変換できます。

カメラ モデル

GSLAM | 一个通用的SLAM架构和基准

SLAM には、製造上の欠陥、または魚眼またはパノラマでキャプチャされた画像によって引き起こされる半径方向および接線方向の歪みが含まれる可能性があるため、したがって、投影を記述するためにさまざまなカメラ モデルが提案されています。 GSLAM は、OpenCV (ORB-SLAM で使用)、ATAN (PTAM で使用)、OCamCalib (MultiCol-SLAM で使用) などの実装を提供します。ユーザーは、これらのクラスを簡単に継承し、Kannala-Brandt やアイソメトリック パノラマ モデルなどの他のカメラ モデルを実装することもできます。

マップ データ構造

SLAM 実装の目標は、リアルタイムでマップを見つけて生成することです。 GSLAM は、複数のマップ フレームとマップ ポイントで構成される統合マップ データ構造を使用することを推奨しています。このデータ構造は、機能ベースの方法や直接的な方法など、ほとんどの既存のビジュアル SLAM システムに適しています。

マップ フレームは、IMU または GPS の生データ、深度情報、カメラ モデルなど、センサーによってキャプチャされたさまざまな情報や推定結果を含む、さまざまな時点の位置ステータスを表すために使用されます。 SLAM 実装はそれらの間の関係を推定し、それらの間の接続によってポーズ グラフを形成します。

マップ ポイントは、フレームによって観察される環境を表すために使用され、通常はフィーチャベースの方法で使用されます。ただし、マップ ポイントはキーポイントだけでなく、GCP (地上基準点)、エッジ ライン、または 3D オブジェクトも表すことができます。マップ フレームとの対応により、バンドル グラフと呼ばれる観測グラフが形成されます。

5 SLAM 実装ツール

SLAM システムの実装を容易にするために、GSLAM はユーティリティ クラスを提供します。このセクションでは、Estimator、Optimizer、Vocabulary という 3 つの最適化されたモジュールを簡単に紹介します。

Estimator

純粋な幾何学的計算は依然として基本的な問題であり、強力で正確なリアルタイム ソリューションが必要です。従来のビジュアル SLAM アルゴリズムまたは最新のビジュアル慣性ソリューションは、初期化、再配置、およびループの終了を幾何学的ビジョン アルゴリズムに依存しています。 OpenCV は複数の幾何学的アルゴリズムを提供し、Kneip はカメラの姿勢計算に限定された幾何学的ビジョン用のツールボックスである OpenGV を提供します。 GSLAM の Estimator は、すべてのケースをカバーする閉形式ソルバーのファミリーを提供することを目的としており、堅牢なランダム サンプリング一貫性メソッド (RANSAC) を使用します。

表 2 に、Estimator でサポートされるアルゴリズムを示します。与えられた観測データに基づいて、それらは 3 つのカテゴリーに分類されます。 2D-2D マッチングはエピポーラまたはホモグラフィー制約を推定するために使用され、それらから相対姿勢を分解できます。 2D-3D は、有名な PnP 問題である、単眼またはマルチカメラ システムの中心または非中心の絶対姿勢を推定することに対応します。平面フィッティングや 2 つの点群の SIM 変換の推定などの 3D ジオメトリ機能もサポートされています。ほとんどのアルゴリズムは、ヘッダーのみのライブラリであり、ほとんどのプラットフォームで利用できるオープンソースの線形代数ライブラリ Reigen に依存しています。

GSLAM | 一个通用的SLAM架构和基准

オプティマイザー

非線形最適化は、最新の幾何学的な SLAM システムの中核部分です。ヘッセ行列の緯度と疎性が高いため、SLAM の複雑な推定問題をモデル化するためにグラフ構造が使用されます。一般的なグラフ最適化問題を解決するために、Ceres、G2O、GTSAM などのいくつかのフレームワークが提案されています。これらのフレームワークは、さまざまな SLAM システムで広く使用されています。 ORB-SLAM と SVO は、BA とポーズ グラフの最適化に G2O を使用します。 OKVIS と VINS は、IMU 係数によるグラフの最適化に Ceres を使用し、計算の複雑さを制御するためにスライディング ウィンドウを使用します。 Forster らは、SVO に基づく視覚的な初期化方法を提案し、GTSAM を使用してバックエンドを実装しました。

GSLAM のオプティマイザーは、PnP ソルバー、BA、ポーズ グラフの最適化など、ほとんどの非線形 SLAM 問題に統合インターフェイスを提供することを目的としています。これらの問題に対するユニバーサル プラグインは、Ceres ライブラリに基づいて実装されています。 BA などの特定の問題については、PBA や ICE-BA などのより効率的な実装もプラグインとして利用できます。オプティマイザー ツールを使用すると、特に深層学習ベースの SLAM システムの場合、開発者は統合インターフェイスを使用してさまざまな実装にアクセスできます。

語彙

場所認識は、SLAM システムの最も重要な部分の 1 つであり、再配置とループバックの検出に使用されます。 Bag of Words (BoW) 方式は、その効率性と優れたパフォーマンスのため、SLAM システムで広く使用されています。 FabMap は、RSLAM や LSD-SLAM などのシステムで使用される、外観に基づく場所認識のための確率的手法を提案します。 DBoW2 は SIFT や SURF などの浮動小数点記述子を使用するため、トレーニングと検出用の語彙ツリーを構築し、バイナリおよび浮動小数点記述子をサポートします。 Refael は、インターフェイスを簡素化し、トレーニングと読み込みを高速化する、DBoW2、DBoW3、および FBoW の 2 つの改良バージョンを提案しました。その後、ORB-SLAM は ORB 記述子を採用し、ループ検出、再配置、および高速マッチングに DBoW2 を使用しました。その後、ORB-SLAM2、VINS-Mono、LDSO などの一連の SLAM システムでは、ループバック検出に DBoW3 が使用されました。これは、SLAM システムで位置認識を実装するための最も人気のあるツールとなっています。

上記の研究に触発されて、GSLAM はヘッダー ファイルのみを使用して DBoW3 ボキャブラリを実装しました。これには次の特徴があります:

  1. OpenCV への依存が削除され、すべての機能が 1 つにまとめられています。 C++11 ヘッダー実装のみに依存します。
  2. DBoW2/3 と FBoW の利点を組み合わせたもので、非常に高速で使いやすいです。 DBoW3 のようなインターフェイスを提供し、SSE および AVX 命令を使用してバイナリおよび浮動小数点記述子を高速化します。
  3. メモリ使用量が改善され、語彙の読み込み、保存、トレーニング、および画像特徴から BoW ベクトルへの変換が高速化されました。

表 3 は、4 つのワードバッグ ライブラリの比較を示しています。実験では、各親ノードには 10 個の子ノードがあり、ORB 特徴検出には ORB-SLAM が使用され、SIFT 検出には SiftGPU が使用されます。実装結果では ORB 語彙が使用されており、それぞれレベル 4 と 6、および SIFT 語彙が使用されています。 FBoW と GSLAM はどちらも語彙トレーニングにマルチスレッドを使用します。 GSLAM の実装は、語彙のロードと保存、新しい語彙のトレーニング、場所認識のための記述子リストの BoW ベクトルへの変換、高速特徴照合のための特徴ベクトルへの変換など、ほぼすべてのプロジェクトで他の実装よりも優れています。さらに、DBoW2 が大量のメモリを必要とする主な理由は断片化の問題であるため、GSLAM 実装では使用するメモリが少なくなり、割り当てられる動的メモリ ブロックも少なくなります。

GSLAM | 一个通用的SLAM架构和基准

6 SLAM 評価ベンチマーク

既存のベンチマークでは、ユーザーがテスト データ セットをダウンロードし、結果 精度評価を実行するには、動作環境を統一し、公正なパフォーマンス比較を評価するだけでは十分ではありません。 GSLAM の統一インターフェイスのおかげで、SLAM システムの評価がより洗練されます。 GSLAM の助けを借りて、開発者は SLAM プラグインをアップロードするだけで、固定リソースを使用して Docker 化された環境で速度、計算コスト、精度のさまざまな評価を実行できます。このセクションでは、いくつかのデータセットと実装された SLAM プラグインを最初に紹介します。次に、3 つの代表的な SLAM 実装が、速度、精度、メモリ、CPU 使用率に関して評価されます。この評価は、さまざまな SLAM プラグインを使用した統合 SLAM ベンチマーク実装の可能性を実証することを目的としています。

データセット

SLAM システムを実行するには、通常、センサー データ ストリームと対応する構成が必要です。開発者がコア SLAM プラグインの開発に集中できるようにするために、GSLAM は標準データ セット インターフェイスを提供しており、開発者は SLAM 入力を気にする必要がありません。オンライン センサー入力とオフライン データは、異なるデータ セット プラグインを通じて提供されます。指定されたデータ セット パスのサフィックスに従って、正しいプラグインが動的にロードされます。データセットの実装では、要求されたすべてのセンサー ストリームと関連する構成が提供される必要があるため、さまざまなデータセットに対して追加のセットアップは必要ありません。さまざまなセンサー ストリームはすべて、標準のトピック名とデータ形式を使用してメッセンジャーを通じて公開されます。

GSLAM は、表 4 に示すように、いくつかの一般的なビジュアル SLAM データセット プラグインを実装しています。ユーザーは、ヘッダーのみの GSLAM コアに基づいてデータセット プラグインを非常に簡単に実装し、それをプラグインとして公開し、アプリケーションでコンパイルすることもできます。

GSLAM | 一个通用的SLAM架构和基准

SLAM 実装

図 2 は、組み込みの Qt ビジュアライザを使用して実行されているオープン ソースの SLAM プラグインと SfM プラグインのスクリーンショットを示しています。 。このフレームワークは、直接方式、半直接方式、機能ベースの方式、さらには SfM 方式など、さまざまなアーキテクチャの SLAM システムをサポートします。 DSO 実装では、ROS ベースの実装と同様に、視覚化のために点群、カメラのポーズ、軌道、ポーズ マップなどの結果を公開する必要があります。ユーザーは、統一されたフレームワークを使用してさまざまな SLAM プラグインにアクセスでき、C、Python、Node-JS インターフェイスに基づいた SLAM ベースのアプリケーションを開発するのに非常に便利です。多くの研究者が開発に ROS を使用しているため、GSLAM は、ROS で定義されたメッセージをシームレスに送信し、開発者が Rviz を表示に活用したり、他の ROS ベースのアプリケーションの開発を継続できるようにするための ROS 視覚化プラグインも提供します。

GSLAM | 一个通用的SLAM架构和基准

評価

既存のベンチマークのほとんどはデータセットのみを提供するか、ユーザーが独自の評価を行うためのグラウンドトゥルースを備えていないため、GSLAM は組み込みプラグインといくつかのスクリプト ツールを提供します。計算性能と精度の評価。

この論文では、TUM RGBD データ セット内のシーケンス no Structure-texture-near-withloop を使用して、評価の実行を示します。次の実験では、3 つのオープンソース単眼 SLAM プラグイン DSO、SVO、ORB-SLAM を使用します。すべての実験では、i7-6700 CPU、GTX 1060 GPU、64 ビット Ubuntu 16.04 を実行する 16GB RAM を搭載したコンピューターを使用しました。

計算パフォーマンスの評価には、図 3 に示すように、メモリ使用量、割り当てられたメモリ ブロックの数、CPU 使用量、および各フレームの統計が含まれます。結果は、SVO が使用するメモリと CPU リソースが最も少なく、最速の速度を実現していることを示しています。また、SVO は単なる視覚的な走行距離計であり、実装内でローカル マップを維持するだけであるため、コストは安定しています。 DSO が割り当てるメモリ ブロックは少なくなりますが、100 MB を超えるメモリを消費し、増加が遅くなります。 DSO の問題の 1 つは、フレーム数が 500 を下回ると処理時間が大幅に増加し、さらにキーフレームの処理にさらに時間がかかることです。 ORB-SLAM は最も多くの CPU リソースを使用し、計算時間は安定していますが、BA が G2O ライブラリを使用し、増分最適化手法を使用しないため、メモリ使用量が急速に増加し、大量のメモリ ブロックの割り当てと解放が行われます。

GSLAM | 一个通用的SLAM架构和基准

オドメトリ軌跡の評価結果を図 4 に示します。図に示すように、SVO は高速ですがドリフトが大きく、絶対姿勢誤差 (APE) に関しては ORBSLAM が最高の精度を実現します。包括的な評価はプラグイン可能なプラグイン アプリケーションであるため、点群の精度などのより多くの評価指標を再実装できます。

GSLAM | 一个通用的SLAM架构和基准

7 概要

この記事では、GSLAM と呼ばれる新しい汎用 SLAM プラットフォームを紹介します。開発、評価、応用までを紹介します。このプラットフォームでは、一般的に使用されるツールキットがプラグインの形で提供され、ユーザーは独自のモジュールを簡単に開発することもできます。プラットフォームを使いやすくするには、インターフェイスを C++11 のみに依存するようにします。さらに、従来の SLAM と深層学習ベースの SLAM をより適切に統合したり、Web 上で分散操作を実行したりするために、Python および JavaScript インターフェイスが提供されています。

次の研究では、学習と使用を容易にするために、より多くの SLAM 実装、ドキュメント、およびデモ コードが提供されます。さらに、従来の SLAM と深層学習ベースの SLAM の統合が提供され、SLAM システムの未知の可能性をさらに探求します。

この作品のホームページは以下の通りです:

GSLAM: Main Page

SLAMの各部の原理を学ぶためのフレームワークって感じです~

GSLAM | 一个通用的SLAM架构和基准

元のリンク: https://mp.weixin.qq.com/s/PCxhqhK3t1soN5FI0w9NFw

以上がGSLAM | 一般的な SLAM アーキテクチャとベンチマークの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:51cto.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート