g2oのインストールと簡単なサンプルの実行
g2oとは?
- SLAMによく使われるグラフ最適化ライブラリ
グラフ最適化
例
- 曲線フィッティング($y=ax2+bx+c$)
- 頂点
- $a, b, c$
- 辺
- 誤差項
- 頂点
- BA
- 頂点
- 最適化変数
- カメラポーズ
- ランドマーク
- 最適化変数
- 辺
- 誤差項
- カメラのtrajectory
- カメラから観測したランドマークを結んだもの
- 誤差項
- 頂点
- 曲線フィッティング($y=ax2+bx+c$)
g2oのインストール
- https://github.com/RainerKuemmerle/g2o
- 環境はWindows + VIsual Studio 2015
- git cloneしたものをビルドしたらtypes_slam2d_addonsでEigen関連のエラーが出た
- ちゃんとlatest releaseをビルドしたらうまく行きました
- 後はgithubに書いてある通りにビルドすればうまく行った
曲線フィッティングをサンプルとSLAMBOOKにそってほぼ写経したものをgithubに上げました
SLAMBOOKに分かりやすく説明が書かれている 頂点を$a, b, c$のベクトル、辺を各データの誤差としてグラフを考える つまり1つの頂点からその頂点自身に向けてデータ数だけ辺が伸びているグラフになる
実装では頂点はBaseVertex、辺はBaseUnaryEdgeを継承すればいい
頂点ではGNやLMで足していくときの演算の関数oplusimplを定義する これは単純に足し算すればいいだけでなくリー代数のときのような特殊な演算が必要なときがあるから
疑問なのはread()とwrite()がvirtualなんだけどSLAMBOOKとかだと関数の中身は書かずに、実行すると返り値がないとエラーが出てしまうこと これはg2o本家のサンプルを見るととりあえずfalseを返していたのでそれに倣ったら一応動いた まあとりあえずg2oを試すのが目的だから