2017/06/30 Raspberry PiとROSで純正カメラを動かす方法に関して追記
Raspberry PiにROSを入れた時に使うUSBカメラ
Raspberry PiにROSを入れて色々いじっています。ROSって何?とかインストールする手順に関しては以下記事参照下さい。
ROS(Ubuntu)だとRaspberry PiのCamera Moduleが動かなくて、動かす方法も私レベルでは分からなかったので、とりあえず大人しくUSBカメラを使うことにしました。買ってきたのは以下のUSBカメラ。

【2012年モデル】ELECOM WEBカメラ 200万画素 1/5インチCMOSセンサ マイク内蔵 コンパクトタイプ ブラック UCAM-C0220FBBK
- 出版社/メーカー: エレコム
- 発売日: 2012/06/14
- メディア: Personal Computers
- この商品を含むブログを見る
選んだ理由は近くの家電ショップで売っていたからです。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の動画を取得できます。
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で純正カメラを動かすことができました。下記記事参照下さい。