v4.8.9

v4.8.9 は、Qt Creator 14.0.2 をベースとした、アイドル時の効率と切断の信頼性に関するリリースです。IDE がハードウェアを監視する方法を全面的に見直し、何も起きていないときにポーリングを停止するようにし、接続/切断パスを強化し、同梱モデルズーを整理しました。この範囲では Qt Creator のリベースはありませんが、いくつかのデフォルト動作と同梱モデル名が変更されているため、以下の破壊的変更をご確認ください。

ハイライト

  • イベント駆動のハードウェア監視 が継続的なデバイスポーリングを置き換えました。IDE はアイドル時にスキャンタイマーを停止し、実際の USB の抜き差しやディスクのマウント/アンマウントのイベントに応じてのみシリアルポートとドライブを再スキャンするようになり、アイドル時の CPU とリソース使用量を大幅に削減します。

  • アクティビティに応じてゲートされるアイドルタイマー: フレームバッファのイベントタイマー(以前は 1ms ごとに発火)は接続中のみ実行され、ターミナルのカーソル点滅タイマー(500ms)はターミナルがフォーカスされているときのみ実行されるようになりました。

  • バックグラウンドのインポート同期はデフォルトでオフ: Examples および Documents/OpenMV インポートフォルダの自動同期が無効になり、メニューの切り替えも非表示になりました。これにより IDE がこれらのフォルダを継続的に再スキャンしなくなります。

  • より高速で信頼性の高い切断: シリアルポートが即座に閉じられカメラが解放され、プロトコルのタイムアウトが短く調整され、ハングしたカメラがハングする代わりに復旧するようになりました。

  • わかりやすいフレームバッファモードボタンJPG Mode または RAW Mode を表示し、現在の圧縮状態を一目で把握できるようになりました。

新機能

  • 新しい HardwareMonitor による ネイティブなハードウェアイベント監視 で、macOS では IOKit と DiskArbitration、Windows では WM_DEVICECHANGE のメッセージ専用ウィンドウ、Linux では NETLINK_KOBJECT_UEVENT netlink ソケットを用いて hardwareEventDetected を発行します。シリアルスキャンとドライブスキャンのタイマーは、各イベントで再開される 10s のスキャンウィンドウの背後にゲートされるようになりました (a6612fec9, 462b55f7b, 17c2e93c7)。

その他の変更と改善

  • フレームバッファのイベント処理タイマー(以前は 1ms ごとに発火)は接続時に開始され切断時に停止されるようになり、ターミナルのカーソル点滅タイマー(500ms)は常に動作する代わりにターミナルのフォーカスの出入りに応じて開始・停止するようになりました (a02afea53)。

  • Examples および Documents/OpenMV インポートフォルダの自動同期はデフォルトで無効になり、切り替えは非表示になりました。フォルダスキャンタイマーは初期化時に開始されなくなり、(現在は非表示の)アクションが有効になっているときのみ実行されます (478f83e97)。

  • フレームバッファ形式の切り替えボタンは、JPEG 圧縮がオンのときに JPG Mode を、オフのときに RAW Mode を表示するようになりました (c48831224)。

  • 接続時に、IDE は以前に保存されたボードごとの JPG/RAW の選択を復元する代わりに、常にボードの JPEG 優先デフォルトをフレームバッファに適用するようになりました (c48831224)。

バグ修正

  • 切断時に close() 内でインラインでシリアルポートを閉じてカメラ(およびポート)を解放するようになり、切断がより高速かつ信頼性の高いものになりました (1e8941080, 9d31bcf80)。

  • ポートが閉じられるときにシリアルアイドルタイマーが停止され v2 プロトコルフラグがクリアされるようになり、切断後の古いアイドルタイマーの動作を修正しました (4bd2fd9ea)。

  • プロトコルコマンドのタイムアウトを調整し(オープンタイムアウトを 5s から 2s に引き下げ、再同期と CHANNEL_SIZE は 1s の短いタイムアウトを使用)、すべてのシリアルコマンドが失敗時にカメラオブジェクトを破棄するようにしました。これにより、ハングしたカメラがハングする代わりにより速く復旧して切断します (04aa6aea3)。

  • スクリプト停止時のロック/ハングの問題を修正しました。スクリプト停止イベントがフレームイベントの状態もクリアし、フレーム準備タイマーをリセットするようになりました (3695b0704)。

  • プロトコルがカメラからの短い読み取りを許容するようになり、それを破棄したりエラーにしたりする代わりに、部分的なペイロードまたはテキストを返すようになりました (0c8ccd58e)。

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

  • Qt Creator ベース: 14.0.2。

  • AE3 または N6 モジュールと PAG7936 または PS5520 センサーを組み合わせたボードが、より高い QVGA デフォルトを取得するようになりました(以前は AE3 + PAG7936 のみ)。これにより、該当するサンプルが QQVGA から QVGA へ自動的にアップグレードされます (fcc0c3227)。

  • 同梱の ST MoveNet 姿勢推定モデルズーを整理しました。冗長なテンソル単位(_pt)モデルと重複する singlepose/st_movenet バリアントを削除し、残ったチャンネル単位のヒートマップモデルを movenet_singlepose_192movenet_singlepose_224movenet_singlepose_256 にリネームしました (18f66c4c1)。

  • 同梱の DeepLabV3 セマンティックセグメンテーションモデルとそのサンプルアセットをモデルズーから削除しました (a929e0dc1)。

破壊的変更

v4.8.8 と v4.8.9 の間のユーザーから見える動作および同梱アセットの変更。

  • 接続時に、フレームバッファは常にボードの JPEG 優先デフォルトを使用し、以前に保存されたボードごとの JPG/RAW の選択を無視するようになりました (c48831224)。

  • Examples および Documents/OpenMV インポートフォルダのバックグラウンド同期はデフォルトで無効になり、その切り替えは非表示になりました (478f83e97)。

  • いくつかの同梱モデルが削除またはリネームされました。DeepLabV3 セマンティックセグメンテーションモデルは削除され、ST MoveNet モデルは整理されて movenet_singlepose_192/224/256 にリネームされました。古いモデルファイル名を参照しているスクリプトは更新する必要があります (a929e0dc1, 18f66c4c1)。