Octomapについての簡単に3次元地図を作る時のメモ
はじめに
Octomapについて、ライブラリがどうなっているのかを知るために以下のサイトに行った。
OctoMap - 3D occupancy mapping
そして、そのページにある論文を読んで動作について知った。 しかし、実際に作成していこうとなると論文で書いてあるように行かなかった。 また、必要なものが増えたため、ライブラリを使って地図を作成できた一連の流れを示す。
必要なもの
ハードウェア編
まずは、必要なものとして当たり前だがKinectは必要である。 XIONでも大丈夫だと思うが、実際Kinectを用いた例が多いため不安ではある。
ハードウェアに関しては以上である。
ソフトウェア編
今回は、タグにもあるようにROSを用いて地図を生成していこうと思う。 ROSのwikiにOctomap単体のページがあるが、結果としてよく見たサイトは以下のサイトである。
ここで、このページの下の方を見ていくと、Subscribeしているトピックで[ cloud_in ]というものがある。 実は、こいつが一番の悩みの種である。
というのも、このトピックは一見するとただの[ sensor_msgs/PointCloud2 ]をSubscribeしているだけに 見えて、Kinectの点群を入れればいいやと思う。 ここが、落とし穴で実際はこの方に点群とセンサーの座標が必要になってくる。
そのセンサーの座標を出すアプリケーションが必要である。 その座標を得る方法として、今回用いたアプリケーションは[ RTAB-map ]である。 このアプリケーションは、簡単に言ってしまえば画像の動きから座標を得る。 注意としては、その座標は絶対ではなく、相対座標である。
Example
実際、RTAB-mapってどういうものだろうと思い質問サイトを見つけ、それを実行した。 以後、それについて述べていく。
まず、1つ目のサイトして以下のサイトを紹介する。
Official RTAB-Map Forum - Build octomap with rtabmap?
ここでは、RTAB-mapを使ってみようの例が記載されている。 実際に行っていることは、ネット上の地図データを使って3次元地図を生成していく例が記載されている。
次に、2つ目のサイトとして以下のサイトを紹介する
Official RTAB-Map Forum - use rtabmap for UAV navigation
ここで行われていることは、実際にKinectを使って3次元地図をリアルタイムで生成することである。
おわりに
だいたい、Exampleで3次元地図を生成できることにはなったが、個人的にはこの3次元地図に別の情報を 加えていきたいと考えているため、そのプラグインの作成方法についてはまたいつか