v4.8.1¶
v4.8.1 は Qt Creator 14.0.2 をベースにしており、高信頼性の新しい OpenMV V2 カメラプロトコル、組み込みのコードプロファイラ、そしてカメラを取り出さずにマウントしたままにする保存ワークフローを中心としています。同梱ファームウェアと全サンプルセットは 4.8.1 に更新されています。スクリプト API の破壊的変更はありませんが、保存時にカメラを取り出さなくなった挙動と、いくつかの起動時シリアルフラグの削除は、ユーザーから見えるワークフローの変更です。
ハイライト¶
OpenMV Protocol V2 は、CRC32、シーケンス処理、ACK/NAK、再送、イベント、フラグメンテーションを備えた高信頼性の新しいカメラスタック(
OMVCamera/OMVTransport/OMVDebug)です。接続時に自動ネゴシエートされ、リセット、ブート、ストリーミング、スクリプト実行、統計情報を駆動します。コードプロファイラ は新しいウィンドウ(
Window>Show Code Profiler)で、カメラから関数ごとのプロファイリング記録をポーリングし、呼び出し回数、最小/最大/合計/平均マイクロ秒(μs)、平均サイクル数、割合、イベントカウンタをソート可能なテーブルに表示します。その場での保存 はカメラドライブを取り出さなくなりました。IDE は
main.pyを書き込んでボリュームをディスクへフラッシュするため、デバイスはマウントされたままになります。マルチセンサー検出 はボード上のすべてのカメラを報告し、メインセンサーを先頭に
Sensors: X, Yとしてステータスバーに表示します。動的フレーム読み取り はピクセルフォーマットごとに最適なRAWストリーミング解像度を再計算し、ストリームを自動的に再構成します。
同梱ファームウェアとサンプル は全ボードで 4.8.1 に更新され、新しい GenX320 イベントカメラ、TensorFlow ML、Alif OLED、LCD/Touch-LCD シールドのサンプルが追加されました。
新機能¶
OpenMV V2 通信プロトコル を追加しました。CRC32、シーケンス処理、ACK/NAK、再送、イベント、フラグメンテーションを備えた完全なトランスポート層およびトランザクション層に加え、接続時に自動ネゴシエートされシリアルドライバに統合された
OMVCameraクラスを含みます(2fde9eb3f、fff1bf2ba、8c41fcfad、7fc7ed4bc、84c3956af、669039adf、a49259852、07af1922a、85f0c7c87、5070cc213、e314459cc、e0367ca95、0da2f79d0、2b6fc9866、534ecffbe)。コードプロファイラ ウィンドウ(
Window>Show Code Profiler)を追加しました。関数ごとのプロファイリング記録をポーリングし、呼び出し回数、最小/最大/合計/平均マイクロ秒(μs)、平均サイクル数、割合、イベントカウンタを表示し、同梱の ELFIO ELF パーサを介してアドレスをシンボルに解決します(019d3cd2c、57cd9e1cc)。Debug Protocol Settings ダイアログを追加しました。ライブのシステム情報、ホスト統計、デバイス統計を毎秒更新して表示し、チャネルごとのポーリングレートに加え、統合ポーリングと分割ポーリングの制御を公開します(5220a6125、0da2f79d0)。
マルチセンサー検出 を追加しました。複数のカメラを備えたボードはそれらすべてを、メインセンサーを先頭に
Sensors: X, Yとしてステータスバーに報告します(cebc79ce7)。動的フレーム読み取り(デフォルトで有効)を追加しました。これはピクセルフォーマット(
BINARY、GRAY、RGB565、ARGB8、JPEG、PNG)ごとに最適なRAWストリーミング解像度を再計算し、ストリームを再構成します(75c073bdb、0da2f79d0)。BINARY(1bpp モノクロ)およびARGB8(32 ビットアルファ)の RAW ピクセルフォーマット向けにフレームバッファのデコードを追加し、これらの画像タイプがビューアでレンダリングされるようになりました(dabb82062)。Windows では、Connect が OS によって問題ありとフラグされた USB デバイスをスキャンするようになり、接続を妨げる可能性のある不良デバイスの一覧を表示して警告します(1a5beb081、1b59cd78e)。
ステータスバーに 登録インジケータ を追加しました。接続中のカメラに対して緑色の
Registeredまたはコーラル色のUnregisteredボタンを表示し、クリックするとボードを登録できます(a8c98a4b9)。フレームバッファビューアは、実行中のスクリプトから新しい
FB_MESSAGEエスケープコードを介して送信された中央揃えのテキストメッセージを、画像の代わりに表示できるようになりました(530048201)。新しいモデルズーのエントリを追加しました。ST FastDepth 深度推定モデル(224/256/320)、ST のヘッドランドマーク姿勢モデル、手のひら検出モデルおよびハンドランドマークの手モデル、そして BlazeFace 正面顔検出モデルです(551668410、4d64556d4、fadd6c4ed、b8277bb88、a8c98a4b9)。
工場ビルド専用のセルフテストスクリプト(カメラ、IMU、ToF、WiFi、LAN)を追加しました。これは工場版 IDE に同梱され、起動時に自動で開かれます(0db7fbbb0)。テストの RT1060 LAN 部分は現在無効になっています(48370d022)。
その他の変更と改善¶
その場での保存: スクリプトの保存時にカメラドライブを取り出さなくなりました。IDE は
main.pyを書き込み、ボリュームをディスクへフラッシュ(Windows ではFlushFileBuffers、Linux ではsyncfs、macOS ではsync_volume_np/F_FULLFSYNC)するため、デバイスはマウントされたままになります(1614c572f、6928b51ea、35ed53967)。カメラがビジー状態のときにクリックされたツールバーのアクション(フレームバッファの無効化、JPEG 圧縮、スクリプトの保存、設定の構成)は、ビジーエラーダイアログを表示する代わりにキューに入れられ、デバイスが空くと自動的に実行されるようになりました(f4315f0a4)。
フレームバッファビューアは、起動時に画像がウィンドウへ自動的にスケールされるよう、デフォルトでフィット表示になりました。また、シリアルターミナル出力ペインが起動時にデフォルトで表示されるようになりました(f3ce4dc75)。
.lite拡張子を持つコンパイル済みモデルファイルが、あらゆる場所で認識されるようになりました。モデルズーブラウザのフィルタリングと表示、ファームウェアの ROMFS アライメント、そして Vela/STEdge AI コンパイラが.lite出力を生成するようになりました(f3ce4dc75)。STEdge AI(N6)モデルコンパイルダイアログは、NPU RAM および hyperRAM の使用率を解析して報告し、再配置されたネットワーク出力をモデルの拡張子に一致するファイルへコピーするようになりました(f3ce4dc75)。
モデルズーブラウザは、サイズを隠す代わりにファイルのサイズ列を表示し、名前列を引き伸ばして収めるようになりました(f3ce4dc75)。
新規スクリプトテンプレートが新しい
csiモジュール API に更新され、デフォルトのフレームサイズが VGA になりました。また、同梱の Hello World サンプルもフレームサイズが QVGA から VGA に切り替えられました(f3ce4dc75)。Convert Video ダイアログは、共有のローダーダイアログを使用するよう書き直され、色付き出力、成功/失敗メッセージ、閉じるための OK ボタン、そしてプラットフォームで FFMPEG が利用できない場合の明確なエラー表示を備えました(f56efc7be)。
フレームバッファビューアは、
JPEG/PNG画像がバッファして送信するには大きすぎる場合、新しいFB_BUFFER_ERRORエスケープコードを介して点滅する警告を表示するようになりました(fda826126)。DFU ブートローダーへの移行は、V2 プロトコルのファームウェアではブートローダーを常駐させるよう強制するようになりました。バージョン検出により、強制すると固まる可能性のある古いブートローダー(1.0.2 未満)では通常のリセットにフォールバックします(975857221)。
ST 物体検出モデルのフォルダの名前変更と再編成を行い(
st_yolo_lc_v1をyolo_lcへ、tiny_yolo_v2をyolo_v2へ、yolov8nの人物モデルを単純なサイズ名のファイルへ)、大きなtiny_yolo_v2int8 バリアントを削除しました(34240cc3c)。シリアルのタイミングは、起動時のコマンドラインフラグではなく、ファームウェアの
settings.jsonのprotocolオーバーライドキー(overrideReadTimeout、overrideReadStallTimeout、overridePerCommandWait、および V2 のoverrideCRC/overrideSEQ/overrideACKキー)を通じて調整されるようになりました(019d8bf1d)。Python 言語サーバの行長制限を flake8 と pycodestyle で 120 列に設定し、長い行がデフォルトの 79 列でフラグされなくなりました(dabb82062)。
Qualcomm のモデルコレクションと
google/mobilenet_v1をmodels_unusedに移動して同梱の機械学習モデルセットを削減し、インストーラを小さくしました(c44ddba20)。
バグ修正¶
ファームウェアのダウンロードおよびリソース更新の進捗ダイアログを
QPointerガードでクラッシュ安全にし、ダウンロード途中で閉じられても削除済みのダイアログを使用しないようにしました(f3ce4dc75)。ドライブスキャンは、カメラの USB ドライブが見つかるまで再スキャンを続け、切断時に古いドライブエントリをクリアするようになり、以前のワンショットタイマーによる回避策が削除されました(a31d41b4e)。
接続とシリアルに関する複数の修正: 隠しセンサー(例:
SoftCSI)が表示されるセンサータイプを散らかさなくなり、Windows のシリアルキープアライブタイマーが USB のストールを防ぎ、Start が既に実行中のスクリプトを再起動しなくなり、ポートのクローズ時にカメラチャネルがクリーンに切断されるようになりました(a8e467be6)。プロファイラビューは、一時的に無効化されていた列ごとの PMU イベントカウンタ選択(チェック可能なイベントメニュー)と、保存されたカウンタ/ヘッダの状態を復元しました(40c679e90)。
プラットフォームとツールのサポート¶
Qt Creator ベース: 14.0.2。
同梱ファームウェア: 4.7.0 から 4.8.1 に更新し、OPENMV2/3/4/4P/PT、OPENMV_N6、OPENMV_AE3、OPENMV_RT1060、および Arduino GIGA/Nicla Vision/Portenta H7 ボードのファームウェアを再ビルドしました(2657818ca)。
RT1062 および AE3 ボード向けの macOS でのプロトコルバージョンハンドシェイクを、複数コマンドの USB 転送をこれらのボードが扱える
USBDBG_LENサイズの断片に分割することで修正しました(6b9d5f842)。同梱の Windows ドライバパッケージを刷新しました。ボードごとに署名された
.cat/.infドライバファイル(AE3、H7、H7Plus、M4、M7、N6、Pico/PT、RT1062)を追加し、CDC シリアルドライバを dpinst ベースの自動インストーラを備えた新しいopenmvcdcフォルダに移動しました(439557829、ba3b01bfb)。センサー ID
0x1311および0x1312(既存の0x1313と並んで)をMT9V0X2として登録することで、古い MT9V032 カメラセンサーのリビジョンへのサポートを追加しました(eaaa624e3)。
破壊的変更¶
このリリースにはスクリプト API の破壊的変更はありませんが、ユーザーから見えるワークフローの変更がいくつかあります:
スクリプトの保存時にカメラの USB ドライブを取り出したりアンマウントしたりしなくなりました。IDE はその場でボリュームバッファをフラッシュするため、保存後もデバイスはマウントされたままになります。
起動時のシリアルフラグ
-override_read_timeout(デフォルト 5000 ms)、-override_read_stall_timeout(デフォルト 1000 ms)、-override_per_command_wait(デフォルト 1 ms、macOS では 2 ms)が削除されました。シリアルのタイミングは、ファームウェアのsettings.jsonのprotocolオーバーライドキーを通じて構成されるようになりました(019d8bf1d)。同梱のブートローダーは
.binのみで配布されるようになりました。ボードごとの.dfuファームウェアおよびブートローダーファイルは削除されました。