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

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

デジカメのSDカードからマイクロソフト純正ツールで写真を復元する(Windows 10)

妻から、デジカメのSDカードを誤ってフォーマットしてしまったと相談。

MS純正のツールを利用して復元した備忘録。

Windows File Recovery をインストール。Windows Store から無償で入手可能。

インストールしたら起動

“デジカメのSDカードからマイクロソフト純正ツールで写真を復元する(Windows 10)” の続きを読む

Amazonブログの「ESP32 でAWS IoT+Amazon Rekognition で動物と人を検知」を訂正した備忘録

AWS のオフィシャルブログに「Creating Object Recognition with Espressif ESP32」(Espressif ESP32 を使用したオブジェクト認識の作成)が10月に掲載された。

大変勉強になったが、そのままでは動かず、色々試してやっと動作。以下備忘録。

  • 1.IoTのポリシー(Esp32Policy)に下記追加が必要。esp32/sub/+ へのサブスクライブで拒否されていた。
    {
      "Effect": "Allow",
      "Action": "iot:Subscribe",
      "Resource": "arn:aws:iot:REGION:ACCOUNT_ID:topicfilter/esp32/sub/+"
    },
  • 2.Lambda のesp32-request-url  を修正。boto3利用時にS3v4署名 明記が必要。
# s3 = boto3.client('s3')
s3 = boto3.client('s3',config=Config(signature_version='s3v4'))
  • ESP32 のオプション設定で rtc_gpio_desc 有効化
  •  platformio run -t menuconfig にて、
    • Component config → Driver configurations → RTCIO configuration
    •  [*]Support array ‘rtc_gpio_desc' for ESP32
Component config → Driver configurations → RTCIO configuration

これで下記エラーが出なくなる。ここを参考にした。

“Amazonブログの「ESP32 でAWS IoT+Amazon Rekognition で動物と人を検知」を訂正した備忘録” の続きを読む

jetson nano 覚書

nvcc は /usr/local/cuda/bin/nvcc

~$ /usr/local/cuda/bin/nvcc --version
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Wed_Oct_23_21:14:42_PDT_2019
Cuda compilation tools, release 10.2, V10.2.89

サンプルが /usr/local/bin/ 以下にいくつか

$ ls /usr/local/bin/
camera-capture          detectnet-console.py  images
camera-viewer           detectnet.py          my-detection.py
camera-viewer.py        f2py                  my-recognition.py
convert-caffe2-to-onnx  f2py3                 networks
convert-onnx-to-caffe2  f2py3.6               pasteurize
cuda-examples.py        futurize              segnet
cuda-from-cv.py         gl-display-test       segnet-camera
cuda-from-numpy.py      gl-display-test.py    segnet-camera.py
cuda-to-cv.py           imagenet              segnet-console
cuda-to-numpy.py        imagenet-camera       segnet-console.py
detectnet               imagenet-camera.py    segnet.py
detectnet-camera        imagenet-console      segnet_utils.py
detectnet-camera.py     imagenet-console.py   video-viewer
detectnet-console       imagenet.py           video-viewer.py

tensorflow は入っていないが、container でGPU対応のV1.5とV2.2がある。

“jetson nano 覚書” の続きを読む

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カメラのピントを固定して利用” の続きを読む

delta型 marlin 2.x ファームウェアコンパイル時の注意事項

備忘録。delta型の3dプリンターのボードを32bitに交換した際の注意点。

