Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save takeutch-kemeco/128a14a0ef4830f1c37babc7e5179dc8 to your computer and use it in GitHub Desktop.
Save takeutch-kemeco/128a14a0ef4830f1c37babc7e5179dc8 to your computer and use it in GitHub Desktop.

ラズパイ4における、カメラサイズと遅延の相関関係

構成

flowchart LR
	PC_Screen -- Take_a_picture --> OV5647 <-- libcamera --> Pi4 <-- SSH --> PC -- opencv --> PC_Screen 

PCの画面に時計と撮影結果画像を表示します。 それをPi4のV1カメラで撮影し、 libcamera経由でPi4で処理し、 結果をSSHでPCへWifi転送し、 PCの画面に時計と撮影結果画像を表示します。

この時計と、撮影結果画像との、時間差(遅れ)を測定しました。

libcamera の設定

c++ で libcamera.so を直接使うアプリを書いて実験しました。 アナログゲインは100、Frame duration limit は 16.666s(60fps)、それ以外はバニラです。

測定結果

カメラ解像度 [width x height] 遅延※ [ミリ秒] SSH X転送の圧縮の有無
64 x 64 76 無し
128 x 128 77 無し
160 x 160 80 無し
192 x 192 180 無し
224 x 224 445 無し
256 x 256 639 無し
320 x 320 1735 無し
カメラ解像度 [width x height] 遅延※ [ミリ秒] SSH X転送の圧縮の有無
64 x 64 83 有り
128 x 128 273 有り
160 x 160 711 有り
192 x 192 1413 有り
224 x 224 983 有り
256 x 256 802 有り
320 x 320 1082 有り

※. 各ケースで3回サンプリングし、その平均としました。

結論

・SSH X転送における圧縮は、速度に対して逆効果なので、今回のようなケースでは問題外となる。 ・64x64と、128x128では、レイテンシーに違いはほぼ無い。 ・160x160付近が、低レイテンシーのまま解像度を上げられる限界。 ・160x160を超えると、レイテンシーが急激に(指数関数的に)大きくなる。

Dawにおいて楽器演奏に支障が無いレイテンシーは10ミリ秒以下なので、人間の反応速度や感じ方の特性全般もその付近に鍵があると仮定するならば、遅延時間80ミリ秒台は不十分な値であるが、これ以上の性能をPi4->SSH(Wifi)->PCなシステム構成で出すのは無理っぽい希ガス。

Wifi経由によるカメラ付きラジコンをPi4で実現するには、V1カメラの解像度は160x160付近で作れば、遅延を最小にできる。 その際のSSH X転送は、圧縮無しにした方が遅延が小さい。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment