2018/05/27 3D Vision勉強会@関東
ORB-SLAM Code Reading
takmin
自己紹介
2
株式会社ビジョン&ITラボ 代表取締役
皆川 卓也(みながわ たくや)
「コンピュータビジョン勉強会@関東」主催
博士(工学)
略歴:
1999-2003年
日本HP(後にアジレント・テクノロジーへ分社)にて、ITエンジニアとしてシステム構築、プリ
セールス、プロジェクトマネジメント、サポート等の業務に従事
2004-2009年
コンピュータビジョンを用いたシステム/アプリ/サービス開発等に従事
2007-2010年
慶應義塾大学大学院 後期博士課程にて、コンピュータビジョンを専攻
単位取得退学後、博士号取得(2014年)
2009年-現在
フリーランスとして、コンピュータビジョンのコンサル/研究/開発等に従事(2018年法人化)
http://visitlab.jp
コンピュータビジョン勉強会@関東
 こんなテーマでやってきました!
「コンピュータビジョン最
先端ガイド」の輪読会
ECCV読み会
強化学習縛り
論文読み会
AR/VRを支える
技術
ICCV読み会
CVPR読み会
CVでこんなもの作
りました大LT大会
CVの便利なツール/
ライブラリ
CVのお仕事
ハッカソン
OpenCV祭り
有名論文読み会
三次元形状計測・
認識
「CV勉強会」で検索!
https://sites.google.com/site/cvsaisentan/
ORB-SLAMとは?
4
 単眼カメラの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
ORB-SLAMコードリーディング
5
 ORB SLAM2
 https://github.com/raulmur/ORB_SLAM2
 ORB_SLAM2はORB_SLAMをステレオカメラと
RGBD向けに拡張したもの
 元のORB_SLAMのソースコードもあるが、単眼カメ
ラの機能もORB_SLAM2に統合しているので、2を
使うのが望ましい
 ここでは主に単眼カメラ部分についてのみ解説
 アルゴリズムについてはsyinari0123さんの解
説があったので割愛
ORB-SLAMを動かす
6
 githubからソースコードを入手
 C++11コンパイラが必要
 Visual Studio2015では無理だった(2017では?)
 必要なライブラリをインストールしてbuild.shと
いうシェルを起動すればビルドできる。
 KITTI等の既存データセットを動かす場合
 リアルタイムで動作させたいときはROSをセット
アップした後、build_ros.shでビルド
ORB-SLAMの依存ライブラリ
7
 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のサンプル
8
 あらかじめ、以下のサンプルコードが用意されており、コ
ンパイルすれば使える。
 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を動かす
9
 外部接続カメラを使用するのはROS (Robot
Operating System)とROS上でカメラを動かす
ためのモジュールをインストールする必要が
ある。
 例えば、 https://github.com/bosch-ros-pkg/usb_cam
 カメラから映像を取得するトピック名を
/camera/image_rawとして実行した状態で、
ORB-SLAMのros_monoやros_mono_arを動
かす
ORB-SLAMのコード構成
10
メインのコード群
ビルドのスクリプト
リアルタイムカメラ入力を扱うためのビルドス
クリプト
各データセットのための試験コードやAR等の実
行ファイル
DBoW2とg2o
Place Recognitionを行うための学習済み辞書
データ
ORB-SLAMコードの特徴
11
 実装は論文通り
 論文とコードの対応を見つけやすい
 論文と実装が違うというケースも割とあるので
 MonoとStereoとRGB-Dが一緒になっているので、それぞ
れを分離して読み解く必要
 ほとんど全てのパラメータがメンバ変数になっており、関
数の引数として渡されることがないため、各関数がどの
ようなパラメータに依存してるかが非常にわかりにくい。
 そのため、カスタマイズの影響範囲を見積もるのがツライ
 リアルタイム/マルチスレッドのため、デバッグがツライ。。。
 例えばLocal Mappingがデバッグ処理で遅れたらTrackingも止
