v5.1.0#

v5.1.0 は機能リリースです。フレームバッファの下のペインはヒストグラムから ライブビュー の集合へと成長し(ボード情報、メモリ、統計、そしてスクリプトが公開する値をウィジェット、グラフ、スペクトル、深度マップに変えてファイルに記録する新しい チャンネル ビュー)、フレームバッファにはマルチセンサーカメラ向けの ソースセレクタ が加わり、IDE はボード、ファームウェア、サンプル、モデル、スタブの サードパーティのリポジトリ を読み込めるようになり、ビデオ録画は H.264 に切り替わりました。新しいボードとセンサーがサポートされ、ファームウェアツールは v5.0.0 以降のすべての変更に対する全面監査によって強化され、いくつかの動作が OpenMV Studio から取り込まれました。Qt Creator 14.0.2 上に構築され、ファームウェア v5.0.1 を同梱しています。

ハイライト#

  • ペインビュー -- ヒストグラムペインのタイトルバーにセレクタが追加され、ペインを ヒストグラム、ボード情報(接続中のカメラのハードウェア、バージョン、機能)、メモリ(MicroPython ヒープとすべての UMA プールのライブグラフ、ピーク追跡付き)、統計(デバッグプロトコルのパケット、エラー、チャンネルごとのイベントカウンター)、チャンネル の各ビューに切り替えられます。

  • チャンネルビュー -- スクリプトはデバッグプロトコル経由で名前付きのデータチャンネルやコントロールチャンネルを公開でき、IDE はそれらをライブで描画します。カメラに書き戻すラベル、トグル、スライダー、スピンボックス、ラジオボタン、ラインエディット、セレクタ、プッシュボタン、テキストブロック。パン、ズーム、マーカー、トリガー、履歴、スペクトルアナライザを備えた波形グラフ。そしてカメラ自身のパレット、3種類のスケーリングフィルタ、トーンマッピングを備えた深度マップです。どのグラフやマップも、学習データ収集のために CSV、WAV、NumPy、または Edge Impulse の JSON や CBOR ファイルへ記録できます。チャンネル全体を対象とする「すべて記録」も含まれます。スクリプトが停止しても最後の値は画面に残ります。

  • フレームバッファのソースセレクタ -- 複数のイメージセンサーを持つカメラでは、フレームバッファのタイトルバーにセレクタが表示され、どのセンサーを IDE にストリーミングするか(またはストリーミングをオフにするか)を選べます。JPG トグルは JPG / RAW のストリーミングモードセレクタになり、ペインのタイトルには各フレームが到着した形式が表示されます。

  • サードパーティのリポジトリ -- ベンダーは、ボード、ファームウェア(リリースおよび開発チャンネル)、サンプル、機械学習モデル、.pyi スタブのリポジトリを公開できます。IDE はそれを URL から、またはインストーラーが配置したフォルダからインストールし、自身のコンテンツとマージし、最新の状態に保ち、ベンダーの優先順位を並べ替えられるようにします。Preferences → OpenMV → Third Party Repositories から管理します。

  • 新しいハードウェア -- OpenMV N6 Classic ボード(ブートローダードライバー、udev ルール、ROM-DFU 復旧エントリを含む)と、FLIR Lepton 3.1R および UW センサー。

  • H.264 録画 -- フレームバッファレコーダーとビデオコンバーターは MPEG-4 Part 2 の代わりに H.264 でエンコードするようになりました。キーフレーム間隔が固定されるため録画のシークが正確になり、フレームレートは整数に丸められます。

  • 監査による修正 -- v5.0.0 以降のすべてのコミットを、ファームウェア、ブートローダー、ROMFS の経路に特に注意して2回にわたりリグレッションの観点でレビューしました。見つかった欠陥はこのリリースで修正されています(バグ修正を参照)。

