v4.8.1¶
v4.8.1 построена на Qt Creator 14.0.2 и сосредоточена на новом высоконадёжном протоколе камеры OpenMV V2, встроенном профилировщике кода (Code Profiler) и рабочем процессе сохранения, при котором камера остаётся примонтированной вместо извлечения. Поставляемая прошивка и полный набор примеров обновлены до 4.8.1. Изменений в API скриптов нет, но поведение «сохранение больше не извлекает» и удаление нескольких последовательных флагов запуска являются заметными для пользователя изменениями рабочего процесса.
Основные моменты¶
OpenMV Protocol V2 — это новый высоконадёжный стек камеры (
OMVCamera/OMVTransport/OMVDebug) с CRC32, нумерацией последовательностей, ACK/NAK, повторной передачей, событиями и фрагментацией. Он автоматически согласуется при подключении и управляет сбросом, загрузкой, потоковой передачей, выполнением скриптов и статистикой.Code Profiler — это новое окно (
Window>Show Code Profiler), которое опрашивает записи профилирования по функциям с камеры и показывает количество вызовов, минимальные/максимальные/суммарные/средние микросекунды (мкс), среднее число циклов, процент и счётчики событий в сортируемой таблице.Сохранение на месте больше не извлекает накопитель камеры; теперь IDE записывает
main.pyи сбрасывает том на диск, поэтому устройство остаётся примонтированным.Обнаружение нескольких датчиков сообщает о каждой камере на плате, что отображается в строке состояния как
Sensors: X, Yс главным датчиком в начале списка.Динамическое чтение кадров заново вычисляет оптимальное разрешение сырого потока для каждого формата пикселей и автоматически переконфигурирует поток.
Поставляемая прошивка и примеры обновлены до 4.8.1 для всех плат, добавлены новые примеры для событийной камеры GenX320, машинного обучения TensorFlow, OLED-дисплея Alif и шилдов 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), которое опрашивает записи профилирования по функциям и отображает количество вызовов, минимальные/максимальные/суммарные/средние микросекунды (мкс), среднее число циклов, процент и счётчики событий, сопоставляя адреса с символами через встроенный парсер ELF ELFIO (019d3cd2c, 57cd9e1cc).Добавлено диалоговое окно Debug Protocol Settings, отображающее в реальном времени System Info, Host Stats и Device Stats с обновлением каждую секунду, открывающее доступ к частотам опроса по каждому каналу, а также к управлению объединённым и раздельным опросом (5220a6125, 0da2f79d0).
Добавлено обнаружение нескольких датчиков: плата с более чем одной камерой сообщает обо всех из них в строке состояния как
Sensors: X, Y, главный датчик первым (cebc79ce7).Добавлено динамическое чтение кадров (включено по умолчанию), которое заново вычисляет оптимальное разрешение сырого потока для каждого формата пикселей (
BINARY,GRAY,RGB565,ARGB8,JPEG,PNG) и переконфигурирует поток (75c073bdb, 0da2f79d0).Добавлено декодирование буфера кадра для сырых форматов пикселей
BINARY(1-битный монохром) иARGB8(32-битный с альфа-каналом), так что эти типы изображений теперь отображаются в просмотрщике (dabb82062).В Windows функция Connect теперь сканирует USB-устройства, помеченные ОС как проблемные, и предупреждает списком неисправных устройств, которые могут блокировать подключение (1a5beb081, 1b59cd78e).
Добавлен индикатор регистрации в строке состояния: зелёная кнопка
Registeredили коралловаяUnregisteredдля подключённой камеры, по нажатию на которую можно зарегистрировать плату (a8c98a4b9).Просмотрщик буфера кадра теперь может отображать вместо изображения отцентрированное текстовое сообщение, отправленное из работающего скрипта через новый управляющий код
FB_MESSAGE(530048201).Добавлены новые записи в model-zoo: модели оценки глубины ST FastDepth (224/256/320), модель позы ключевых точек головы от ST, модели рук для обнаружения ладони и ключевых точек руки, а также фронтальная модель обнаружения лиц BlazeFace (551668410, 4d64556d4, fadd6c4ed, b8277bb88, a8c98a4b9).
Добавлен скрипт самотестирования только для заводской сборки (камера, IMU, ToF, WiFi, LAN), который поставляется и автоматически открывается при запуске в заводском варианте IDE (0db7fbbb0); часть теста для LAN на RT1060 в настоящее время отключена (48370d022).
Прочие изменения и улучшения¶
Сохранение на месте: сохранение скрипта больше не извлекает накопитель камеры; IDE записывает
main.pyи сбрасывает том на диск (FlushFileBuffersв Windows,syncfsв Linux,sync_volume_np/F_FULLFSYNCв macOS), поэтому устройство остаётся примонтированным (1614c572f, 6928b51ea, 35ed53967).Действия панели инструментов, выполненные во время занятости камеры (отключение буфера кадра, JPEG-сжатие, сохранение скрипта, настройка параметров), теперь ставятся в очередь и выполняются автоматически, когда устройство освобождается, вместо показа диалога ошибки Busy (f4315f0a4).
Просмотрщик буфера кадра теперь по умолчанию использует режим вписывания, поэтому изображение автоматически масштабируется под окно при запуске, а панель вывода последовательного терминала теперь отображается по умолчанию при запуске (f3ce4dc75).
Скомпилированные файлы моделей с расширением
.liteтеперь распознаются везде: при фильтрации и отображении в браузере model-zoo, при выравнивании ROMFS прошивки, а компиляторы Vela/STEdge AI теперь выдают вывод.lite(f3ce4dc75).Диалог компиляции моделей STEdge AI (N6) теперь разбирает и сообщает проценты использования NPU RAM и hyperRAM и копирует перемещённый вывод сети в файл с расширением, соответствующим расширению модели (f3ce4dc75).
Браузер model-zoo теперь показывает столбец Size с размером файла и растягивает столбец имени по ширине вместо того, чтобы скрывать размер (f3ce4dc75).
Шаблон нового скрипта обновлён под новый API модуля
csiи по умолчанию использует разрешение VGA, а поставляемый пример Hello World переключён с QVGA на VGA (f3ce4dc75).Диалог Convert Video был переписан с использованием общего диалога загрузчика с цветным выводом, сообщениями об успехе/неудаче, кнопкой OK для закрытия и понятной ошибкой, когда 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в файлы с простыми именами по размеру) и удалены крупные варианты int8tiny_yolo_v2(34240cc3c).Тайминги последовательного порта теперь настраиваются через ключи переопределения
protocolв файле прошивкиsettings.json(overrideReadTimeout,overrideReadStallTimeout,overridePerCommandWaitи ключи V2overrideCRC/overrideSEQ/overrideACK) вместо флагов командной строки во время запуска (019d8bf1d).Установлено ограничение длины строки языкового сервера Python в 120 столбцов для flake8 и pycodestyle, чтобы длинные строки больше не помечались по умолчанию на 79 (dabb82062).
Уменьшен набор поставляемых моделей машинного обучения путём перемещения коллекции моделей Qualcomm и
google/mobilenet_v1вmodels_unusedдля сокращения размера установщика (c44ddba20).
Исправления ошибок¶
Диалоги прогресса загрузки прошивки и обновления ресурсов были сделаны устойчивыми к сбоям с помощью защит
QPointer, поэтому они больше не используют удалённый диалог, если он закрывается в середине загрузки (f3ce4dc75).Сканирование накопителей теперь продолжает пересканирование, пока не будет найден USB-накопитель камеры, и очищает устаревшие записи о накопителях при отключении, устраняя прежний костыль с одноразовым таймером (a31d41b4e).
Несколько исправлений подключения и последовательного порта: скрытые датчики (например,
SoftCSI) больше не загромождают отображаемый тип датчика, таймер keep-alive последовательного порта в 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 путём регистрации идентификаторов датчиков
0x1311и0x1312(наряду с существующим0x1313) какMT9V0X2(eaaa624e3).
Несовместимые изменения¶
В этом выпуске нет изменений в API скриптов, но есть несколько заметных для пользователя изменений рабочего процесса:
Сохранение скрипта больше не извлекает и не размонтирует USB-накопитель камеры. Теперь IDE сбрасывает буферы тома на месте, поэтому устройство остаётся примонтированным после сохранения.
Флаги последовательного порта во время запуска
-override_read_timeout(по умолчанию 5000 мс),-override_read_stall_timeout(по умолчанию 1000 мс) и-override_per_command_wait(по умолчанию 1 мс, 2 мс в macOS) были удалены; тайминги последовательного порта теперь настраиваются через ключи переопределенияprotocolв файле прошивкиsettings.json(019d8bf1d).Поставляемые загрузчики теперь поставляются только в формате
.bin; файлы прошивки и загрузчика.dfuдля каждой платы были удалены.