まる
ORB-SLAMのコード
12
System.h
main()からcv::Mat形式の画像
を一枚一枚
System::TrackMonocular()で
Systemに渡す
Examplesフォルダにサンプル
ORB-SLAMのコード
13
System.h
Tracking.h
LocalMapping.h
LoopClosing.h
Map.hORBVocabulary.h
KeyFrameDatabase.h
Frame.h
KeyFrame.h
ORB-SLAMのコード
14
Read
Read/
Write
Read/Write
共有メモリ
Read/Write
Read
ORB-SLAMコードリーディング
15
本日お話しする範囲
 Systemの使い方
 Systemクラスの処理概要
 Trackingスレッドの処理概要
 LocalMappingスレッドの処理概要
 LoopClosingスレッドの処理概要
ORB-SLAMコードリーディング
16
本日お話しする範囲
 Systemの使い方
 Systemクラスの処理概要
 Trackingスレッドの処理概要
 LocalMappingスレッドの処理概要
 LoopClosingスレッドの処理概要
ライブラリ使用方法流れ
17
using namespace ORB_SLAM2;
System SLAM(voc_file, setting_file, System::MONOCULAR, true);
cv::VideoCapture cap(0);
cv::Mat frame;
while(true){
cap >> frame;
double time_stamp = (double)clock();
if(frame.empty())
break;
SLAM.TrackMonocular(frame, time_stamp);
}
SLAM.Shutdown();
SLAM.SaveKeyFrameTrajectoryTUM(“KeyFrameTrajectory.txt”);
ライブラリ使用方法流れ
18
using namespace ORB_SLAM2;
System SLAM(voc_file, setting_file, System::MONOCULAR, true);
cv::VideoCapture cap(0);
cv::Mat frame;
while(true){
cap >> frame;
double time_stamp = (double)clock();
if(frame.empty())
break;
SLAM.TrackMonocular(frame, time_stamp);
}
SLAM.Shutdown();
SLAM.SaveKeyFrameTrajectoryTUM(“KeyFrameTrajectory.txt”);
using namespace ORB_SLAM2;
/*VisualWordファイル、カメラパラメータファ
イル、モノクロ/ステレオ/RGBD、画面表示の
順で引数を与える */
System SLAM(voc_file, setting_file,
System::MONOCULAR, true);
ライブラリ使用方法流れ
19
using namespace ORB_SLAM2;
System SLAM(voc_file, setting_file, System::MONOCULAR, true);
cv::VideoCapture cap(0);
cv::Mat frame;
while(true){
cap >> frame;
double time_stamp = (double)clock();
if(frame.empty())
break;
SLAM.TrackMonocular(frame, time_stamp);
}
SLAM.Shutdown();
SLAM.SaveKeyFrameTrajectoryTUM(“KeyFrameTrajectory.txt”);
動画ファイルやカメラ等から画像のキャプ
チャ(cv::Mat)およびタイムスタンプ(double)を
取得
ライブラリ使用方法流れ
20
using namespace ORB_SLAM2;
System SLAM(voc_file, setting_file, System::MONOCULAR, true);
cv::VideoCapture cap(0);
cv::Mat frame;
while(true){
cap >> frame;
double time_stamp = (double)clock();
if(frame.empty())
break;
SLAM.TrackMonocular(frame, time_stamp);
}
SLAM.Shutdown();
SLAM.SaveKeyFrameTrajectoryTUM(“KeyFrameTrajectory.txt”);
/*Systemインスタンスに画像とタイムスタンプ
を渡す*/
SLAM.TrackMonocular(frame, time_stamp);
ライブラリ使用方法流れ
21
using namespace ORB_SLAM2;
System SLAM(voc_file, setting_file, System::MONOCULAR, true);
cv::VideoCapture cap(0);
cv::Mat frame;
while(true){
cap >> frame;
double time_stamp = (double)clock();
if(frame.empty())
break;
SLAM.TrackMonocular(frame, time_stamp);
}
SLAM.Shutdown();
SLAM.SaveKeyFrameTrajectoryTUM(“KeyFrameTrajectory.txt”);
/*SLAMを修了後、キーフレームの姿勢を
ファイルに保存*/
SLAM.Shutdown();
SLAM.SaveKeyFrameTrajectoryTUM(“KeyFra
meTrajectory.txt”);
ORB-SLAMコードリーディング
22
本日お話しする範囲
 Systemの使い方
 Systemクラスの処理概要
 Trackingスレッドの処理概要
 LocalMappingスレッドの処理概要
 LoopClosingスレッドの処理概要
