カメラ画像をスマホに表示

推奨のカメラはLOGICOOL ウェブカム HD画質 120万画度素 C270です。

https://www.amazon.co.jp/LOGICOOL-ウェブカム-HD画質-120万画素-C270/dp/B003YUB660/ref=sr_1_1?ie=UTF8&qid=1

または、Raspiカメラモジュールでも構いません。

Webアプリの作業が終わっていることが前提になります。
http://fabble.cc/fablabkannai/sumobotxjrxwithxraspberryxpi/note/note_cards/8767

使用するライブラリと導入手順

以下のサイトの、Raspberry pi向けに修正されているmjpg-streamerを使います。
https://github.com/jacksonliam/mjpg-streamer

手順:(インストールは動作確認後です。ここではインストールしません)
sudo apt-get install cmake libjpeg8-dev imagemagick
git clone https://github.com/jacksonliam/mjpg-streamer.git
cd mjpg-streamer/mjpg-streamer-experimental
make

mjpg_streamer実行

mjpg_streamerを実行します。
USBカメラ:
./mjpg_streamer -i "./input_uvc.so -d /dev/video0" -o "./output_http.so -w ./www"

Raspiカメラモジュール:
./mjpg_streamer -i "./input_raspicam.so" -o "./output_http.so -w ./www"

エラーとなる時は、カメラのUSBケーブルを抜き差ししてください。
USBカメラの場合、警告(Pan,Tiltなど)がたくさん出ますが、問題ありません。対応していない機能があるためです。

動作確認とインストール

Webブラウザでraspberrypi.local:8080/stream.htmlにアクセスしてください。
カメラの画像がリアルタイムで表示されます。

表示されない場合は、lsusbでカメラc270が認識されていることを確認してください。
$ lsusb
  Bus 001 Device 007: ID 046d:0825 Logitech, Inc. Webcam C270

動作確認が取れたら、ctrl+cでカメラの動作を停止し、先ほどmakeしたmjpg-streamerをインストールします。

sudo make install

mjpg-streamer のスクリプト

$ cd /tmp
$ git clone https://github.com/anthrax007/sumobot.git

起動時実行のためにコピーします。
$ sudo cp /tmp/sumobot/camera/mjpg-streamer/mjpg-streamer /etc/init.d/mjpg-streamer

ファイルに実行権限を与えます。
$ sudo chmod 755 /etc/init.d/mjpg-streamer

起動時に実行されるスクリプトに登録します。
$ sudo insserv mjpg-streamer

カメラ対応のhtmlファイルへ変更する

$ sudo cp /tmp/sumobot/camera/webapp/index.html 
/home/pi/sumobot/SumobotWebSample1/src/sumobot_web_sample_1/templates/index.html

nano /home/pi/sumobot/SumobotWebSample1/src/sumobot_web_sample_1/templates/index.html

ホスト名(raspberrypi.local)を自分のホスト名に変更して保存してください。

html再生成とリブート

変更したhtmlを再生成します。

$ cd ~/sumobot
$ source venv/bin/activate 
(venv) $ cd SumobotWebSample1
(venv) $ python setup.py install

Finished processing dependencies for SumobotWebSample1==0.1
と表示されればok。

(venv) $ deactivate
$ sudo chmod 755 /etc/init.d/sumobot-web-sample-1

変更を反映させるため、リブートします。
$ sudo reboot

webアプリの動作方法

パソコンのWEBブラウザにて、下記にアクセスします。
http://raspberrypi.local:6010/

Sumobot Contorllerの画面の上にカメラの画像が表示されます。

動かない場合は、以下のコマンドで状態を確認。
・netstat -ltn
 local addressに8080ポートがあるかを確認
・systemctl status mjp* -l
 active以外→/etc/init.d/mjpg-stremerファイルが壊れていないかを確認。
 active(exited)→/etc/init.d/で、./mjpg-streamer startを実行し、エラーを確認。

sumobotへのカメラの取り付け方

2つの方法があります。
・両面テープで前面に張り付ける。
・3Dプリンタで出力したカメラ台で取り付ける
カメラ台のデータは以下にあります。
http://www.thingiverse.com/thing:2142547

USBカメラの線を切って短くすることもできますが、難易度が高いのでお好みで。

注意点

回線の帯域が細く、動画がうまく表示されない場合(USB2LANアダプタを使用しているなど)は、
/etc/init.d/mjpg-streamerの以下の記述を変更する。数字は帯域制限の値。帯域が細い場合は5などに下げると良い。24は動かないので注意。
FPS=25