2015年1月4日日曜日

10.ロボットビジョン(応用編その1) 

10.5 ROSとOpenCVのブリッジ: cv_bridge パッケージ
cv_bridge パッケージでROSでイメージデータをOpenCVで画像処理してみます。
カメラがKinectの時は、
$ roslaunch rbx1_vision openni_node.launch
あるいは、Webカメラの時は、
$ roslaunch rbx1_vision uvc_camera.launch device:=/dev/video0
別のターミナルウィンドウで、
$ rosrun rbx1_vision cv_bridge_demo.py
次のような画像が表示されます。

10.6 ros2opencv2.py ユーティリティ
カメラがKinectの時は、
$ roslaunch rbx1_vision openni_node.launch
あるいは、Webカメラの時は、
$ roslaunch rbx1_vision uvc_camera.launch device:=/dev/video0
別のターミナルウィンドウで、
$ roslaunch rbx1_vision ros2opencv2.launch
もう一つ別のターミナルウィンドウで、
 $ rostopic echo /roi

次のような画像が表示されます。



10.7 録画された動画の処理
video2ros.pyプログラムで、予め録画した動画を利用することができます。
以前に使った、画像処理にプログラムを実行し、
$ rosrun rbx1_vision cv_bridge_demo.py
別のターミナルウィンドウで、

$ roslaunch rbx1_vision video2ros.launch input:=`rospack find \
rbx1_vision`/videos/hide2.mp4




2015年1月2日金曜日

10. ロボットビジョン(準備編)

10章はOpenCVと連携することにより、様々な画像処理の例を紹介しています。

10.1 OpenCV, OpenNI と PCL
OpenCVオープンソースコンピュータビジョン向けライブラリで、画像処理の必要な様々な機能が用意されています。
OpenNIはオープンソースのKinect用のライブラリであり、ROSからKinectの機能を使うために必須です。
PCL(Point Cloud Library)はオープンソースの3Dポイントクラウド(点群)データ処理をまとめたライブラリであり、Kinectの3D距離データを利用する。
本書では、以下のトピックについて触れる

  • WebカメラあるいはKinect(RDB-D カメラ)をROSから利用する
  • ROS cv_bridge によりROSのイメージをOpenCVで処理する
  • 顔検出、オプティカルフロー、色追跡等のROSによる実装
  • Kinectから得られる距離情報処理

10.2 カメラの解像度に関して
処理速度との関係で、本書で扱う画像は320x240 (QVGA)であるが、場合によっては640x480 (VGA)で試してみます。

10.3 カメラドライバーのインストール
10.3.1 OpenNI用ドライバーのインストール
ROSではKinect for X360をサポートしており、以下のようにOpenNIのドライバをインストールする。
KinectはVMwareで実行されたUbuntu上では動作しないので注意が必要である。
$ sudo apt-get install ros-hydro-openni-camera

10.3.2 Webカメラ用ドライバーのインストール
ROS by ExampleではWebカメラのドライバ−にuvc_camを使っています(141ページ)
が、ソースをダウンロードしてコンパイルしなければいけないし、いろいろ面倒なので、
私はuvc_camera を使いました。
私の環境ではuvc_camera の方が安定して動いているようです。
以下のコマンドでインストールが可能です。
$ sudo apt-get install ros-hydro-uvc-camera

10.3.3 Kinect あるいは Xtion カメラのテスト
$ roslaunch rbx1_vision openni_node.launch

別のターミナルウィンドウで、
$ rosrun image_view image_view image:=/camera/rgb/image_color
こんな感じでカラー画像が表示されます。
同様に、以下のコマンドで距離画像が表示されます。
$ rosrun image_view disparity_view image:=/camera/depth/disparity

10.3.4 USB Webカメラのテスト
$ roslaunch rbx1_vision uvc_camera.launch device:=/dev/video0
あるいは
$ roslaunch rbx1_vision uvc_camera.launch device:=/dev/video1
/dev/video*  の*はお使いの環境に合わせて変えて下さい。 
また、ROS by Example では uvc_cam.launch ですが、ここでは uvc_camera.launchとします。
別のターミナルウィンドウで、以下のようにコマンドを実行すると、カラー画像が表示されるはずです。
$ rosrun image_view image_view image:=/camera/rgb/image_color

10.4 OpenCV の Ubuntu Linuxへのインストール
以降の章で使うOpenCVライブラリを次にようにインストールしておいてください。
$ sudo apt-get install ros-hydro-opencv2 ros-hydro-vision-opencv