System::System()
23
Systemコンストラクタ(System.cc: 32 - 114)内の
主な処理
1. VisualVocabulary読み込み(l.64)
2. Recognition Database生成(l.75)
3. Map生成(l.78)
4. 結果表示画面生成(l.81)
5. Tracking生成(l.86)
6. Local Mapping生成およびスレッド起動(l.90)
7. Loop Closing生成およびスレッド起動(l.94)
8. スレッド間相互参照設定(l.106)
System::System()
24
Systemコンストラクタ(System.cc: 32 - 114)内の
主な処理
1. VisualVocabulary読み込み(l.64)
2. Recognition Database生成(l.75)
3. Map生成(l.78)
4. 結果表示画面生成(l.81)
5. Tracking生成(l.86)
6. Local Mapping生成およびスレッド起動(l.90)
7. Loop Closing生成およびスレッド起動(l.94)
8. スレッド間相互参照設定(l.106)
mpVocabulary = new ORBVocabulary();
bool bVocLoad = mpVocabulary->loadFromTextFile(strVocFile);
System::System()
25
Systemコンストラクタ(System.cc: 32 - 114)内の
主な処理
1. VisualVocabulary読み込み(l.64)
2. Recognition Database生成(l.75)
3. Map生成(l.78)
4. 結果表示画面生成(l.81)
5. Tracking生成(l.86)
6. Local Mapping生成およびスレッド起動(l.90)
7. Loop Closing生成およびスレッド起動(l.94)
8. スレッド間相互参照設定(l.106)
// 引数にVisualVocabularyを与えてDB生成
mpKeyFrameDatabase = new KeyFrameDatabase(*mpVocabulary);
System::System()
26
Systemコンストラクタ(System.cc: 32 - 114)内の
主な処理
1. VisualVocabulary読み込み(l.64)
2. Recognition Database生成(l.75)
3. Map生成(l.78)
4. 結果表示画面生成(l.81)
5. Tracking生成(l.86)
6. Local Mapping生成およびスレッド起動(l.90)
7. Loop Closing生成およびスレッド起動(l.94)
8. スレッド間相互参照設定(l.106)
mpMap = new Map();
System::System()
27
Systemコンストラクタ(System.cc: 32 - 114)内の
主な処理
1. VisualVocabulary読み込み(l.64)
2. Recognition Database生成(l.75)
3. Map生成(l.78)
4. 結果表示画面生成(l.81)
5. Tracking生成(l.86)
6. Local Mapping生成およびスレッド起動(l.90)
7. Loop Closing生成およびスレッド起動(l.94)
8. スレッド間相互参照設定(l.106)
// カメラからの映像にORBを描画する画面
mpFrameDrawer = new FrameDrawer(mpMap);
// 点群とカメラ位置を描画する画面
mpMapDrawer = new MapDrawer(mpMap, strSettingsFile);
System::System()
28
Systemコンストラクタ(System.cc: 32 - 114)内の
主な処理
1. VisualVocabulary読み込み(l.64)
2. Recognition Database生成(l.75)
3. Map生成(l.78)
4. 結果表示画面生成(l.81)
5. Tracking生成(l.86)
6. Local Mapping生成およびスレッド起動(l.90)
7. Loop Closing生成およびスレッド起動(l.94)
8. スレッド間相互参照設定(l.106)
/* 描画画面、VisualVocabulary、KeyFrame DB、Map、カメラパラ
メータ、などを引数に与える*/
mpTracker = new Tracking(this, mpVocabulary, mpFrameDrawer,
mpMapDrawer, mpMap, mpKeyFrameDatabase,
strSettingsFile, mSensor);
System::System()
29
Systemコンストラクタ(System.cc: 32 - 114)内の
主な処理
1. VisualVocabulary読み込み(l.64)
2. Recognition Database生成(l.75)
3. Map生成(l.78)
4. 結果表示画面生成(l.81)
5. Tracking生成(l.86)
6. Local Mapping生成およびスレッド起動(l.90)
7. Loop Closing生成およびスレッド起動(l.94)
8. スレッド間相互参照設定(l.106)
/* 描画画面、VisualVocabulary、KeyFrame DB、Map、カメラパラ
メータ、などを引数に与え、このスレッドで動作させる*/
mpTracker = new Tracking(this, mpVocabulary, mpFrameDrawer,
mpMapDrawer, mpMap, mpKeyFrameDatabase,
strSettingsFile, mSensor);
System::System()
30
Systemコンストラクタ(System.cc: 32 - 114)内の
主な処理
1. VisualVocabulary読み込み(l.64)
2. Recognition Database生成(l.75)
3. Map生成(l.78)
4. 結果表示画面生成(l.81)
5. Tracking生成(l.86)
6. Local Mapping生成およびスレッド起動(l.90)
7. Loop Closing生成およびスレッド起動(l.94)
8. スレッド間相互参照設定(l.106)
/* Mapを渡してLocalMappingインスタンスを生成し、
新規スレッドでRun()を起動*/
mpLocalMapper = new
LocalMapping(mpMap, mSensor==MONOCULAR);
mptLocalMapping = new
thread(&ORB_SLAM2::LocalMapping::Run,mpLocalMapper);
System::System()
31
Systemコンストラクタ(System.cc: 32 - 114)内の
主な処理
1. VisualVocabulary読み込み(l.64)
2. Recognition Database生成(l.75)
3. Map生成(l.78)
4. 結果表示画面生成(l.81)
5. Tracking生成(l.86)
6. Local Mapping生成およびスレッド起動(l.90)
7. Loop Closing生成およびスレッド起動(l.94)
8. スレッド間相互参照設定(l.106)
/* MapとVocabularyとDBを渡してLoopClosingインスタンスを生成
し、新規スレッドでRun()を起動*/
mpLoopCloser = new LoopClosing(mpMap,
mpKeyFrameDatabase, mpVocabulary,
mSensor!=MONOCULAR);
mptLoopClosing = new
thread(&ORB_SLAM2::LoopClosing::Run, mpLoopCloser);
System::System()
32
Systemコンストラクタ(System.cc: 32 - 114)内の
主な処理
1. VisualVocabulary読み込み(l.64)
2. Recognition Database生成(l.75)
3. Map生成(l.78)
4. 結果表示画面生成(l.81)
5. Tracking生成(l.86)
6. Local Mapping生成およびスレッド起動(l.90)
7. Loop Closing生成およびスレッド起動(l.94)
8. スレッド間相互参照設定(l.106)
mpTracker->SetLocalMapper(mpLocalMapper);
mpTracker->SetLoopClosing(mpLoopCloser);
mpLocalMapper->SetTracker(mpTracker);
mpLocalMapper->SetLoopCloser(mpLoopCloser);
mpLoopCloser->SetTracker(mpTracker);
mpLoopCloser->SetLocalMapper(mpLocalMapper);
System::TrackMonocular()
33
 カメラやビデオから取得した画像
