シミュレータ上でもカメラを使えるみたいです。
http://www.ros.org/wiki/pr2_simulator/Tutorials/UsingStereoProcessingInSimulation
でもちょっとこのPCでは非力なので、ちょっと不安定でした。
そこで、せっかくなので本物のカメラでためしてみます。
USBカメラ使えないのかな?と思ってwikiを調べたらありました。
http://www.ros.org/wiki/usb_cam
boschさんのリポジトリです。こういう外部のライブラリがすぐ見つかるのもいいですね。
http://bosch-ros-pkg.svn.sourceforge.net/
ここからDLしました。
$ rosdep install usb_cam
$ rosmake usb_cam
してみます。
エラーがでますね。
manifest.xmlが十分じゃないのかな?
エラーメッセージは以下です。
/home/ogutti/ros/pkgs/bosch_drivers/usb_cam/src/libusb_cam/usb_cam.cpp:292: error: ‘avcodec_alloc_frame’ was not declared in this scope
そこで、
$ apt-get install libavcodec-dev
してみました。
さらに、パスがよろしくない(Ubuntu8.10)みたいなので
sudo ln -s /usr/include/ffmpeg /usr/include/libavcodec
sudo ln -s /usr/include/ffmpeg /usr/include/libswscale
しました。
これでビルドできるはず。
(ソースの方いじってもいいかもです。)
さらに、
bosch_drivers/usb_cam/src/usb_cam_node/usb_cam_node.cpp
のオプションをいじります。
ちなみに私の環境(Mac Book Pro/ Ubuntu 8.10 内臓iSight利用)では
pixel_formatをyuyvにしたら動きました。
usb_camノードが/usb_cam/imageにsensor_msgs/Image型のトピックを発行します。
そこで以下にあるサンプルを使って表示してみます。
img_test.cppという名前にしました。
$ img_test image_topic:=/usb_cam/image
としました。(image_topicという名前のトピックを/usb_cam/imageにリマップしています。)
おー、表示されています。
これは結構感動ですね。
iSight -> /dev/video0 -> usb_cam_node -> (/usb_cam/image) -> img_test
という流れです。
これでカメラを使ってロボットを動かすことができそうですね。
0 件のコメント:
コメントを投稿