新機能#

  • ヒストグラムペインの ボード情報、メモリ、統計の各ビュー。ダークテーマとライトテーマの両方で全面スタイルとなり、テキストを選択できます(cdea506655b、7629a588db9、e21bd94a395、b55dcc412f6、fc744920011、e7dc3bf0092、448e21db0bd)。

  • チャンネルビュー -- コントロールの全種類(label、toggle、slider、spin box、radio、line edit、select、push button、text)、スペクトルアナライザ(Hann、Hamming、Blackman、矩形の各窓、平均化、ピークホールド、対数周波数)、立ち上がり / 立ち下がりエッジトリガー、マーカー、履歴、プロットのエクスポートを備えた波形グラフ。Depth、Rainbow、Ironbow、Event の各パレット、最近傍 / バイリニア / バイキュービックのスケーリング、スクリプトレンジ / 自動レンジ / 平坦化のトーンマッピング、一時停止ボタン、ホバーでの読み出し、宣言された範囲とフレームの最小 / 最大 / 平均を示すヘッダー、画像の保存を備えた深度マップ。CSV、WAV、NumPy、Edge Impulse の JSON / CBOR への記録(任意の Edge Impulse ラベル、長時間キャプチャのパート分割、すべて記録に対応)。プロトコル設定内のチャンネルポーリング間隔(5b4f31a6b3a、d1252a24f14、bfd7fd72f94、d1c2ab02a5f、4808b8ffe26、dfc323b4ec7、61c077df9a5、8c2cd6cf1f1、1534225fcee)。

  • フレームバッファのソースセレクタと形式表示 -- マルチセンサーカメラでストリーミングするセンサー(またはオフ)を選択でき、受信したフレーム形式がペインのタイトルに表示されます。JPG トグルは JPG モード / RAW モードのセレクタになりました(e76284bde9e、c2baff8d60c、afece31cb6a、76448d7b9dd)。

  • サードパーティのリポジトリ -- ファイル駆動のファームウェアリポジトリを組み込みのボードリストとマージ、設定ページ付きのネットワーク更新、ベンダーごとの開発版ファームウェアチャンネル、ユーザーが制御するベンダー優先順位、File → Examples にマージされるベンダーのサンプル、Model Zoo にマージされるベンダーのモデル、コード補完に渡されるカスタム .pyi スタブ、ベンダーが組み込みコンテンツを覆い隠す際のオーバーライド警告、ベンダーボードのライセンスチェック(21a63a74949、b5512efe949、b15afdac479、1fe693f0b61、ae11ffeffc4、cf47a37ba65、100bdeb530b、252924901f7、c75a81f2a4a、3e7f077a738、5c5aa3e657c、e3f36adbdcb、b04da8ee888)。

  • 実行前のコメント除去 -- スクリプトはカメラに送信される前にコメントが取り除かれ、コメントの多いスクリプトでカメラの RAM を節約します。行は保持されるため、トレースバックの行番号はエディタと一致したままです(677546ee033)。

  • インラインのエラーマーク -- スクリプトが例外で終了すると、エディタは該当行を赤くマークし、その横にエラーテキストを表示します。マークはファイルを編集するか、再実行するか、切断すると消えます(677546ee033)。

  • ROMFS エディタへのドラッグ&ドロップ -- デスクトップからドロップしたファイルは、Add File と同じスクリプトのコンパイルとモデル変換を経て、ドロップ先のフォルダに入ります(677546ee033)。