(cv::Mat)を引数として とタイムスタンプ
(timestamp)と一緒に入力
 内部では、画像とタイムスタンプをそのま
まトラッカー(mpTracker)の
GrabImageMonocular()メンバ関数へ渡し
て、カメラ姿勢や追跡中の点群の情報な
どを取得
ORB-SLAMコードリーディング
34
本日お話しする範囲
 Systemの使い方
 Systemクラスの処理概要
 Trackingスレッドの処理概要
 LocalMappingスレッドの処理概要
 LoopClosingスレッドの処理概要
Tracking::GrabImageMonocular()
35
 引数として、
System::TrackMonocular()から画像と
タイムスタンプが渡される
 画像をグレースケールに変換
 Frame構築
 Tracking::Track()関数呼び出し
 カメラの姿勢を返す
Tracking::GrabImageMonocular()
36
 引数として、
System::TrackMonocular()から画像と
タイムスタンプが渡される
 画像をグレースケールに変換
 Frame構築
 Tracking::Track()関数呼び出し
 カメラの姿勢を返す
mpCurrentFrame = Frame(mImGray, timestamp,
mpORBextractorLeft, mpORBVocabulary,
mK, mDistCoef, mbf, mThDepth);
グレースケール画像 タイムスタンプ
Tracking::GrabImageMonocular()
37
 引数として、
