2017/06/10 CV勉強会@関東
「AR/VRを支える技術」発表資料
ORB-SLAMを動かしてみた
takmin
自己紹介
2
テクニカル・ソリューション・アーキテクト
皆川 卓也(みながわ たくや)
フリーエンジニア(ビジョン&ITラボ)
「コンピュータビジョン勉強会@関東」主催
博士(工学)
略歴:
1999-2003年
日本HP(後にアジレント・テクノロジーへ分社)にて、ITエンジニアとしてシステム構築、プリ
セールス、プロジェクトマネジメント、サポート等の業務に従事
2004-2009年
コンピュータビジョンを用いたシステム/アプリ/サービス開発等に従事
2007-2010年
慶應義塾大学大学院 後期博士課程にて、コンピュータビジョンを専攻
単位取得退学後、博士号取得(2014年)
2009年-現在
フリーランスとして、コンピュータビジョンのコンサル/研究/開発等に従事
http://visitlab.jp
昔作ったもの
3
 ARウェルカムボード (2010年)
 https://www.youtube.com/watch?v=KgQguj78qMA
 ソース: https://github.com/takmin/OpenCV-Marker-less-AR
今日はこの話はしません
Visual SLAM
4
ARにおいて、カメラで撮影した画像上に3Dオブジェクトを
重畳表示するためには、撮影対象の三次元形状とそれに
対するカメラの位置と姿勢を正確に求める必要がある
Simultaneous Localization And Mapping (SLAM)
Localization
Mapping
ORB-SLAMとは?
5
 単眼カメラのVisual SLAM
 Mur-Artal, R., Montiel, J. M. M., & Tardos, J. D. (2015).
ORB-SLAM:AVersatile and Accurate Monocular
SLAM System. IEEETransactions on Robotics,
 ソースコード:
https://github.com/raulmur/ORB_SLAM2
 動画:
https://www.youtube.com/watch?v=ufvPS5wJAx0
その他有名なVisual SLAM論文
6
 PTAM
 Klein, G., & Murray, D. (2007). Parallel tracking and mapping for
small AR workspaces. ISMAR.
 TrackingとMappingを別スレッドで動かすことでリアルタイム動
作
 FASTで取得した特徴点を画像パッチでマッチングして追跡
 DTAM
 Newcombe, R.A., Lovegrove, S. J., & Davison,A. J. (2011). DTAM:
DenseTracking and Mapping in Real-Time. ICCV.
 特徴点ではなく画素の値からDepthを推定することで密な地
図を構築(要GPU)
その他有名なVisual SLAM論文
7
 LSD-SLAM
 Engel, J., Schops,T., & Cremers, D. (2014). LSD-SLAM: Large-
Scale Direct monocular SLAM. ECCV
 画像の輝度勾配が大きいところのみDepth推定することで高
速化
 SVO
 Forster, C., Pizzoli, M., & Scaramuzza, D. (2014). SVO: Fast semi-
direct monocular visual odometry. ICRA
 地図の作製は特徴点ベースで行い(キーフレームのみ)、ト
ラッキング時に特徴点周辺の輝度が合うようにカメラポーズ
推定
ORB-SLAMの仕組み
8
ORB-SLAMの仕組み
9
 Tracking、 Local Mapping、Loop Closingの3つのスレッド
が並列に動作
 Tracking: 入力フレームのカメラ位置/姿勢を推定
 Local Mapping: 地図(点群)を生成/更新
 Loop Closing: カメラ位置/姿勢の誤差の蓄積を除去
 全スレッドでORB特徴を利用
 MAP
 点(XYZ)とそれに紐づいた代表ORB特徴
 各キーフレームの全ORB特徴を保持
 Place Recognition:
 ORBによるBags-of-Wordsでクエリー画像に近いキーフレームを検索
 追跡失敗時やMapping時に対応点が見つからない時、Loopを探す
時などに利用
ORB
10
 画素ペアの大小でキーポイントと特徴量を計算するため、非
