自宅をSLAMったー。
この動画がやりたかったわけですが、できるらしいので、Kinectを使って、自宅で環境地図を作ってみました。
Mobile Robot Programming Toolkit (MRPT)のkinect-3d-slamの(強引な)動かし方を書き留めておきます。
- 実行環境
ThinkPad x201 (Intel Core i5)
Ubuntu 11.04 (32bit?)
XBOX Kinect Sensor
- 事前準備
事前にインストールしておくべきモジュールが以下。Kinect、OpenCV、OpenGL等いろいろ使うから多い。
$ 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の中にはビューアがないので現在探し中。テクスチャ情報も捨てられてるっぽいし.. どうするかな..
- まとめ
手順だけ見ると誰でも簡単にできますね。私のような怠け者にはいい世の中になりました。
計測結果をビューできてから記事をアップしたかったのですが、時間がなかったので中途半端な状態です。ご容赦ください。
- 参考サイト