System::TrackMonocular()から画像と
タイムスタンプが渡される
 画像をグレースケールに変換
 Frame構築
 Tracking::Track()関数呼び出し
 カメラの姿勢を返す
mpCurrentFrame = Frame(mImGray, timestamp,
mpORBextractorLeft, mpORBVocabulary,
mK, mDistCoef, mbf, mThDepth);
ORB検出器
(Frameコンストラクタ内で使用)
VisualVocabulary
Tracking::GrabImageMonocular()
38
 引数として、
System::TrackMonocular()から画像と
タイムスタンプが渡される
 画像をグレースケールに変換
 Frame構築
 Tracking::Track()関数呼び出し
 カメラの姿勢を返す
mpCurrentFrame = Frame(mImGray, timestamp,
mpORBextractorLeft, mpORBVocabulary,
mK, mDistCoef, mbf, mThDepth);
カメラ行列 歪パラメータ Monocular SLAMでは使用しない
Tracking::Track()
39
Track()
Frame::Frame()
Tracking::Track()
40
Track()
Frame::Frame()
MonocularInitializ
ation()
• 対応点が十分とれた2つのフレー
ムからMapとCamera Poseの初期値
算出
• FとHを並行して求めて、良い方の
モデルを採用
• 詳細はInitializer::Initialize()参照
Tracking::Track()
41
Track()
Frame::Frame()
• Local Map Points
の追跡
• カメラ姿勢推定
Track Local Map
TrackWithMotionModel()
TrackLocalMap()
TrackReferenceKeyFrame()
Tracking成功Tracking失敗
OK
NG
NG
OK
OKNG
前フレームのキーポイ
ントと対応する点を現
フレームから速度一定
と仮定して探索し、対
応点からポーズ推定
BoWで対応キーフレー
ムの対応点を探索し、
ポーズ推定
対応するLocal Mapを
Refineして、ポーズ推定
Tracking::Track()
43
Track()
Frame::Frame()
KeyFrameが条件を満たしているか
の判定
if(NeedNewKeyFrame())
CreateNewKeyFrame();
ORB-SLAMコードリーディング
44
本日お話しする範囲
 Systemの使い方
 Systemクラスの処理概要
 Trackingスレッドの処理概要
 LocalMappingスレッドの処理概要
 LoopClosingスレッドの処理概要
LoopMapping::Run()
45
Run()
LoopMapping::Run()
46
Run()
新しいKeyFrameが来たかの判定
CheckNewKeyFrames();
LoopMapping::Run()
47
Run()
• キーフレームを挿入して
Covisibility GraphとSpanning
Treeを更新
• BoW表現を計算
ProcessNewKeyFrame();
LoopMapping::Run()
48
Run()
キーフレームの点のうち、ロバスト
でないものを除去
MapPointCulling();
LoopMapping::Run()
49
Run()
Covisibility Graph上の隣接キーフ
レームを用いて追跡点の三次元
座標を算出しMap Points生成
CreateNewMapPoints();
もう一つ隣のキーフレームを用い
て残った追跡点のMap Points生成
SearchInNeighbors();
LoopMapping::Run()
50
Run()
バンドル調整で現キーフレームと
隣接キーフレームの姿勢、および
それらから観測できる点群を最適
化
Optimizer::LocalBundleAdjustmen
t(mpCurrentKeyFrame,&mbAbort
BA, mpMap);
LoopMapping::Run()
51
Run()Covisibility Graph上の隣接キーフ
レームのうち、他と重複の大きいも
のを除去
KeyFrameCulling();
ORB-SLAMコードリーディング
52
本日お話しする範囲
 Systemの使い方
 Systemクラスの処理概要
 Trackingスレッドの処理概要
 LocalMappingスレッドの処理概要
 LoopClosingスレッドの処理概要
