ロボの視界を手に入れる

ロボ搭載のカメラに映る景色を操縦者に配信する

カメラ付きドローン

飛行するドローンのカメラ映像をスマホで見ながら操縦するのは楽しそうだ。
ロボで実現するなら表示はスマートグラスと考えていたが、ゲームパッド用のスマホホルダーが千円程で市販されているのを知りスマホOKに心変わり。

最終的には屋外で使いたいが、先ず自宅のWiFi環境で実現する。

作業
  1. 動画ストリーミング用ソフトにmjpg-streamer を選定
  2. セットアップ手順の確認
    基本的に同ソフト配布元の情報に従うが、それはラズパイOSバージョンが buster 迄らしい。
    バージョン確認【リスト1】の結果はRaspbian GNU/Linux 10 (buster) で、ひと安心(^_^)
    cmakeも必要で、導入によるラズパイ既存make との競合を危惧したが杞憂だったようだ。
  3. セットアップ作業を実施 【リスト2】
    その後、make cleanmake distclean でWorkファイルを消去しラズパイの小容量ストレージを節約。
  4. mjpg_streamerを起動してみる
    起動にあたり、カメラ映像をリモートPCにWeb表示するための引数指定は、セットアップが提供するREADME.mdの説明に頼るのが吉。
    必要最小限の引数指定【リスト3】で起動後、PCのWebブラウザで所定のURL指定すると、ロボ視界が表示された。
    ……が…上下逆転してる… 【写真1】
    ロボの製品サポートに確認→これで正常!
  5. コマンドラインの引数変更で動作改善を図る
    • デフォルトのフレームレート(5回/秒)だと、移動体の残像が残るので30を指定
    • デフォルトの640×480ピクセルを1280×720に指定すると表示遅延が1秒程に大きくなるのでデフォルトを維持
    • 画面の180°回転指定追加で上下逆転を解消
    最終的に【リスト4】の指定に落ち着いたが、ユーザー/パスワード指定も必要かも。
  6. 手持ちのスマホに表示してみる
    Webなので当然とはいえAndroidスマホも問題なく表示した。ただCPUパワー不足か、PCより表示遅延が顕著だ。さてどうしたものか?
リスト1: OSのバージョン確認

rz2> lsb_release -a

リスト2: セットアップ作業

rz2> sudo apt update
rz2> sudo apt-get install cmake libjpeg8-dev
rz2> sudo apt auto-remove   #陳腐化して不使用のライブラリ自動削除
rz2> cd ~/Downloads       #作業ディレクトリへ移動(不要かも?)
rz2> git clone https://github.com/jacksonliam/mjpg-streamer.git #make用情報の取得
rz2> cd ./mjpg-streamer/mjpg-streamer-experimental #作業ディレクトリへ移動
rz2> make
rz2> make install

  ※  #コメント を付した行は自主的(笑)に補間実行したコマンド

リスト3: mjpg_streamer起動!

rz2> LD_LIBRARY_PATH=/usr/local/lib
rz2> mjpg_streamer -i "input_raspicam.so" \
   -o "output_http.so -w /usr/local/share/mjpg-streamer/www -p 8080"

写真1: カメラ映像(動画)をPCにWeb表示

 URL = ラズパイのIPアドレス:8080/stream.html
 ロボ視界だけ表示→ラズパイのIPアドレス:8080/stream_simple.html

リスト4: 改善後の書式

rz2> mjpg_streamer -i "input_raspicam.so -fps 30 -rot 180" \
   -o "output_http.so -w /usr/local/share/mjpg-streamer/www -p 8080"

この記事が何かのお役にたつことを願っていますが、記事内容についてのいかなる保証もしません