v4.5.9

v4.5.9 забезпечує потокове передавання сирого попереднього перегляду для плат без апаратного JPEG-кодера, апаратне кадрування датчика для звільнення більшого обсягу RAM, прискорене декодування Баєра за допомогою Helium та пакет виправлень для камери/USB-налагодження. Також змінено API результатів AprilTag та набір сімей AprilTag за замовчуванням — ознайомтеся з несумісними змінами нижче.

Основні зміни

  • Потокове передавання сирого попереднього перегляду — плати без апаратного JPEG-кодера тепер можуть надсилати до IDE/хоста зменшені сирі кадри замість невдалого попереднього перегляду.

  • Апаратне кадрування датчика — встановлення меншого розміру кадру тепер зменшує пам’ять на буфер і звільняє RAM для fb_alloc().

  • Прискорене декодування Баєра — перетворення Bayer→RGB/відтінки сірого тепер прискорено за допомогою Helium-SIMD на платах Cortex-M55.

  • Несумісна зміна: об’єкт результату AprilTag змінився на доступ через атрибути, а набір сімей AprilTag за замовчуванням було скорочено (дивіться зміни AprilTag та зміну сімей AprilTag).

Нові можливості

  • Потокове передавання сирого попереднього перегляду — плати без апаратного JPEG-кодера можуть обходити JPEG і передавати до IDE/хоста зменшені сирі кадри (обмежені ~60 КБ), тому живий перегляд на цих платах працює.

Інші зміни та покращення

  • Апаратне кадрування тепер увімкнено на всіх платах STM32/NXP (Giga, Nicla Vision, Portenta H7, OpenMV 1–4 / 4 Plus / Pure Thermal / RT1060). При встановленні розміру або вікна кадру пам’ять на буфер зменшується до обрізаного розміру, звільняючи більше RAM для fb_alloc().

  • Прискорене декодування Баєра — перетворення Bayer→RGB565/відтінки сірого тепер прискорено засобами ARM Helium/MVE SIMD на платах Cortex-M55 (наприклад, RT1060) зі спільним шляхом SIMD JPEG-кодера.

  • Швидше IDE налагодження — налагоджувач тепер, де можливо, передає дані безпосередньо зі стека USB, уникаючи зайвого копіювання.

  • Оновлено підмодуль MicroPython — плати можуть змінювати розмір CDC-буфера TinyUSB, а також виправлення GC та правил збирання.

Виправлення помилок

Камера та датчики:

  • Виправлено шаблон Bayer/CFA OV7725 (GBRG → BGGR), що усунуло некоректний колірний вивід при декодуванні Баєра на камерах OV7725; OV7725 тепер повідомляє піксельний формат Bayer, а датчики лише з Bayer тепер повідомляють глибину джерела 1 байт на піксель.

  • Виправлено розрахунок розміру кадрового буфера для raw/Bayer.

Машинне навчання:

  • TensorFlow Lite Micro тепер використовує вільну пам’ять купини GC при визначенні розміру тимчасової арени тензорів, запобігаючи помилкам виділення при завантаженні моделі на платах з обмеженою пам’яттю кадрового буфера.

Хост / IDE:

  • Виправлено обробку CDC-буфера USB-налагодження на платах TinyUSB для надійнішої пропускної здатності послідовного/налагоджувального каналу.

  • tools/pyopenmv: виправлено порядок байтів RGB565, додано аргумент scale, а інструмент кадрового буфера тепер повідомляє розмір/формат зображення.

Підтримка апаратного забезпечення та плат

  • OV7725 тепер повідомляє піксельний формат Bayer (правильна обробка raw/CFA).

  • Апаратне кадрування увімкнено для всього діапазону плат STM32/NXP.

Несумісні зміни API

Видимі для користувача несумісні зміни API між v4.5.8 та v4.5.9. Область охоплення: C-модулі Python у modules/ та бібліотеки Python у scripts/libraries/.

Кожна зміна позначена за рівнем впливу:

  • minor — вузький API; стосується лише скриптів, що його використовували.

  • behavior — той самий API, інші результати; перевірте налаштовані скрипти.

Зміни згруповані за рівнем впливу у такому порядку. Якщо вам потрібно лише перенести код, перейдіть до контрольного списку міграції наприкінці. Кожен хеш коміту веде до його diff на GitHub.

Об’єкти результатів AprilTag та set_buffers (minor)

Результати AprilTag з find_apriltags() тепер надають дані через атрибути замість методів — використовуйте tag.cx, tag.cy, tag.rotation, tag.family, tag.corners замість tag.cx(), tag.family() тощо. Додано нові аксесори name (рядок назви сім’ї) та cxf / cyf з точністю float.

Окремо змінилося автоматичне налаштування відеобуфера: set_buffers замінює auto_adjust — передайте -1 для використання до трьох буферів розміром кадру (або стількох, скільки вміщується) та 1 для використання всього кадрового буфера. Розмір буфера тепер враховує кількість біт на піксель, тому для форматів 1 bpp можна виділити більше буферів.

Коміти: c0d4759f8, 7b36e4ef6

ble_advertising та RPC через мережу вилучено (minor)

Допоміжна бібліотека ble_advertising та приклад ble_temperature.py вилучені — використовуйте aioble (надається приклад температури на aioble). Класи мережевих master/slave RPC вилучено з rpc.py.

Коміти: 6513276c1, 44a7e579d

Сім’ї AprilTag вимкнено за замовчуванням (behavior)

Сім’ї AprilTag тепер вибираються індивідуально під час компіляції, а невикористовувані вимкнені за замовчуванням. На стандартних платах find_apriltags() тепер виявляє лише сім’ю TAG36H11, якщо мікропрограма не зібрана з іншими увімкненими сім’ями. Скрипти, що покладаються на інші сім’ї (TAG16H5, TAG25H9, …) у стандартній збірці, тихо припинять їх виявляти.

Коміт: effe12f2c

Контрольний список міграції

Для чистого переходу на v4.5.9 зазвичай потрібно виконати такі дії:

  1. Змінити доступ до результатів AprilTag з викликів методів на атрибути (tag.cx()tag.cx) та замінити auto_adjust на set_buffers (зміни AprilTag / буфера).

  2. Замінити ble_advertising на aioble та відмовитися від використання мережевих master/slave RPC (видалення).

  3. Якщо ви використовуєте сім’ї AprilTag, відмінні від TAG36H11, у стандартній збірці, зверніть увагу, що вони більше не виявляються за замовчуванням (зміна сімей AprilTag).