常に高速
 キーポイントは画像ピラミッドの各レベルでFASTにより検出
 キーポイント周辺の画素ペアの値の大小を0と1に割り当て(バイナ
リ特徴)
 バイナリ特徴のため省メモリ
 回転に対して不変
ORBで使用する画素ペア
(学習された例)
ORB-SLAMの仕組み
11
• XYZ(世界座標系)
• 代表ORB特徴
ORB-SLAMの仕組み
12
• キーフレームのカメ
ラパラメータ(内部/
外部)
• 全ORB特徴とMap
Pointsへのリンク
ORB-SLAMの仕組み
13
• キーフレームをノー
ドとした無向グラフ
• 共通するMap Points
が多いほどエッジの
重さが大きい
ORB-SLAMの仕組み
14
Covisibility Graphから
作成した全域木
キーフレームとグラフ表現
15
SpanningTree
に強いエッジ
を追加
15個以上の
共有点を持つ
場合エッジを
生成
Covisibility
Graphから作
成した全域木
(Spanning Tree)
ORB-SLAMの仕組み
16
事前に作成した
VocabularyTree
ORB-SLAMの仕組み
17
キーフレームの
BoW表現
ORB-SLAMの仕組み
18
入力フレームから
Fastキーポイントと
ORB特徴抽出
ORB-SLAMの仕組み
19
• キーポイント追跡しカメラ
姿勢推定
• 前フレーム追跡失敗時
はBoWで対応キーフ
レーム検索
ORB-SLAMの仕組み
20
• キーポイントとMap上
の点とをマッチング
• カメラ姿勢再計算
ORB-SLAMの仕組み
21
• キーフレームの
条件を満たして
いるか判定
ORB-SLAMの仕組み
22
• キーフレームを挿入して
Covisibility Graphと
SpanningTreeを更新
• BoW表現を計算
ORB-SLAMの仕組み
23
• キーフレームの点
のうち、ロバストで
ないものを除去
ORB-SLAMの仕組み
24
• Covisibility Graph上の
隣接キーフレームを用
いてMap Points生成
ORB-SLAMの仕組み
25
• バンドル調整で現キー
フレームと隣接キーフ
レーム上の点とカメラ
姿勢を改善
ORB-SLAMの仕組み
26
• Covisibility Graph上の
隣接キーフレームのう
ち、他と重複の大きい
ものを除去
ORB-SLAMの仕組み
27
• Covisibility Graph
上のループ候補
を取得
ORB-SLAMの仕組み
28
• ループ上で隣接するキーフ
レーム間の対応点を算出
• キーフレーム間の相似変
換算出(3D to 3D)
ORB-SLAMの仕組み
29
• ループ候補を統合
• 相似変換を伝播させ
てカメラ姿勢補正
ORB-SLAMの仕組み
30
• Essential Graph上でLoop
Closingにより各カメラ姿勢
を最適化
• カメラ姿勢最適化後、点群
の位置を最適化
ORB-SLAMを動かす
31
 ソースコード
 https://github.com/raulmur/ORB_SLAM2
 C++11
 ORB_SLAM2はORB_SLAMをステレオカメラとRGBD向け
に拡張したもの
 元のORB_SLAMのソースコードもあるが、単眼カメラの機能も
ORB_SLAM2に統合しているので、2を使うのが望ましい
 必要なライブラリをインストールしてbuild.shというシェル
を起動すればビルドできる。
 KITTI等の既存データセットを動かす場合
 リアルタイムでどうさせたいときはROSのセットアップした後、
build_ros.shでビルド
ORB-SLAMの依存ライブラリ
32
 Pangolin
 ビジュアライゼーションに必要
 https://github.com/stevenlovegrove/Pangolin
 OpenCV (2.4.11と3.2でテスト)
 画像の操作と特徴量の抽出
 http://opencv.org
 Eigen3
 g2oを動かすのに必要
 http://eigen.tuxfamily.org
 DBoW2
 Place Recognitionに使用。ORB-SLAM2に同梱
 g2o
 幾何学的な最適化に使用。ORB-SLAM2に同梱
 ROS (Hydro or Newer)
 リアルタイムで動かす時、カメラ出力をROSのトピックとして動かす必要
 http://ros.org
