自宅をSLAMったー。


この動画がやりたかったわけですが、できるらしいので、Kinectを使って、自宅で環境地図を作ってみました。
Mobile Robot Programming Toolkit (MRPT)のkinect-3d-slamの(強引な)動かし方を書き留めておきます。

  • 実行環境

ThinkPad x201 (Intel Core i5)
Ubuntu 11.04 (32bit?)
XBOX Kinect Sensor

  • 事前準備

事前にインストールしておくべきモジュールが以下。KinectOpenCVOpenGL等いろいろ使うから多い。

$ sudo apt-get install libwxgtk2.8-dev libftdi-dev libglut3-dev
$ sudo apt-get install zlib1g-dev libusb-1.0-0-dev
$ sudo apt-get install libdc1394-22-dev libavformat-dev libswscale-dev
$ sudo apt-get install libhighgui-dev libcvaux-dev
$ sudo apt-get install libgtest-dev libeigen2-dev

※ 公式サイトによれば、libeigen3-devを入れろとありますが、Ubuntu11.04のパッケージマネージャからは取得できませんので、とりあえず、libeigen2-devを入れてみます。問題あったらごめんなさい。
自分でソースをコンパイルする人は以下も。

$ sudo apt-get install build-essential pkg-config cmake

手順はオフィシャル(後掲)にも載ってます。

  • インストール

リポジトリ最新のパッケージを取得する。リポジトリのパッケージをあてないと実行エラーになります。

$ sudo add-apt-repository ppa:joseluisblancoc/mrpt
$ sudo apt-get update
$ sudo apt-get install libmrpt-dev mrpt-apps

  • 実行

そのままkinect-3d-slamを実行するとエラーになります。
どうやらアクセス権を設定しないとダメらしい。手っ取り早くsudo実行。

$ kinect-3d-slam
libusb couldn't open USB device /dev/bus/usb/002/005: Permission denied.
libusb requires write access to USB device nodes.
...
$ sudo kinect-3d-slam

動いたーーー。



部屋の出窓です。木製のブラインドなので変な色だし、本が雑然と置かれていてお恥ずかしい。
キャリブレーションされてないので、微妙にテクスチャと点群がずれている。
ゆっくり動かさないとNG。
特徴となる形状を5-6個(だったかな?)視野におさめておかないと、SLAMが崩れてしまうので注意。

  • 課題

SLAMで構築した点群データは、実行ファイルがある/usr/bin下に吐かれるpoint_cloud.txtとして出力されるのですが、mrpt-appsの中にはビューアがないので現在探し中。テクスチャ情報も捨てられてるっぽいし.. どうするかな..

  • まとめ

手順だけ見ると誰でも簡単にできますね。私のような怠け者にはいい世の中になりました。
計測結果をビューできてから記事をアップしたかったのですが、時間がなかったので中途半端な状態です。ご容赦ください。

  • 参考サイト

MRPTinGNU/Linuxrepositories
CompilingMRPT