Raspberry Pi + ROSでUSB Cameraを使う

2017/06/30 Raspberry PiとROSで純正カメラを動かす方法に関して追記

Raspberry PiにROSを入れた時に使うUSBカメラ

 Raspberry PiにROSを入れて色々いじっています。ROSって何?とかインストールする手順に関しては以下記事参照下さい。

 ROS(Ubuntu)だとRaspberry PiのCamera Moduleが動かなくて、動かす方法も私レベルでは分からなかったので、とりあえず大人しくUSBカメラを使うことにしました。買ってきたのは以下のUSBカメラ。

 選んだ理由は近くの家電ショップで売っていたからです。UVC規格に対応している多くのWebカメラはRaspberry Piで普通に認識してくれるようですが、事前に調べておくと安心です。

ROSでUSBカメラを使う

USBカメラ接続テスト

 ROSをセットアップしたRaspberry PiにUSBカメラを接続して以下コマンドを実行

$ ls /dev/video*

 /dev/video0が表示されればUSBカメラは認識されています。

ROS用のUSBカメラソフトインストール

 以下コマンドでインストール。

$ sudo apt-get update
$ sudo apt-get install ros-indigo-usb-cam

USBカメラ動作

 まずは以下コマンドでroscore起動

$ roscore

 次に別のウィンドウで以下実行

$ rosrun usb_cam usb_cam_node

 するとWebcam: expected picture but didn't get it...なるエラーがでる。調べると以下のコマンドでフォーマットを指定してやらないとダメらしい。カメラによっては必要ないのかもしれません。

$ rosparam set usb_cam/pixel_format yuyv

 再度以下コマンドを実行すると無事起動。

$ rosrun usb_cam usb_cam_node

 この状態で以下実行します。

$ rostopic list

 トピックというROS上を流れている情報がずらずらっと出てきます。/usb_cam/image_rawというのが画像のデータですので以下コマンドで表示してやりましょう。

$ rosrun image_view image_view image:=/usb_cam/image_raw

 これで以下のようにROSでUSBの動画を取得できます。

f:id:karaage:20150906100738j:plain:w640

USBのビデオデバイスが複数ある場合

 USBのビデオデバイスが複数あると、対象のデバイスが/dev/video1とか/dev/video2とかになってしまうケースがあります。その場合は以下でvideo_deviceを変更してやりましょう。

$ rosparam set usb_cam/video_device "/dev/video1"

 こういうことは、たいていROS Wiki(usb_cam - ROS Wiki)に書いてあるので何か困ったら調べてみるのがよいです。デバイス毎に、対応したデバイスファイルを指定したいときは、更にudevを使うとよいでしょう。udevの使い方はここでは省略しますので各自で調べてみて下さい。

まとめと次の予定

 Raspberry PiのCamera Moduleを使えるようにしたいのですが、ちょっと諦め中です(誰か教えて下さい)。画像認識したり、あれやこれやしてもよいですが、それだけだとイマイチなのでちょっと検討中。

追記:Raspberry PiとROSで純正カメラを動かすことができました。下記記事参照下さい。

関連記事