ORB-SLAMのサンプル
33
 あらかじめ、以下のサンプルコードが用意されており、コ
ンパイルすれば使える。
 Examples/Monocular/mono_euroc.cc
 EuRoCデータセット用サンプル
 Examples/Monocular/mono_kitti.cc
 KITTIデータセット用サンプル
 Examples/Monocular/mono_tum.cc
 TUMデータセット用サンプル
 Examples/ROS/ORB_SLAM2/src/ros_mono.cc
 外部接続したカメラで動かすためのサンプル
 Examples/ROS/ORB_SLAM2/src/AR/ros_mono_ar.cc
 外部接続したカメラ映像にキューブを重畳表示するサンプル
外部接続カメラでORB-SLAMを動かす
34
 外部接続カメラを使用するのはROS (Robot Operating
System)とROS上でカメラを動かすためのモジュールをイ
ンストールする必要がある。
 例えば、 https://github.com/bosch-ros-pkg/usb_cam
 カメラから映像を取得するトピック名を
/camera/image_rawとして実行した状態で、ORB-SLAMの
ros_monoやros_mono_arを動かす
まとめ
35
 単眼カメラによるSparseなVisual SLAM
 Tracking、Mapping、Loop Closingを別スレッドで動かすこ
とでリアルタイムに動作
 PTAMはTrackingとMappingのみ
 処理が高速でロバストな特徴量であるORBをTracking、
Mapping、Loop Closingで共通して使用
 Place Recognitionにも活用
 ソースコードが公開されている
 C++11のサポートやROSの使用を考えるとLinux環境が良い

More Related Content

PDF
20180527 ORB SLAM Code Reading
PPTX
ORB-SLAMの手法解説
PDF
20180424 orb slam
PDF
オープンソース SLAM の分類
PDF
SLAMチュートリアル大会資料(ORB-SLAM)
PDF
SSII2019企画: 画像および LiDAR を用いた自動走行に関する動向
PPTX
SLAM勉強会(PTAM)
PDF
20190307 visualslam summary
20180527 ORB SLAM Code Reading
ORB-SLAMの手法解説
20180424 orb slam
オープンソース SLAM の分類
SLAMチュートリアル大会資料(ORB-SLAM)
SSII2019企画: 画像および LiDAR を用いた自動走行に関する動向
SLAM勉強会(PTAM)
20190307 visualslam summary

What's hot (20)

PDF
SSII2021 [TS1] Visual SLAM ~カメラ幾何の基礎から最近の技術動向まで~
PDF
ROS を用いた自律移動ロボットのシステム構築
PDF
NDTスキャンマッチング 第1回3D勉強会@PFN 2018年5月27日
PDF
Cartographer と Autoware を用いた自律走行
PDF
ロボティクスにおける SLAM 手法と実用化例
PDF
20190825 vins mono
PDF
tf,tf2完全理解
PDF
Visual slam
PDF
SLAM入門 第2章 SLAMの基礎
PDF
LiDAR-SLAM チュートリアル資料
PDF
SSII2022 [TS2] 自律移動ロボットのためのロボットビジョン〜 オープンソースの自動運転ソフトAutowareを解説 〜
PPTX
CNN-SLAMざっくり
PDF
ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発
PDF
SLAM開発における課題と対策の一例の紹介
PPTX
mcl_3dl: amcl並に軽量な3-D/6-DoFローカリゼーションパッケージ
PDF
LiDAR点群と画像とのマッピング
PPTX
Structure from Motion
PPTX
Direct Sparse Odometryの解説
PDF
LiDAR点群とSfM点群との位置合わせ
PDF
20090924 姿勢推定と回転行列
SSII2021 [TS1] Visual SLAM ~カメラ幾何の基礎から最近の技術動向まで~
ROS を用いた自律移動ロボットのシステム構築
NDTスキャンマッチング 第1回3D勉強会@PFN 2018年5月27日
Cartographer と Autoware を用いた自律走行
ロボティクスにおける SLAM 手法と実用化例
20190825 vins mono
tf,tf2完全理解
Visual slam
SLAM入門 第2章 SLAMの基礎
LiDAR-SLAM チュートリアル資料
SSII2022 [TS2] 自律移動ロボットのためのロボットビジョン〜 オープンソースの自動運転ソフトAutowareを解説 〜
CNN-SLAMざっくり
ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発
SLAM開発における課題と対策の一例の紹介
mcl_3dl: amcl並に軽量な3-D/6-DoFローカリゼーションパッケージ
LiDAR点群と画像とのマッピング
Structure from Motion
Direct Sparse Odometryの解説
LiDAR点群とSfM点群との位置合わせ
20090924 姿勢推定と回転行列
Ad

