C++
SLAM
RGBD
RTAB-MAP

Rtab-mapのソースコードをいじってみたい

はじめに

今回はRtab-mapのソースコードを改造していくには、どうしたらいいのかについて書いていきます。
といっても、私はそんなにプログラミングとか強い人じゃないので、あまり期待しないでください。
個人的なメモみたいなものです。

いじる方法としては
・ライブラリを使用したexamplesをいじる
・Rtab-mapのライブラリをいじる
の2つの方法があると思います。
それぞれ見て行きましょう。

examples

では1つ目。
Rtab-mapをダウンロードすると、パッケージの中にexamplesというのがあります。
これはRtab-mapを開発しているintrolabが用意しているライブラリ使用例です。
(公式ウィキ:https://github.com/introlab/rtabmap/wiki)
見てみると4つほど例がありますね。
・BOWMapping
・NoEventsExample
・RGBDMapping
・WifiMapping

BOWMappingはぶっちゃけ見ていないので分かりません、BagOfWordsをどうこうしてる例なんだと思います。
NoEventsExampleは並列処理を用いずに単スレッドで処理している例。この例での使用カメラはステレオカメラです。
RGBDMappingはRGBDセンサを用いている例。Kinectとかfreenectを用意してあるなら、これですぐにマッピングできそうですね。他のRGBDセンサでも環境が整っていれば大丈夫だと思います。
WifiMappingはユーザーデータを付け足す際の使用例です。ユーザーデータ用のスレッドを立ててマップに反映するという内容です。例としてWifiの強度を反映させています。

ライブラリ

Rtab-mapではPCLやUtiliteライブラリを用いて、Rtab-mapの基本動作に必要なスレッドを立てるためのクラスなどが用意されています。
正直な話、このあたりを改造するのは自分の能力に見合ってないし、自分としては特に目的も無いなぁと思うのでさわっていません。
まぁ、基本的な処理内容(計算とか)を変更したい場合はここを変えていく必要があるのでしょう。
なお、exampleをいじる際にutiliteのUEventとかUThreadあたりを見ておくと、読み解きやすいと思います。

おわりに

私も研究頑張るので、皆さんもがんばって!!