v4.5.9

v4.5.9 は、ハードウェア JPEG エンコーダのないボード向けの生プレビューストリーミング、より多くの RAM を解放するハードウェアセンサークロッピング、Helium アクセラレーションによる高速なデベイヤー、そして一連のカメラ/USB デバッグの修正をもたらします。また、AprilTag 結果 API とデフォルトの AprilTag ファミリーセットが変更されているため、以下の破壊的変更をお読みください。

ハイライト

  • 生プレビューストリーミング — ハードウェア JPEG エンコーダのないボードが、プレビューに失敗する代わりに、ダウンスケールした生フレームを IDE/ホストに送信できるようになりました。

  • ハードウェアセンサークロッピング — より小さいフレームサイズを設定すると、バッファあたりのメモリが削減され、fb_alloc() 用の RAM が解放されるようになりました。

  • 高速なデベイヤー — Bayer から RGB/グレースケールへの変換が、Cortex-M55 ボードで Helium-SIMD アクセラレーションされるようになりました。

  • 破壊的変更: AprilTag 結果オブジェクトが属性アクセスに変更され、デフォルトの AprilTag ファミリーセットが削減されました(AprilTag の変更AprilTag ファミリーの変更 を参照)。

新機能

  • 生プレビューストリーミング — ハードウェア JPEG エンコーダのないボードが、JPEG をバイパスしてダウンスケールした生フレーム(約 60 KB に制限)を IDE/ホストにストリーミングできるようになり、これらのボードでもライブプレビューが機能します。

その他の変更と改善

  • ハードウェアクロッピング がすべての STM32/NXP ボード(Giga、Nicla Vision、Portenta H7、OpenMV 1〜4 / 4 Plus / Pure Thermal / RT1060)で有効になりました。フレームサイズまたはウィンドウが設定されると、バッファあたりのメモリがクロップされたサイズに削減され、fb_alloc() 用により多くの RAM が解放されます。

  • 高速なデベイヤー — Bayer から RGB565/グレースケールへの変換が、Cortex-M55 ボード(例: RT1060)で ARM Helium/MVE SIMD アクセラレーションされるようになり、SIMD JPEG エンコーダ経路を共有します。

  • 高速な IDE デバッグ — デバッガは可能な場合に USB スタックから直接データを転送し、余分なコピーを回避するようになりました。

  • MicroPython サブモジュールを更新 — ボードが TinyUSB CDC バッファをリサイズできるようになり、GC とビルドルールの修正も含まれます。

バグ修正

カメラとセンサー:

  • OV7725 の Bayer/CFA パターン(GBRG → BGGR)を修正し、OV7725 カメラでのデベイヤー後のカラー出力を修正しました。OV7725 は Bayer ピクセルフォーマットを報告するようになり、Bayer 専用センサーは 1 バイト/ピクセルのソース深度を報告するようになりました。

  • 生/Bayer フレームバッファのサイズ計算を修正しました。

機械学習:

  • TensorFlow Lite Micro が一時テンソルアリーナのサイズ算出時に GC ヒープの空きメモリを使用するようになり、フレームバッファメモリが限られたボードでのモデルロード時のアロケーション失敗を防止します。

ホスト / IDE:

  • TinyUSB ボードでの USB デバッグ CDC バッファの処理を修正し、シリアル/デバッグのスループットの信頼性を向上させました。

  • tools/pyopenmv: RGB565 のバイト順を修正し、scale 引数を追加しました。フレームバッファツールが画像のサイズ/フォーマットを報告するようになりました。

ハードウェアとボードのサポート

  • OV7725 が Bayer ピクセルフォーマットを報告するようになりました(正しい生/CFA 処理)。

  • STM32/NXP ボード全般でハードウェアクロッピングが有効になりました。

破壊的 API 変更

v4.5.8 から v4.5.9 の間でユーザーに見える API の破壊的変更です。範囲: modules/ 内の Python C モジュールと scripts/libraries/ 内の Python ライブラリ。

各変更にはその影響度がタグ付けされています:

  • minor — 限定的な API。それを使用していたスクリプトにのみ影響します。

  • behavior — 同じ API ですが結果が異なります。調整済みのスクリプトを再確認してください。

変更はその順序で影響度ごとにグループ化されています。コードの移植だけが目的の場合は、末尾の 移行チェックリスト に進んでください。各コミットハッシュは GitHub 上の差分にリンクしています。

AprilTag 結果オブジェクトと set_buffers (minor)

find_apriltags() からの AprilTag 結果は、そのデータをメソッドではなく 属性 として公開するようになりました。tag.cx()tag.family() などの代わりに tag.cxtag.cytag.rotationtag.familytag.corners を使用してください。新しい name(ファミリー名の文字列)と浮動小数点精度の cxf / cyf アクセサが追加されました。

別途、自動ビデオバッファ構成が変更されました。set_buffersauto_adjust を置き換えます。-1 を渡すとフレームサイズのバッファを最大 3 つ(または収まる最大数)使用し、1 を渡すとフレームバッファ全体を使用します。バッファのサイズ算出はビット/ピクセルを考慮するようになったため、1 bpp フォーマットではより多くのバッファを確保できます。

コミット: c0d4759f87b36e4ef6

ble_advertising とネットワーク経由 RPC を削除 (minor)

ble_advertising ヘルパーライブラリと ble_temperature.py の例は削除されました。代わりに aioble を使用してください(aioble の温度の例が提供されています)。RPC ネットワークのマスター/スレーブクラスは rpc.py から削除されました。

コミット: 6513276c144a7e579d

AprilTag ファミリーがデフォルトで無効化 (behavior)

AprilTag ファミリーが個別にコンパイル時に選択可能になり、使用されないものはデフォルトで無効になりました。標準ボードでは、他のファミリーを有効にしてファームウェアを再ビルドしない限り、find_apriltags()TAG36H11 ファミリーのみを検出するようになりました。標準ビルドで他のファミリー(TAG16H5TAG25H9 など)に依存しているスクリプトは、それらを黙って検出しなくなります。

コミット: effe12f2c

移行チェックリスト

v4.5.9 へのクリーンな移植には、通常以下の作業が必要です:

  1. AprilTag 結果へのアクセスをメソッド呼び出しから属性に変更し(tag.cx()tag.cx)、auto_adjustset_buffers に切り替えます(AprilTag / バッファの変更)。

  2. ble_advertisingaioble に置き換え、RPC ネットワークのマスター/スレーブの使用をすべて削除します(削除項目)。

  3. 標準ビルドで TAG36H11 以外の AprilTag ファミリーを使用している場合は、それらがデフォルトで検出されなくなったことに注意してください(AprilTag ファミリーの変更)。