OpenVSLAM
Sumikura 2019 · 論文
一行要約 — 呼び出し可能なライブラリとして構築されたモジュール式のオープンソース視覚SLAMフレームワークであり、ORBベースの間接的パイプラインを備え、透視・魚眼・正距円筒(360度)カメラモデルに対応し、マップの保存/読み込みおよびローカライゼーションをサポートする。
問題
視覚SLAMはAR機器や自律ロボット、ドローン、UAVにとって不可欠であるが、「従来のオープンソース視覚SLAMフレームワークは、サードパーティのプログラムから呼び出されるライブラリとして適切に設計されていない」。事実上の標準であるORB-SLAM、LSD-SLAM、DSOは研究用アプリケーションであり、組み込みにくく、拡張しにくく、透視カメラに限定され、(論文の比較表によれば)マップの保存/読み込みができないものが多い。OpenMVGやOpenSfMのようなSfMパッケージは既に魚眼や正距円筒画像を扱っていたが、リアルタイム視覚SLAMフレームワークでそれを扱えるものは無かった。
手法とアーキテクチャ
OpenVSLAM(MM ‘19)は、C++(Eigen、OpenCV、g2o)で実装された単眼/ステレオ/RGB-Dシステムであり、その貢献はアルゴリズム的なものではなくアーキテクチャ的なものである——よく知られたSLAM手法が、明確なAPIと充実したドキュメント付きサンプルコードを備えた分離されたコンポーネントにカプセル化されている。
- 3つのモジュール: トラッキングはORBキーポイントマッチングと姿勢最適化によって各フレームのカメラ姿勢を推定し、キーフレーム挿入を判断する; マッピングは挿入されたキーフレームから新しい3D点を三角測量し、ウィンドウ付き局所バンドル調整を実行する; 大域最適化はループ検出、ポーズグラフ最適化(g2o)、大域BAを行う。ポーズグラフ最適化は軌跡のドリフトを解消し、単眼入力に対するスケールドリフトも打ち消す——これはORB-SLAM/ProSLAMのグラフベース間接的手法である。
- 設計としての間接的手法: ORB特徴(FASTキーポイント+バイナリ記述子)が選ばれた理由は、直接法が照明変化に対してより弱く、ローリングシャッターセンサーで性能が落ちるためである——つまりOpenVSLAMが対象とするスマートフォンや民生カメラでの話である。
- カメラモデルの抽象化: 透視・魚眼・正距円筒カメラは、基底クラス
camera::baseの背後で互換的に扱われる; ユーザーはこれを派生させることで新しいモデル(デュアル魚眼、カタディオプトリック)を追加できる。透視と魚眼は単眼・ステレオ・RGB-Dの各構成で動作する。著者らは、正距円筒画像を受け付ける初のオープンソース視覚SLAMフレームワークであると主張している——全方位視野によって、トラッキングがカメラの向きに依存しなくなる。 - マップI/Oとローカライゼーション: マップはMessagePack形式で保存/読み込みされ(サードパーティアプリケーションでも再利用可能)、新しいフレームは事前構築されたマップに対してローカライズできる。クロスプラットフォームのビューアはウェブブラウザ上で動作する。
- 評価プロトコル: Umeyama整合後の絶対軌跡誤差——単眼(スケール不定の軌跡)には、ステレオにはを用いる。
実験結果
Core i7-7820HKラップトップ上で、ORB-SLAM2と比較。
- EuRoC MAV(単眼、11シーケンス): 全体としてORB-SLAMと同等のトラッキング精度; 暗いシーケンスMH_04とMH_05では、OpenVSLAMの軌跡がより正確であり、追加のロバストマッチングによるフレームトラッキング手法によるものとされている。
- トラッキング時間、EuRoC MH_02: 平均23.84ms/フレーム(ORB-SLAMは27.96ms; 中央値23.38対24.97)——高速なORB抽出と、大域マップが拡大しても肥大化しないように保たれる局所マップによるもの。
- KITTI Odometry(ステレオ、11シーケンス): ATEは同等; シーケンス05では、平均56.32ms/フレーム(68.78msに対し; 中央値54.45対66.78)——より大きな画像とより最適化されたステレオマッチング実装による差がより大きい。
- 定性評価: 屋外(約6400フレーム、高低差、ハイダイナミックレンジのシーン)と屋内(約6700フレーム)での魚眼マッピングの成功; THETA Vによる屋外1万5000フレームシーケンスにわたる正距円筒マッピングでのループ閉じ込みの成功、および全方位観測によるテクスチャレス領域での屋内トラッキングの成功。
SLAMにおける意義
OpenVSLAMは、単にベンチマーク精度ではなく、ユーザビリティと統合を重視して設計された初期のSLAMコードベースの一つであり、研究・産業の両方で組み込み可能なコンポーネントとして広く採用された——特に、他のどのオープンシステムも対応していなかったパノラマ撮影リグ向けに。その歴史は一つの教訓も伝えている: GPLライセンスのORB-SLAM2から派生したコードに関する懸念から、オリジナルのリポジトリが削除され、コミュニティはStella-VSLAMとして開発を継続した。整理された特徴ベースSLAMアーキテクチャを学ぶための良い入門としては今も有効である。