v4.8.1

v4.8.1 побудовано на Qt Creator 14.0.2 і зосереджено на новому високонадійному протоколі камери OpenMV V2, вбудованому профілювальнику коду та процесі збереження, що утримує камеру підключеною замість відключення. Вбудована мікропрограма та повний набір прикладів оновлені до версії 4.8.1. Порушень API скриптів немає, але поведінка «збереження без відключення» та видалення кількох серійних прапорів часу запуску є видимими для користувача змінами робочого процесу.

Основні можливості

  • OpenMV Protocol V2 — новий високонадійний стек камери (OMVCamera/OMVTransport/OMVDebug) з CRC32, послідовністю, ACK/NAK, повторною передачею, подіями та фрагментацією. Він автоматично узгоджується під час підключення та забезпечує скидання, завантаження, потокове передавання, виконання скриптів і статистику.

  • Code Profiler — нове вікно (Window > Show Code Profiler), яке опитує записи профілювання по функціях з камери та відображає виклики, мінімальний/максимальний/загальний/середній час у мікросекундах (μs), середні цикли, відсотки та лічильники подій у сортованій таблиці.

  • Save in place — збереження скрипту більше не відключає диск камери; IDE тепер записує main.py та скидає том на диск, щоб пристрій залишався підключеним.

  • Виявлення кількох датчиків повідомляє про всі камери на платі, відображаючи їх у рядку стану як Sensors: X, Y, де основний датчик вказано першим.

  • Dynamic Frame Reading перераховує оптимальну роздільну здатність потокового передавання для кожного формату пікселів і автоматично перелаштовує потік.

  • Вбудована мікропрограма та приклади оновлені до версії 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).

  • Додано вікно Code Profiler (Window > Show Code Profiler), яке опитує записи профілювання по функціях і відображає виклики, мінімальний/максимальний/загальний/середній час у мікросекундах (μs), середні цикли, відсотки та лічильники подій, перетворюючи адреси на символи за допомогою вбудованого аналізатора ELF ELFIO (019d3cd2c, 57cd9e1cc).

  • Додано діалог Debug Protocol Settings з відображенням у реальному часі системної інформації, статистики хоста та статистики пристрою з оновленням щосекунди, а також налаштуваннями частоти опитування каналів і об’єднаного або роздільного режиму опитування (5220a6125, 0da2f79d0).

  • Додано виявлення кількох датчиків: плата з більш ніж однією камерою відображає всі датчики в рядку стану у вигляді Sensors: X, Y, де основний датчик вказано першим (cebc79ce7).

  • Додано Dynamic Frame Reading (увімкнено за замовчуванням), яке перераховує оптимальну роздільну здатність потокового передавання для кожного формату пікселів (BINARY, GRAY, RGB565, ARGB8, JPEG, PNG) і перелаштовує потік (75c073bdb, 0da2f79d0).

  • Додано декодування кадрового буфера для форматів BINARY (1-bpp моно) і ARGB8 (32-бітний альфа-канал), тому зображення цих типів тепер відтворюються у переглядачі (dabb82062).

  • У Windows функція Connect тепер сканує 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).

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

  • Save in place: збереження скрипту більше не відключає диск камери; IDE записує main.py і скидає буфери тому на диск (FlushFileBuffers у Windows, syncfs у Linux, sync_volume_np/F_FULLFSYNC у macOS), тому пристрій залишається підключеним (1614c572f, 6928b51ea, 35ed53967).

  • Дії панелі інструментів, натиснуті під час зайнятості камери (вимкнути кадровий буфер, JPEG-стиснення, зберегти скрипт, налаштувати параметри), тепер ставляться в чергу і автоматично виконуються, коли пристрій звільняється, замість показу діалогу помилки Busy (f4315f0a4).

  • Переглядач кадрового буфера тепер за замовчуванням масштабує зображення до вікна при запуску, а панель виводу серійного терміналу тепер відображається за замовчуванням при запуску (f3ce4dc75).

  • Файли скомпільованих моделей із розширенням .lite тепер розпізнаються всюди: фільтрація та відображення у браузері банку моделей, вирівнювання ROMFS мікропрограми, а компілятори Vela/STEdge AI тепер генерують вихідні файли з розширенням .lite (f3ce4dc75).

  • Діалог компіляції моделі STEdge AI (N6) тепер аналізує та відображає відсотки використання NPU RAM і hyperRAM, а також копіює переміщений мережевий вивід до файлу, що відповідає розширенню моделі (f3ce4dc75).

  • Браузер банку моделей тепер відображає стовпець розміру файлу і розтягує стовпець назви для заповнення простору, замість приховування розміру (f3ce4dc75).

  • Шаблон нового скрипту оновлено для нового API модуля csi з роздільною здатністю VGA за замовчуванням, а вбудований приклад Hello World перемкнено з QVGA на VGA (f3ce4dc75).

  • Діалог Convert Video перероблено з використанням спільного діалогу завантажувача з кольоровим виводом, повідомленнями про успіх/невдачу, кнопкою OK-to-close та чітким повідомленням про помилку, коли 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_v2 int8 (34240cc3c).

  • Серійні тайминги тепер налаштовуються через ключі override розділу protocol у settings.json мікропрограми (overrideReadTimeout, overrideReadStallTimeout, overridePerCommandWait, а також ключі V2 overrideCRC/overrideSEQ/overrideACK) замість прапорів командного рядка часу запуску (019d8bf1d).

  • Встановлено обмеження довжини рядка мовного сервера Python на 120 символів для flake8 і pycodestyle, щоб довгі рядки більше не позначалися при значенні за замовчуванням 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).

  • Виправлено рукостискання версії протоколу на macOS для плат RT1062 і AE3 шляхом розбиття багатокомандної USB-передачі на частини розміром USBDBG_LEN, які ці плати можуть обробити (6b9d5f842).

  • Перероблено вбудований пакет драйверів для Windows: додано підписані файли драйверів .cat/.inf для кожної плати (AE3, H7, H7Plus, M4, M7, N6, Pico/PT, RT1062) та переміщено драйвери CDC серійного порту до нової папки openmvcdc з автоінсталятором на основі dpinst (439557829, ba3b01bfb).

  • Додано підтримку старіших ревізій датчика камери MT9V032 шляхом реєстрації ID датчиків 0x1311 та 0x1312 (разом з існуючим 0x1313) як MT9V0X2 (eaaa624e3).

Критичні зміни

Цей реліз не містить порушень API скриптів, але є кілька видимих для користувача змін робочого процесу:

  • Збереження скрипту більше не відключає та не від’єднує USB-диск камери. IDE тепер скидає буфери тому на місці, тому пристрій залишається підключеним після збереження.

  • Прапори серійного зв’язку часу запуску -override_read_timeout (за замовчуванням 5000 мс), -override_read_stall_timeout (за замовчуванням 1000 мс) і -override_per_command_wait (за замовчуванням 1 мс, 2 мс на macOS) видалено; серійні тайминги тепер налаштовуються через ключі override розділу protocol у settings.json мікропрограми (019d8bf1d).

  • Вбудовані завантажувачі тепер постачаються лише у форматі .bin; файли мікропрограми та завантажувача .dfu для кожної плати видалено.