LoopClosing::Run()
53
Run()
LoopClosing::Run()
54
Run()
新規キーフレームの取得
CheckNewKeyFrames();
LoopClosing::Run()
55
Run()
Covisibility Graph上のループ候補
を取得
DetectLoop();
LoopClosing::Run()
56
Run()
• ループ上で隣接するキーフレー
ム間の対応点を算出
• キーフレーム間の相似変換算出
(3D to 3D)
ComputeSim3();
LoopClosing::Run()
57
Run()
• 相似変換を伝播させてカメラ姿
勢補正
• Essential Graph上でLoop
Closingにより各カメラ姿勢を最
適化
• カメラ姿勢最適化後、点群の位
置を最適化
CorrectLoop();
まとめ
58
 実装は論文通りなので、論文と照らし合わせながらソー
スコードを読んだ方が理解が早い。
 巨大なヒューリスティックの塊
 Systemクラスがメインで、Trackingをメインスレッドで動か
し、LocalMapping、LoopClosingのスレッドを生成。
 各クラス内の処理ではほとんどメンバー関数自体には引
数を渡さず、メンバー変数を直接変更するため、各関数
の影響範囲が見えづらい
 リアルタイムかつマルチスレッドで処理が複雑、かつクラ
ス同士が複雑に絡み合っており、カスタマイズは非常に
ツライ。。。

More Related Content

PPTX
ORB-SLAMの手法解説
PDF
20190825 vins mono
PDF
20190307 visualslam summary
PDF
SLAMチュートリアル大会資料(ORB-SLAM)
PDF
How to use Apache TVM to optimize your ML models
PDF
画像生成・生成モデル メタサーベイ
PDF
5G Network Architecture and Design
PDF
Cartographer を用いた 3D SLAM
ORB-SLAMの手法解説
20190825 vins mono
20190307 visualslam summary
SLAMチュートリアル大会資料(ORB-SLAM)
How to use Apache TVM to optimize your ML models
画像生成・生成モデル メタサーベイ
5G Network Architecture and Design
Cartographer を用いた 3D SLAM

What's hot (20)

PDF
ORB-SLAMを動かしてみた
PDF
20180424 orb slam
PDF
Visual slam
PPTX
SLAM勉強会(3) LSD-SLAM
PDF
SSII2019企画: 画像および LiDAR を用いた自動走行に関する動向
PDF
オープンソース SLAM の分類
PDF
Visual SLAM: Why Bundle Adjust?の解説(第4回3D勉強会@関東)
PPTX
CNN-SLAMざっくり
PDF
SLAM入門 第2章 SLAMの基礎
PPTX
SLAM勉強会(PTAM)
PDF
大域マッチングコスト最小化とLiDAR-IMUタイトカップリングに基づく三次元地図生成
PDF
ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発
PDF
三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介
PDF
LiDAR点群と画像とのマッピング
PPTX
Direct Sparse Odometryの解説
PDF
SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~
PPTX
Structure from Motion
PDF
画像認識の初歩、SIFT,SURF特徴量
PDF
Sift特徴量について
PPTX
mcl_3dl: amcl並に軽量な3-D/6-DoFローカリゼーションパッケージ
ORB-SLAMを動かしてみた
20180424 orb slam
Visual slam
SLAM勉強会(3) LSD-SLAM
SSII2019企画: 画像および LiDAR を用いた自動走行に関する動向
オープンソース SLAM の分類
Visual SLAM: Why Bundle Adjust?の解説(第4回3D勉強会@関東)
CNN-SLAMざっくり
SLAM入門 第2章 SLAMの基礎
SLAM勉強会(PTAM)
大域マッチングコスト最小化とLiDAR-IMUタイトカップリングに基づく三次元地図生成
ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発
三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介
LiDAR点群と画像とのマッピング
Direct Sparse Odometryの解説
SSII2019TS: 実践カメラキャリブレーション ~カメラを用いた実世界計測の基礎と応用~
Structure from Motion
画像認識の初歩、SIFT,SURF特徴量
Sift特徴量について
mcl_3dl: amcl並に軽量な3-D/6-DoFローカリゼーションパッケージ
Ad

