ラベル Kinect の投稿を表示しています。 すべての投稿を表示
ラベル Kinect の投稿を表示しています。 すべての投稿を表示

2011年1月30日日曜日

Kinectを使ったジェスチャ認識でルンバを操縦する

Kinectでルンバを操縦してみました。

ハードウェア接続は
Kinect =USB=> PC =Bluetooth=> Roomba
という感じです。


openni_trackerというパッケージを使ってtfのボーンを作り、
tfのデータから腰と手先位置の差分をとって似非ジェスチャ認識させています。
Kinectの目の前にいないと操縦できないのがいまいちですね。

ソースも適当ですが、
一応otl_niスタックとして上げました。
むちゃくちゃ簡単でした。

ルンバのBluetoothモジュールは@longjie0723 のFRISK Roombaを使っています。
http://orientalrobotics.blogspot.com/2011/01/friskroomba.html
非常に快適です。

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年11月21日日曜日

KinectをROSで使ってみる

Kinect10分くらい前に1日遅れでやっと届きました。
Amazon遅すぎです。。。

でも入手10分でデプスイメージまで取れました。
世界のハッカーありがとう。


黒いところは問題ない様子。透明部分は当然ながら取れない。

近すぎると距離が取れない(白く抜けてしまっている)

模様がなくても取れるのがステレオカメラとの違い。

遠いところ(扉の奥)は見えない(白く抜けている)

やっぱり直射日光には弱い。



全体的にのっぺりしたところが得意みたいです。

全体的にイイです。
想定した通りのイメージ。

障害物回避に使うには、近距離が見えなすぎるので実用的ではないきがしてきました。
どうしましょう。

以下インストールから実行方法。

基本的に以下の通りにやりました。
http://www.ros.org/wiki/kinect


  1. rosintallスクリプトとgitのインストール
    sudo apt-get install python-setuptools
    sudo easy_install -U rosinstall
    sudo apt-get install git-core
  2. rosintallファイルを入手
    wget http://github.com/ros-pkg-git/kinect/raw/master/kinect.rosinstall --no-check-certificate
  3. ROS-kinect stackの入手
    rosinstall ~/kinect-devel /opt/ros/cturtle kinect.rosinstall
  4. libfreenectをgitで入手
    cd ~/kinect-devel/kinect
    git submodule update --init --recursive
  5. ビルド
    . ~/kinect-devel/setup.sh
    rosmake kinect --rosdep-install

ただし、このままでは動かないので
$ sudo chmod -R 777  /dev/bus/usb/
しました。

実行方法は
$ roscore
$ roscd kinect_camera
$ bin/kinect_node
して、
もうひとつのターミナルで
$ rosrun image_view image_view image:=/camera/depth/image_raw
で、デプスイメージの表示

$ rosrun image_view image_view image:=/camera/rgb/image_raw
でカメラ画像の表示です。

これからPCLも試してみます。

2010年11月12日金曜日

ROS Kinect node

Kinectはご存知ですか?
http://www.xbox.com/ja-JP/kinect
XBOX360のWiiに対抗?したコントローラー?で、
カメラで人の形状を認識して、ジェスチャなどで遊ぶことができます。

で、それに使われているのがPrime Sense
http://www.primesense.com/
というセンサで、3次元形状が単眼カメラ+プロジェクタで取得できるというものです。

Kinectも同じように3次元形状を取得できるはずですが、
XBOX360の発売元のMicrosoftはそれをしてほしくない
(ゲームのコントローラだから安く売れる、つまりゲームソフトで元を取る)
ので、APIなどは公開されていません。

それをハックした人がいました。
(ハックには懸賞金$3000($1000から徐々にあがりました)がかけられていました。)

で、さらにそれをROSで使いやすいようにした人がいます。
↓はそのビデオ。3次元形状がとれてますね。Viewerはrvizのようです。



最近はこの話題でもちきりです。僕の中では。
何がスゴイって、安いんです。12000円で買えるんです。
普通のレーザーだって40万とか、3Dだと100万円でも安いほう?
ですから、この値段は本当に驚異的です。
さすがに精度はでないと思うので、用途は限定的になるかと思いますが、
非常に想像力を掻き立てられます!

早速Kinect予約しました。日本では11/20発売です。
XBOX360は持ってません!

届いたらこれを使ってPCLやらいろいろ認識系ソフトを試してみたいと思います。
それまでにキャリブレーションとかできるようになっていることに期待。