エディタ、ターミナル、UI の改善#

  • ヒストグラムをカメラの RGB565 テーブルではなくフル 8 ビット RGB から計算 するようになり、共通のプロットパレット、アルファブレンドされた塗りつぶし、控えめなグリッド線を備えました(238e099373e、f126e8f34c0、cebbf0c9e2c)。

  • 非表示のペインビューは処理を行わない -- 別のビューが表示されている間やペインが折りたたまれている間、ヒストグラムは計算と再描画をスキップし、再び表示されたときに追いつきます。サイズゼロの再描画は抑制されます(c8730df8399)。

  • サンプルスクリプトはインポートの後に空行を挟んで開かれる ようになり、同梱サンプルも同じ形式に整形し直されました(1f88f617ec5、87c8f7d41c7)。

  • コード補完でプライベート名を表示 -- 組み込みの言語サーバーが、カメラのモジュールで使われている _ 接頭辞付きのメンバーを除外しなくなりました(23ab5b38bb3)。

  • macOS -- 設定内のプロトコルコントロールのグループボックスが窮屈でなくなり、アイテムビューが Cocoa アクセシビリティのクラッシュから保護され、Apple Silicon ユーザーには「Allow accessories to connect」セキュリティ設定について、RT1062 ユーザーには Input Monitoring が許可されていない場合(ファームウェア更新に必要です)に警告します。どちらの警告も接続後に表示されます(7d7b69367bf、69fe7ffc913、742cb4d8c0b、8890eb77834、89646292e8d)。

  • Viewer モードのショートカット -- Viewer モード(および通常の IDE)を壊していた迷子のショートカットを無効にし、Viewer モードがクリアしたショートカットをフル IDE の設定に保存しなくなりました(251b422f642、0d153671c1d)。

  • 未知のセンサーはチップ ID で命名 されてステータスバーに表示されるため、識別してセンサーテーブルに追加できます(df561775b54)。

ファームウェア、ボード、ツール#

  • OpenMV N6 Classic のサポート: ボードエントリ、Windows DFU ドライバーとインストーラーコード、Linux udev ルール(4ff4a1f239d、bdd6c96ef47、25fcdc13c6a、7730b699f60)。

  • FLIR Lepton 3.1R および UW センサーのサポート(12c03024f3c)。

  • IMX ブートローダーの引き渡し -- 事前にアームされたキャッチャーが、RT1062 のブートローダーが列挙された瞬間にそれを捕捉します。負荷の高いホストでは1秒の猶予を逃す可能性があった、プローブごとにプロセスを起動するループを置き換えました(3d8b63c6859)。

  • ファームウェア zip -- Load Custom Firmware が romfs のみのバンドルと ROMFS を含まないバンドルを受け付けるようになり、既にブートローダーモードにある IMX ボードに対してもカスタムまたは開発版ファームウェアがステージングされます(b6f16f54c1a、94d5fd5c30e)。

  • 開発版 / カスタムファームウェア、ROMFS エディタのイメージ、ビデオツールの一時ファイル用の 専用ステージングディレクトリ。他のプロセスの古いファイルが誤って書き込まれたり変換されたりすることがなくなりました(939154501af、a288fe712e7、5c8c717adec)。

  • H.264 ビデオ -- 録画と変換はキーフレーム間隔を固定した H.264 でエンコードされます。整数に近い録画フレームレートはその整数に丸められるため、プレーヤーは 29.97 ではなく 30 FPS と報告します(6ad1968341d、d62c110e155、bab488a54fe)。

  • リソース zip のチェックサム -- IDE のリソース更新は、バージョンとともに公開される SHA-256 に対して検証されます(677546ee033)。

  • OpenMV のサーバーへのリクエストで 正直な User-Agent を送信します(c4279c0213e)。

バグ修正#

