2010年12月14日火曜日

ni (OpenNIのrosスタック)を試す。

OpenNIはKinectを利用する認識・デバイス操作ライブラリです。

ROSからOpenNIを利用するには以下を参考にインストールしましょう。
Ubuntu 10.04, cturtleを前提とします。

http://www.ros.org/wiki/ni


$ echo "- git: {local-name: ni, uri: 'https://github.com/ros-pkg-git/ni.git', version: master}" > /tmp/ni.ri
$ rosinstall ~/ni /opt/ros/cturtle /tmp/ni.ri
$ source ~/ni/setup.sh
$ rosmake ni --rosdep-install
$ sudo cp `rospack find ps_engine`/install/55-primesense-usb.rules /etc/udev/rules.d/


そしてリブートしましょう。


これでインストール終了。


試すには
$ roslaunch openni_camera openni_kinect.launch
$ rosrun rviz rviz
して、
Fixed FrameとTarget Frameを/openni_depthにして、
Point Cloud2として、
/camera/depth/points2を指定すると
rviz上で3D色付きイメージが見れます。ぐりぐり動かせます。

人物抽出サンプルを実行するには


export XN_SENSOR_VENDOR_ID=0x045E 
export XN_SENSOR_PRODUCT_ID=0x02AE
export XN_HOST_PROTOCOL_ALGORITHM_REGISTRATION=0x40
rosrun openni Sample-NiUserTracker

とします。
http://www.ros.org/wiki/nite
のドキュメントには64bitのみ対応と書いてありますが、
すでにソースはちゃんと対応してあるので、x86(32bit)でも普通に実行できます。

動画はgtk-recordmydesktopですべてのフレームをキャプチャするオプションをONにしてとりました。
エンコードは
$ mencoder out.ogv -oac mp3lame -ovc lavc -lavcopts vcodec=mpeg4 -o output.mp4
という感じ。

2010年12月4日土曜日

pcl(unstable)のインストール

pcl (point cloud library)をインストールします。
http://www.ros.org/wiki/pcl

pclは3Dのレーザーデータから物体認識するためのライブラリ(たぶん)です。
これまでそんな3Dセンサ持っていないので関係ないと思っていましたが、
Kinectのおかげでpclが使えそうな雰囲気がしてきたのでとりえあず触ってみたいと思います。

私の環境ではROSはcturtleを利用していますが、いろんなところで
cturtleのpclは古すぎて、APIも変わっているしオススメしない、という雰囲気を感じるので
なるべく新しいものを入れたいと思います。

pclを使っている@garaemonさんに聞いたところによると「まじunstableおすすめ」ということでしたので、
いれてみます。

以下のような記述をpcl.rosintallとして保存して、
$ rosinstall ros pcl.rosinstall
でソースを入手しました。


- svn:
    uri: https://code.ros.org/svn/ros-pkg/stacks/perception_pcl/tags/unstable
    local-name: perception_pcl
- svn:
    uri: https://code.ros.org/svn/ros-pkg/stacks/perception_pcl_addons/tags/unstable
    local-name: perception_pcl_addons

ROS全部makeするのめんどくさかったので、ROS本体はcturtleのまま、
pclだけunstable版でやってみます。

環境変数ROS_PACKAGES_PATHのcturtleのほうより先に、このunstable版がくるようにして、
$ roscd pcl_tutorial
$ rosmake --rosdep-install
としてみました。

試しに
$ roscd pcl_tutorial
$ cd data
$ ../bin/tutorial_narf_keypoint_extraction ./office_scene.pcd
としてみると、以下のようにnarf特徴点の抽出と表示ができたようです。


早くKinectのデータで試してみたいですね。
Tutorialがあるので必要ありそうなところだけやってみたいと思います。