Viewers also liked (20)

PDF
20170806 Discriminative Optimization
PDF
実践コンピュータビジョン 3章 画像間の写像
PPTX
第28回コンピュータビジョン勉強会@関東(kanejaki担当分)
PPTX
Cvim saisentan-5-2-tomoaki
PDF
cvsaisentan5 Multi View Stereo 3.3
PPTX
20150328 cv関東勉強会 sumisumithパート_v1.3
PPTX
関東コンピュータビジョン勉強会
PDF
On the Dynamics of Machine Learning Algorithms and Behavioral Game Theory
PDF
Stochastic Variational Inference
PDF
CVPR2016読み会 Sparsifying Neural Network Connections for Face Recognition
PPTX
20170819 CV勉強会 CVPR 2017
PDF
LCA and RMQ ~簡潔もあるよ!~
PDF
プログラミングコンテストでのデータ構造 2 ~動的木編~
PDF
sublabel accurate convex relaxation of vectorial multilabel energies
PPTX
Greed is Good: 劣モジュラ関数最大化とその発展
PDF
DeepLearningTutorial
PDF
ウェーブレット木の世界
PDF
PRML輪読#14
PPTX
Fractality of Massive Graphs: Scalable Analysis with Sketch-Based Box-Coverin...
20170806 Discriminative Optimization
実践コンピュータビジョン 3章 画像間の写像
第28回コンピュータビジョン勉強会@関東(kanejaki担当分)
Cvim saisentan-5-2-tomoaki
cvsaisentan5 Multi View Stereo 3.3
20150328 cv関東勉強会 sumisumithパート_v1.3
関東コンピュータビジョン勉強会
On the Dynamics of Machine Learning Algorithms and Behavioral Game Theory
Stochastic Variational Inference
CVPR2016読み会 Sparsifying Neural Network Connections for Face Recognition
20170819 CV勉強会 CVPR 2017
LCA and RMQ ~簡潔もあるよ!~
プログラミングコンテストでのデータ構造 2 ~動的木編~
sublabel accurate convex relaxation of vectorial multilabel energies
Greed is Good: 劣モジュラ関数最大化とその発展
DeepLearningTutorial
ウェーブレット木の世界
PRML輪読#14
Fractality of Massive Graphs: Scalable Analysis with Sketch-Based Box-Coverin...
Ad

Similar to ORB-SLAMを動かしてみた (20)