v5.0.0 以降のすべての変更に対する2回のレビューで、以下の点が見つかり修正されました(ccea3b17d01、71826200611)。

  • ファームウェアとブートローダーの経路 -- 既にブートローダーモードにあるボードへの Load Custom Firmware の zip が、代わりにリリースビルドを書き込んでいました。Alif の復旧経路は、リリースを書き込むのではなくカスタムビルドを拒否するようになりました。文鎮化した N6 Classic が通常の N6 ブートローダーとファームウェアで修復されていました。古いサードパーティのリソースルートが、文鎮化した組み込みボードをベンダーのファイルへ誘導する可能性がありました。IMX キャッチャーはクラッシュ後も書き込みに進むことがあり、フラッシュローダーの待機中に Cancel を無視し、アーム中のキャンセル後にシリアルポートを開いたままにしていました。N6 Classic ブートローダーに udev ルールがありませんでした。Windows ドライバーインストーラーが受け入れる終了コードにタイプミスがありました。

  • ROMFS エディタ -- ROMFS 読み取り中の Cancel が「Failed to unpack ROMFS!」を報告し、まだブートローダーにあるカメラを10秒間待っていました。書き込み中の Cancel は、ROMFS が不完全な可能性があるまま何も表示せずに終了していました。書き込み中の dfu-util エラーが成功として報告されていました。続くダイアログでの Cancel がすべての編集を破棄していました。自動再接続が開いているエディタの裏で接続することがありました。接続中の Edit ROMFS が不必要に先に切断と再接続を行っていました。コンバーターの一時ディレクトリがリークしていました。キャンセルされた操作の後は、カメラが自力で復帰するようブートローダーに DFU からの離脱を要求するようになりました。

  • サードパーティのリポジトリ -- zip エントリは展開前に検証されます(パストラバーサルやシンボリックリンクは不可)。部分的なインストールや再インストールでは、新しいコピーが配置されるまで古いコピーを保持します。拒否されたベンダーボードが、重なっていた組み込みボードを道連れにすることがなくなりました。PID マスクが欠けている場合、実行時に何にも一致しませんでした。ベースのサンプル / モデルのインデックス行が同名のベンダーファイルを取り込むことがなくなりました。

  • フレームバッファとセンサー -- GENX320 イベントセンサー(チップ ID が 0x80000000 を超えるもの)がフレームバッファを無効にしていました。保存したセンサー選択が再起動後に残りませんでした。古い「disable frame buffer」設定が移行されていませんでした。ストリームソースコマンドはプロトコルバージョンで制御されるようになりました。ヒストグラムページが非表示の間、フォーカス指標が固まっていました。切断後もフレーム形式がタイトルに残っていました。

  • 接続フロー -- macOS の警告がファームウェア更新プロンプトの「Yes」を飲み込んでしまうことがありました。Model Zoo は常に折りたたまれた状態で開き、選択が復元されませんでした。カメラが10秒以上前から接続されていた場合、カメラのドライブに対する単一ドライブのフォールバックに到達できませんでした。

  • チャンネルビューとレコーダー -- 悪意あるフレームサイズがサイズチェックをオーバーフローさせる可能性がありました。Edge Impulse レコーダーはチャンクごとに再割り当てを行っていましたが、現在はパートあたり 64 MB に制限されています。名前に区切り文字を含むスキーマがレコードリストの範囲外を参照する可能性がありました。重複したレコードが実行中のレコーダーを孤立させていました。ビューが凍結されている間は書き込みが破棄されます。チャンネルリストは登録解除イベントとソフトリブートイベントで更新されるようになりました。

  • ビデオ -- ユーザーが入力した奇数の幅が libx264 ビルドでの H.264 エンコードを壊していました。キャンセルまたは失敗した .bin 変換が残したフレームを、次回の実行が取り込んでいました。

  • プロトコル -- プロトコル検出の前に実行される読み取りフラッシュに上限が設けられました(issue #336)(77cd13af76f)。カメラとドライブの関連付けが他のボリュームとの競合に負けることがなくなりました(9877480c304)。

  • シリアルポート情報ラッパーの -Wdeprecated-copy 警告(abcfaa8af5e)。

ローカライズ#

  • ペインビュー、チャンネルビューとその深度マップ、そしてこのリリースのすべての新しい文字列について、37 のカタログすべてを更新しました(1b71f243733、dc13c23ed81、a7debafdafa、173a57422f7)。

プラットフォームとツールのサポート#

  • Qt Creator ベース: 14.0.2。

  • OpenMV IDE のバージョンを 5.1.0 に更新。

  • 同梱ファームウェア: v5.0.1(ファームウェアの変更履歴を参照)。

  • 新しいボードとセンサー: OpenMV N6 Classic、FLIR Lepton 3.1R および UW。

互換性のない変更#

既存のプロジェクトには影響ありません。フレームバッファのタイトルバーにあった JPG トグルは JPG モード / RAW モードのセレクタになり、その古い「disable frame buffer」設定は新しいソースセレクタのオフ項目に移行されます。スクリプトは実行前にコメントが除去されます。実行時に自身のソーステキストを読むことに依存するスクリプトは、そうすべきではありません。