Linux(Ubuntu) + ROS + KinectでKinect Hack

f:id:karaage:20160922003846j:plain:w640

Ubuntu PCでKinectを使う

 以前Raspberry PiでKinectを使ってみたりしました。

 ただ、やはりRaspberry Piだとスペック的に厳しくてあまり実用的でなかったので、Linux(Ubuntu)を入れたPCでKinectを使えるようにしてみました。Raspberry Piと同じくROS(Robot Operating System)というロボット業界で良く使われるミドルウェアを使用します。

 PCにLinux(Ubuntu)とROSをインストールする方法は以下参照下さい。

 使用したPCは以下です。ただ、スペック的にはちょい厳しい感じでした。

 KinectはV1を使用

Xbox 360 Kinect センサー

Xbox 360 Kinect センサー

 Kinect

Kinectセットアップ

 ROSのセットアップを完了させ以下コマンドを実行します。

$ sudo apt-get update
$ sudo apt-get install ros-indigo-freenect-launch

 KinectをPCに接続して以下コマンド実行すると。KinectがTopicをpublishします

$ roslaunch freenect_launch freenect.launch

 以下コマンド実行すると。rvizという可視化ソフトでpublishした3次元データ(PCL)を可視化することが可能です。

$ rosrun rviz rviz

 設定はFixed Framecamera_depth_frameにして、AddボタンをクリックしてPointCloud2を選択Topic/camera/depth_registered/pointsを選択します。

f:id:karaage:20160922002608p:plain:w640  自分の顔の3次元画像

SLAMテスト

 次にSLAMを試してみます。lsd slamと呼ばれる単眼のSLAMです。単眼SLAMなので、Kinectじゃない普通のWebカメラでも原理的にはできるのですが、Kinectがちゃんとデフォルトでキャリブレーションのデータ持っていて扱いやすいのでKinectで試してみます。

lsd_slam セットアップ

 以下コマンドで必要パッケージをインストール。

$ sudo apt-get install ros-indigo-libg2o ros-indigo-cv-bridge liblapack-dev libblas-dev freeglut3-dev libqglviewer-dev libsuitesparse-dev libx11-dev 

 以下コマンドでlsd_slamをセットアップ

$ git clone https://github.com/tum-vision/lsd_slam.git lsd_slam
$ rosmake lsd_slam

SLAM実行

 KinectをPCに接続して以下実行

$ roslaunch freenect_launch freenect.launch

 別のWindowで下記コマンド実行して、Viewerを起動

$ rosrun lsd_slam_viewer viewer

 別のWindowで下記コマンド実行してSLAM起動できます

$ rosrun lsd_slam_core live_slam image:=/camera/rgb/image_color camera_info:=/camera/rgb/camera_info

 結果の画像は省略(手抜き)

まとめ

 ROSでKinectを使ってみました。ROSは色々なパッケージが公開されているので、頑張れば面白いことできそうですが、日本語資料はほとんど無く、難易度も高そうです。昔、ProcessingでKinectで遊んだことがあるのですが、手軽さはそちらの方が数段上といった印象です。

 またそのうち色々やってみたいですが、そこまでできるか未定です。

Xbox 360 Kinect センサー

Xbox 360 Kinect センサー

参考記事

中部大学ロボット演習資料

Kinect等の色距離センサを用いた点群処理と3D物体認識(pdf資料)

Kinect等の色距離センサを用いた点群処理と3D物体認識チュートリアル(pdf資料)

関連記事