M5Camera のHTTP stream を 動画としてキャプチャ

このサイトの情報より。

M5Camera のIPが 192.168.1.52 として、out フォルダ以下に jpg ファイルを連番で作成する場合は

ffmpeg -f mjpeg -i http://192.168.1.52:81/stream 'out/img%05d.jpg'

動画ファイルにするならば、mpg にするならば下記。

ffmpeg -f mjpeg -i http://192.168.1.52:81/stream ~/out.mpg

拡張子を変えればそのフォーマットで保存してくれる。out.avi なら aviフォーマット。

ただしM5Camera の画像サイズを大きくすると動画の再生時間がおかしくなる。 大きいほど stream が遅くなるため。だいたいVGA あたりからおかしくなる、かな。

暫定対策として、だいたいSXGA で 5-6fps程度のようなので、下記のように書いてテストし、5の値を上げたり下げたりである程度は対応可能。

ffmpeg -f mjpeg -r 5 -i http://192.168.1.52:81/stream  -r 25 ~/out.mpg

しかし入力側のスピードが安定しないので、安定した解決はできない。

mjpg_streamer でUVCカメラのピントを固定して利用

3Dプリンターのプリントを ラズベリーパイで制御させるため、OctoPrint を使ってます。

USB カメラを使ってストリーミング表示と保存をして、プリントの進捗確認や失敗時の原因確認に使っています。これの覚書。

ストリーミングはmjpg_streamer 利用。下記コマンドで実行。

mjpg_streamer -b -o "output_http.so -n" -i "input_uvc.so -f 1"

ただし、ピントがあわないのが悩みの種だった。プリントヘッドがあちこち動いてそのたびにAutofocusでピントが背景のほうにあってしまう。

mjpg_streamer の output_http.so ではサンプルでAutofocus無効にして手動focusが設定できる。サンプルは output_http.so のオプションとして -w でフォルダ指定して実行。

mjpg_streamer -i "input_uvc.so -f 1" -o "output_http.so -w /usr/local/share/mjpg-streamer/www/"
これ。streamで見ながら数字を変更すると、フォーカスが動くのが確認できる。
“mjpg_streamer でUVCカメラのピントを固定して利用” の続きを読む

Raspberry Pi サーボ覚書

Raspberry Pi 3 で pigpio のサーボ制御を利用して不安定だったので色々調べた覚書。

今回のトラブルはGPIO4の故障で発生。原因は詳しくは不明。

<現象>

Servo PWM制御が不安定。サーボ側の故障も考えたが、arudinoでは問題なく動く。

GPIO4を利用してして pi.set_servo_pulsewidth(4,1500) とかやっていたが下記のように不安定。

  • gpio実行の失敗。 pi.set_servo_pulsewidth(4,1500) とかのコマンド10回に2-3回失敗する。piscope で見ると何も出力されていない。
  • 動作不定。繰り返し実行すると動いたりする。
  • PWMが2-3秒で停止。piscope で見ていると、コマンド実行後2-3秒でPWMの出力が止まる。しかしpi.get_servo_pulsewidth(4) では1500とか出力されていることになっている。
  • ノイズ。上記停止後はpi.set_mode(4,0) として止めないとノイズが入る。誤動作の元。
  • ポートOUT/INモードまで変わってしまう。gpio readall で見ると、PWM出力中は MODEがOUTだが、2-3秒でINに代わる。だいたいこのタイミングでPWMの出力がかわる。

<解決?>

GPIOを4をやめて26に変更したら安定した。GPIOは4以外では正常だった。

  • 失敗なし。 pi.set_servo_pulsewidth(26,1500) とかで2-30回中失敗なし。
  • 動作安定。繰り返しでも動作変わらず。
  • 無停止。コマンド実行後停止するまでずっと PWM出力。ちなみに50Hzで出力。
  • ノイズなし。
  • ポートモード変化なし。gpio readall でずっとOUT.
  • 空いているGPIOざっと確認したがGPIO4以外では同様のトラブルなし。

何かがGPIO4を利用しているようにも見えるが不明。OCTPY使っているだけなんだが。

pip で “THESE PACKAGES DO NOT MATCH THE HASHES FROM THE REQUIREMENTS FILE.”とかの対応

備忘録。

pip で raspiのtensorflow インストールに失敗する。HASHが違うとエラー。

pi@raspberrypi:~ $ sudo pip --no-cache-dir install --upgrade tensorflow==1.9.0
Collecting tensorflow==1.9.0
  Downloading https://www.piwheels.org/simple/tensorflow/tensorflow-1.9.0-cp27-none-linux_armv6l.whl (62.8MB)
    25% |?????????                       | 16.0MB 324kB/s eta 0:02:25
THESE PACKAGES DO NOT MATCH THE HASHES FROM THE REQUIREMENTS FILE. If you have updated the package versions, please update the hashes. Otherwise, examine the package contents carefully; someone may have tampered with them.
    tensorflow==1.9.0 from https://www.piwheels.org/simple/tensorflow/tensorflow-1.9.0-cp27-none-linux_armv6l.whl#sha256=ca364521a1c4dc6cc2c19798bbd65d51f2c599d67cd5626f0301d05f6d8adc1b:
        Expected sha256 ca364521a1c4dc6cc2c19798bbd65d51f2c599d67cd5626f0301d05f6d8adc1b
             Got        c04d65eb504b6c6d0033210001b84f7a0e6fe88319c7ffc43b5ff6e0fa05a883

fromから wgetでダウンロードしてみたら、通信エラー。”TLS packet with unexpected length was received” サーバ過負荷か通信経路障害か。自動リトライ7回目でダウンロードできた。

“pip で “THESE PACKAGES DO NOT MATCH THE HASHES FROM THE REQUIREMENTS FILE.”とかの対応” の続きを読む