Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

Ubuntu on RasPiに同じ種類のWEBカメラをつないで運用した時のメモ

RasPiに同じ種類のWEBカメラをつないで運用した時のメモ

実際のところ

環境

複数の同じカメラ

複数の場所を一つのRasPiで見ないといけない状況が発生。
まずは装置と、手っ取り早く調達できて価格も安いロジクールさんのC270nを二台運用しました。

さてここで問題。
違う種類なら兎も角、同じ種類だとどう区別するのかという問題が。

$ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 005: ID 046d:0825 Logitech, Inc. Webcam C270
Bus 001 Device 007: ID 046d:0825 Logitech, Inc. Webcam C270
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

lsusbではデバイス名で判定できません。

v4l-utilのご登場

USBカメラも以前の記事で少し触れたようにv4l(Video for Linux)で管理されているためv4l-utilさんにご登場願います。
まだ入れてない人は以下のコマンドで。

$ sudo apt install v4l-utils

では早速デバイスのリストを出してみると……

$ sudo v4l2-ctl --list-devices
bcm2835-codec-decode (platform:bcm2835-codec):
        /dev/video10
        /dev/video11
        /dev/video12
        /dev/media1

bcm2835-isp (platform:bcm2835-isp):
        /dev/video13
        /dev/video14
        /dev/video15
        /dev/video16
        /dev/media0

C270 HD WEBCAM (usb-0000:01:00.0-1.2):
        /dev/video0
        /dev/video1
        /dev/media2

C270 HD WEBCAM (usb-0000:01:00.0-1.4):
        /dev/video2
        /dev/video3
        /dev/media3

C270nが二台、しかしポートが違うところで接続されているのが確認できます。

fswebcam,imvをつかった各カメラの試験

シェルコマンド大好きオヂさんなので、撮影試験にも可能な限りCLI系コマンドを使います。

$ sudo apt install imv fswebcam

これを機に、Windows側のXサーバーも VcXsrvに変更。

撮影

fswebcamのデバイス指定は"-d"または"--device"オプション。

$ sudo fswebcam -d /dev/video0 img001.jpg
$ sudo fswebcam -d /dev/video2 img002.jpg

素数などが物足りない場合、v4l2-ctlでカメラの機能を確認しながらfswebcamのオプションを弄ってあげれば幸せになれます。
軽く調整した結果、こんな風になりました。

$ sudo fswebcam -d /dev/video0 -r 1024x720 -F 2 -S 4 img001.jpg
撮影画像のX Window経由での転送

内容確認はimvで。

$ imvr img002.jpg img001.jpg

筐体上の問題

同じカメラで運用する場合、やはり区別は接続されているポートでしか判定できません。
起動チェックで毎回抜き差しのような不毛な問題が起こる前に、USBのコネクタ手前で刺し間違えを防止する治具を作ってやるのが手っ取り早いでしょう。