ボードの型番ベンダーの資料などから探して、 Configuration.h に記載。
今回は #define MOTHERBOARD BOARD_MKS_SGEN_L
プルーブ(ベットの自動レベリング用センサー)#define FIX_MOUNTED_PROBE のあとで
Z_MIN_PROBE_PIN に指定する。delta型ではメーカー設定をそのまま使えないことがある。Z_MIN_PIN が未指定だったり、Z_MAX_PINがZ_MIN_PROBE_PINに指定されたり。
今回は Marlin\src\pins\lpc1768\pins_MKS_SGEN_L.h にdefine Z_MIN_PROBE_PIN Z_MIN_PIN を追記。
M119 コマンドで結果確認。
TMC2208 UARTチェック#define X_DRIVER_TYPE  TMC2208 と設定。
物理的にTMC2208接続横のUARTピンを有効にする。
M122コマンドで結果確認。
delta設定delta の example configrationを利用するが、設定値は下記を注意。
FEEDRATE、ACCELERATION 、JERKはX,Y,Zとしてα柱、β柱、θ柱の設定を変更するため、Zの値に要注意。X,YとZを同じ値にしないと、θ柱のみ動きが微妙に変わる。
TMC2208利用時は Configuration_adv.h 中の
#define Z_HYBRID_THRESHOLD     をX,Yと同じにしておく必要あり。

3Dプリンタ チューニング覚書

HE3D K200(デルタ型 ヒートベッド 22cm円形 )のチューニング覚書。

ヒートベッド固定良。
付属のものはヒートベッドが動いてダメ。Kossel Adjustable Bed Clamp by stefel77(http://www.thingiverse.com/thing:1732494)が便利。ただしガラス板分の高さが足りないのを無理くりつけている。
ヒートベッドにガラス板 大変良。
確実に平面になる。今回一番効果が高い。
自動レベリングは Delta Auto Calibration のみ良。
ガラス板+ ” Delta Auto Calibration”のみが一番調子よい模様。
ガラス板なしでもauto bed leveling は3pointのほうが調子が良い。
AUTO_BED_LEVELING_UBL (MESH leveling)×
アルミのヒートベッドでは逆におかしくなる。
多分自動レベリングの押す力でベッドがたわんでしまうため。(特に中央寄りのポイント)
ガラス板ならば Delta Auto Calibrationのみで充分。計算量も減るし。
AUTO_BED_LEVELING_3POINT×
上同様。 ガラス板ならば Delta Auto Calibrationのみで充分 。
アルミのみならばUBLよりは良い感じがしたが、正確には不明。 端のみで計測のためかと思うが、ガラス板買う方がよほど良い。
Extruder交換大変良。
吐出が安定しないので過去間違えて買った
BIQU Universal Extruder Kit (SALEで送料無料だった) に交換したら安定した。努力があほらしくなったほど良い。買うなら right を買うべき。 leftだと逆だった。marlin 設定で方向逆にした。
モータードライバ交換TMC2208に交換。大変静かで良い。
モードはメーカー推奨値に従って下記とした。
XYZは stealthChop まま、0.8V。Extruder用は spreadCycleに変更し電圧を0.9Vにしてファンもつけたが、多分0.8VままでOK(Extruder交換後戻していない)
marlin設定では TMC2208_STANDALONE でreverseを true に。下記 Configuration.h参照。
Marlinバージョンアップ
1.x → 2.0
多分1.xと変わらない。
設定ファイルは HE3Dのfacebookサイトからダウンロードしたものを修正。
DELTA_SEGMENTS_PER_SECOND 100 100-150が妥当か。数字を大きくするには32bit化(というか高クロック化)した方がよさそう。

300とかにすると円盤プリントでプロセッサがほぼハング状態になり、時々動きが止まったりしてプリント結果も悪い。
10だと形が変になる。
速度などチューニング
(ガラス板追加後)
プリントスピードは60mm/sec位までまあまあ良い。
accelは 3,000mm/s^2,jerkは 20mm/s^3。
移動速度はプリントスピードと同じにする。

初期レイヤーは 速度10-30mm/sec 、accelは 1,000 mm/s^2 , jerkは5-10mm/s^3。
スプールホルダ ホコリ除け+吸湿防止に。
ダイソーの 透明蓋付き収納ボックス を利用。穴開けてチューブ(3cm位)とワンタッチ接手をつけ、乾燥剤を入れた。
湿度は 概ね30%台で、防湿はOKかと。
“3Dプリンタ チューニング覚書” の続きを読む