PDF
run Keras model on opencv
PDF
「コンピュータビジョン勉強会@関東」紹介資料
PDF
20170211クレジットカード認識
PDF
20160417dlibによる顔器官検出
PDF
ろくに電子工作もしたことない人間がIoT用ミドルウェアを作った話(IoTLT vol112 発表資料)
PDF
第34回CV勉強会「コンピュテーショナルフォトグラフィ」発表資料
PDF
「第63回コンピュータビジョン勉強会@関東」発表資料 CVの社会実装について考えていたらゲームを作っていた話
PDF
20140131 R-CNN
PDF
Pn learning takmin
PDF
How to feed myself with computer vision
PPTX
機械学習 温故知新(第47回 Machine Learning 15minutes! Broadcast)
PDF
20190706cvpr2019_3d_shape_representation
PPTX
複数サービスを共存させるために 試行錯誤したこと
PDF
機械学習による推定ユーザー属性の安定供給のための施策(第56回 Machine Learning 15minutes! Broadcast)
PPTX
アドテクノロジーのサービスにおけるアジャイル開発
PDF
Service Design Roundtable on 2/15/2014, Y. Sawatani
PPTX
研究室紹介
PDF
自社でつくれる生産性向上ツール 必要だと思ったらすぐに作れるビジネスアプリ
PDF
Microsoft AI と深層学習
PDF
第79回 Machine Learning 15minutes ! 生成AIをエンタープライズで活用するWatsonx.aiの紹介
run Keras model on opencv
「コンピュータビジョン勉強会@関東」紹介資料
20170211クレジットカード認識
20160417dlibによる顔器官検出
ろくに電子工作もしたことない人間がIoT用ミドルウェアを作った話(IoTLT vol112 発表資料)
第34回CV勉強会「コンピュテーショナルフォトグラフィ」発表資料
「第63回コンピュータビジョン勉強会@関東」発表資料 CVの社会実装について考えていたらゲームを作っていた話
20140131 R-CNN
Pn learning takmin
How to feed myself with computer vision
機械学習 温故知新(第47回 Machine Learning 15minutes! Broadcast)
20190706cvpr2019_3d_shape_representation
複数サービスを共存させるために 試行錯誤したこと
機械学習による推定ユーザー属性の安定供給のための施策(第56回 Machine Learning 15minutes! Broadcast)
アドテクノロジーのサービスにおけるアジャイル開発
Service Design Roundtable on 2/15/2014, Y. Sawatani
研究室紹介
自社でつくれる生産性向上ツール 必要だと思ったらすぐに作れるビジネスアプリ
Microsoft AI と深層学習
第79回 Machine Learning 15minutes ! 生成AIをエンタープライズで活用するWatsonx.aiの紹介

More from Takuya Minagawa (20)

PDF
R-SCoRe: Revisiting Scene Coordinate Regression for Robust Large-Scale Visual...
PDF
第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras
PDF
Machine Learning Operations (MLOps): Overview, Definition, and Architecture
PDF
MobileNeRF
PDF
点群SegmentationのためのTransformerサーベイ
PDF
Learning to Solve Hard Minimal Problems
PDF
ConditionalPointDiffusion.pdf
PDF
楽しいコンピュータビジョンの受託仕事
PDF
20210711 deepI2P
PDF
20201010 personreid
PDF
20200910コンピュータビジョン今昔物語(JPTA講演資料)
PDF
2020/07/04 BSP-Net (CVPR2020)
PDF
20200704 bsp net
PDF
20190131 lidar-camera fusion semantic segmentation survey
PDF
2018/12/28 LiDARで取得した道路上点群に対するsemantic segmentation
PDF
20181130 lidar object detection survey
PDF
object detection with lidar-camera fusion: survey (updated)
PDF
object detection with lidar-camera fusion: survey
PDF
3DFeat-Net
PDF
CVPR2018のPointCloudのCNN論文とSPLATNet
R-SCoRe: Revisiting Scene Coordinate Regression for Robust Large-Scale Visual...
第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras
Machine Learning Operations (MLOps): Overview, Definition, and Architecture
MobileNeRF
点群SegmentationのためのTransformerサーベイ
Learning to Solve Hard Minimal Problems
ConditionalPointDiffusion.pdf
楽しいコンピュータビジョンの受託仕事
20210711 deepI2P
20201010 personreid
20200910コンピュータビジョン今昔物語(JPTA講演資料)
2020/07/04 BSP-Net (CVPR2020)
20200704 bsp net
20190131 lidar-camera fusion semantic segmentation survey
2018/12/28 LiDARで取得した道路上点群に対するsemantic segmentation
20181130 lidar object detection survey
object detection with lidar-camera fusion: survey (updated)
object detection with lidar-camera fusion: survey
3DFeat-Net
CVPR2018のPointCloudのCNN論文とSPLATNet

ORB-SLAMを動かしてみた