SVOをWindows上のVirtualBoxのUbuntuで動かす(その2:カメラ編)
SVO_ROSでUSBカメラを使えるように設定します。とりあえず使うカメラはその辺に転がっていたLogicoolのHD C270です。
VirtualBox上でUbuntuにカメラを認識させるために、VirtualBoxのメニューのデバイス→ウェブカメラ→Logicool HD Webcam C270にチェックを入れます。
カメラが正しく動作するかどうかを確認するために、Cheeseか何か適当なソフトで調べておきます。
sudo apt-get install cheese
cheeseで起動して、カメラの画が表示されればOKとして次に行きます。
2.WEBCAMをROSで使えるようにする
ROSのカメラドライバはたくさん乱立してしまっていて、何がどういいのかよくわかりません。
おそらく一番メジャーなものは、
uvc_camera: http://wiki.ros.org/uvc_camera
なんだけど、C270だとちゃんと動いてくれませんでした。参考までにインストール方法は、
sudo apt-get install ros-hydro-camera-umd
です。動作の確認方法は、
rosrun uvc_camera uvc_camera_node
rosrun image_view image_view image:=/image_raw
です。適当にためして動きそうなのは、
http://ros-robot.blogspot.jp/2013/12/usbros-cvcamera.html
で紹介されている
cv_camera
でした。インストール方法は、
sudo apt-get install ros-hydro-cv-camera
で、動作の確認方法は、
rosrun cv_camera cv_camera_node
rosrun image_view image_view image:=/cv_camera/image_raw
です。画面サイズの設定方法とかよくわかりませんが、とりあえず動かすことだけを目標に先に進めます。
3.SVOをカメラで動かしてみる(キャリブしてないので、ちゃんとじゃなしに、とりあえず)
Run SVO on a live camera stream
を見ながら進めます。
cd ~/catkin_ws/src/rpg_svo/svo_ros/launch
nano live.launch
でカメラに関するros topicの指定を書き換えます。
camera/image_rawが標準のデバイスとして指定されていますので、cv_cameraに変えます。
<param name="cam_topic" value="/camera/image_raw" type="str" />
→
<param name="cam_topic" value="/cv_camera/image_raw" type="str" />
これで実行すると、画像サイズがカメラキャリブレーションファイルの指定のものと、cv_cameraで出力しているサイズが異なるために、エラーで落ちます。
動作テストのために、かなり強引にカメラキャリブレーションファイルを書き換えます。
cd /catkin_ws/src/rpg_svo/svo_ros/param
nano camera_atan.yaml
cam_model: ATAN
cam_width: 640 *元は752
cam_height: 480
cam_fx: 0.509326
cam_fy: 0.796651
cam_cx: 0.45905
cam_cy: 0.510056
cam_d0: 0.9320
これで起動すると、一応立ち上がることはできるようになります。
端末1:roscore
端末2:rosrun cv_camera cv_camera_node
端末3: roslaunch svo_ros live.launch
端末4: rosrun rviz rviz
でも、動作が正しくありません!
カメラキャリブレーションをちゃんとしないとだめですね。