Rapiroにカメラをつけてみた

Rapiroはおでこの部分にRaspberry Piカメラモジュールを取り付けられるように設計されている。
カメラをつければ、遠隔操作ができるではないか。実際に遠隔操作をするかどうかはわからないけど。

そんなわけで、MJPG-streamerを使ってブラウザからカメラの映像を見れるようにした。

カメラを取り付ける

用意したもの

現在はV3も発売されており、V2に比べて画素数の増加に加え、高感度撮影やHDR対応など、さまざまな面で性能が強化されている。

V2は現在も使用可能だが、すでに非推奨とされており、具体的なサポート終了時期は明示されていないものの、将来的に使えなくなる可能性がある。

また、V2とV3では設定方法が異なるため注意が必要。ここから先の設定手順はV2に対応した内容となるので、あしからず。

ちなみに丸パンダ研究所では安価なものを使用しているので、試してみる価値はアリ。(動作は保証しない)

カメラの取り付け

Rapiroのおでこの部分についている部品を取り外して、カメラモジュールを取り付ける。
全部で4箇所ネジ穴があるが、おでこの部品を留めていたネジを使ってRapiroの公式サイトに掲載されていた写真と同じように上側2箇所を留めた。

カメラモジュールをRaspberry Piのカメラ用のコネクタに接続。
黒い部分を持ち上げると、ロックが外れてリボンケーブルが差し込めるようになる。
端子を白いほうに向けて差し込み、黒い部分を押し込むと固定される。
軽く引っ張って抜けなければOK。

カメラの有効化

カメラを使用するためには、raspi-config(Raspberry Piの設定)でカメラを有効にする必要がある。

sudo raspi-config

「3 Interface Options」を選択。

「I1 Legacy Camera」を選択。

カメラを有効にするか聞かれるので「はい」を選択。

旧型のカメラのサポートを有効にしたけど、将来的には使えなくなるかもね的なメッセージが表示されるので「了解」を押下。

「Finish」を選択。

今すぐ再起動するか聞かれるので「はい」を選択。

再起動後、カメラが有効化され使えるようになる。

MJPG-streamerを使ってブラウザからカメラの映像を見てみる

MJPG-streamerとは

MJPG-Streamerは、Linux互換カメラの映像をWeb配信するためのアプリケーション。
JPEG形式の静止画を連続して送るモーションJPEG(MJPEG)方式を採用しており、Raspberry Piのような低スペックなマシンでも比較的スムーズに動作するのが特徴。

パッケージのインストール

libv4l-dev(カメラ制御API)とlibjpeg-dev(画像処理)をインストールする。

sudo apt-get install libv4l-dev libjpeg-dev

Raspberry Pi OS Liteを使用しているなど、gitやcmakeがインストールされていない場合は追加でインストールする。

sudo apt-get install git cmake

MJPG-streamerのセットアップ

ホームディレクトリなど任意のディレクトリで、「MJPG-streamer」をgitからクローン。

git clone https://github.com/neuralassembly/mjpg-streamer.git

「mjpg-streamer/mjpg-streamer-experimental」ディレクトリでビルドする。

cd mjpg-streamer/mjpg-streamer-experimental
make

ブラウザからカメラの映像を見てみる

MJPG-streamerを起動。

パラメータで以下を指定。

  • 出力プラグイン(-o)
    • ./mjpg_streamer(ストリーミング用プラグインのファイル名)
    • Webファイルの場所(-w)
      HTMLに埋め込む場合に必要。今回はカメラ映像を直接URLで見るため、「/tmp」など任意の有効なディレクトリでよい
    • 任意のポート番号(-p)
  • 入力プラグイン(-i)
    • ./input_raspicam.so(カメラ用プラグインのファイル名)
    • フレームレート(-fps)
    • JPEG圧縮品質(-q)
    • 垂直反転(-vf)
      カメラを逆さまに取り付けてあるので、垂直反転にする
    • 水平反転(-hf)
      Raspberry Pi カメラモジュールV2はデフォルトで水平反転された映像が出力されるため水平反転にする。

丸パンダ研究所では、映像の滑らかさを優先するために、品質を低め(-q:10)にしてフレームレートを高め(-fps:30)に設定したが、好みに合わせて調整すればよい。

cd mjpg-streamer/mjpg-streamer-experimental
./mjpg_streamer -o "./output_http.so -w [任意の有効なディレクトリ] -p [ポート番号]" -i "./input_raspicam.so -fps 30 -q 10 -vf -hf"

ブラウザで以下のURLにアクセス。

http://[RapiroのIPアドレス]:[パラメータで指定したポート番号]/?action=stream

例:丸パンダ研究所のRapiroの場合

http://192.168.95.198:8080/?action=stream

こんな感じで見ることができる。

起動時の設定

カメラの映像を見たいときに都度手動でMJPG-streamerを起動してもいいが、毎回やるのはめんどくさいのでRapiroの起動時に自動でMJPG-streamerを起動するようにする。

方法はいくつかあるが、rc.localを使って自動起動するようにする。

rc.localを開く。
ここではvimを使用しているが、好きなエディタで構わない。

sudo vim /etc/rc.local

一番下に書かれている「exit 0」の上にMJPG-streamerを起動するコマンドを書き込む。

cd /[homeディレクトリ]/mjpg-streamer/mjpg-streamer-experimental/
./mjpg_streamer -o "./output_http.so -w [任意の有効なディレクトリ] -p [ポート番号]" -i "./input_raspicam.so -fps 30 -q 10 -vf -hf" > /dev/null 2>&1 &

exit 0