Similar to 20180527 ORB SLAM Code Reading (20)

PPTX
とあるメーカーのRedmine活用事例
PDF
3DFeat-Net
PDF
SSII2022 [OS3-03] スケーラブルなロボット学習システムに向けて
PPTX
CloudConductorの特長と最新動向(OSSユーザーのための勉強会#7)
PDF
2018/12/28 LiDARで取得した道路上点群に対するsemantic segmentation
PDF
20190706cvpr2019_3d_shape_representation
PDF
object detection with lidar-camera fusion: survey
PDF
Share pointを支えるsql server2014最新情報 tokyo_公開用
PDF
run Keras model on opencv
PDF
Semantic segmentation2
PDF
レガシー Web からの脱却 ~ 開発者が次に目指すべき Web アプリの姿とは?
PDF
DSL駆動によるクラウド・アプリケーション開発
PDF
Spring Bootハンズオン ~Spring Bootで作る マイクロサービスアーキテクチャ! #jjug_ccc #ccc_r53
PPTX
セミナー資料「STAR-CCM+ クラウド活用ハンズオンセミナー with Rescale」
PDF
20181130 lidar object detection survey
PDF
20110212 Silverlight から Bing Maps に触れる
PDF
モバイルが モーションセンサーに 出会ったら
PPTX
Relationship betweenddd and mvc
PDF
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
PPTX
Azure Remote Renderingを試す
とあるメーカーのRedmine活用事例
3DFeat-Net
SSII2022 [OS3-03] スケーラブルなロボット学習システムに向けて
CloudConductorの特長と最新動向(OSSユーザーのための勉強会#7)
2018/12/28 LiDARで取得した道路上点群に対するsemantic segmentation
20190706cvpr2019_3d_shape_representation
object detection with lidar-camera fusion: survey
Share pointを支えるsql server2014最新情報 tokyo_公開用
run Keras model on opencv
Semantic segmentation2
レガシー Web からの脱却 ~ 開発者が次に目指すべき Web アプリの姿とは?
DSL駆動によるクラウド・アプリケーション開発
Spring Bootハンズオン ~Spring Bootで作る マイクロサービスアーキテクチャ! #jjug_ccc #ccc_r53
セミナー資料「STAR-CCM+ クラウド活用ハンズオンセミナー with Rescale」
20181130 lidar object detection survey
20110212 Silverlight から Bing Maps に触れる
モバイルが モーションセンサーに 出会ったら
Relationship betweenddd and mvc
『これからの.NETアプリケーション開発』セミナー .NET用アプリケーション フレームワーク Open 棟梁 概説
Azure Remote Renderingを試す
Ad

More from Takuya Minagawa (20)

PDF
R-SCoRe: Revisiting Scene Coordinate Regression for Robust Large-Scale Visual...
PDF
「第63回コンピュータビジョン勉強会@関東」発表資料 CVの社会実装について考えていたらゲームを作っていた話
PDF
第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras
PDF
ろくに電子工作もしたことない人間がIoT用ミドルウェアを作った話(IoTLT vol112 発表資料)
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
object detection with lidar-camera fusion: survey (updated)
PDF
CVPR2018のPointCloudのCNN論文とSPLATNet
PDF
Curiosity driven exploration
PDF
「コンピュータビジョン勉強会@関東」紹介資料
R-SCoRe: Revisiting Scene Coordinate Regression for Robust Large-Scale Visual...
「第63回コンピュータビジョン勉強会@関東」発表資料 CVの社会実装について考えていたらゲームを作っていた話
第61回CV勉強会「CVPR2024読み会」(前編)発表資料:State Space Models for Event Cameras
ろくに電子工作もしたことない人間がIoT用ミドルウェアを作った話(IoTLT vol112 発表資料)
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
object detection with lidar-camera fusion: survey (updated)
CVPR2018のPointCloudのCNN論文とSPLATNet
Curiosity driven exploration
「コンピュータビジョン勉強会@関東」紹介資料

20180527 ORB SLAM Code Reading