v5.1.0#

v5.1.0 – це випуск із новими можливостями. Панель під буфером кадрів виростає з гістограми в набір живих подань – «Інформація про плату», «Пам’ять», «Статистика» та нове подання Канали, що перетворює значення, які публікує скрипт, на віджети, графіки, спектри й карти глибини та записує їх у файли – буфер кадрів отримує селектор джерела для камер з кількома сенсорами, IDE вчиться завантажувати сторонні репозиторії плат, прошивок, прикладів, моделей і заглушок, а відеозаписи переходять на H.264. Підтримуються нові плати та сенсори, інструменти роботи з прошивкою зміцнено повним аудитом кожної зміни від v5.0.0, а низку поведінок перенесено з OpenMV Studio. Його побудовано на Qt Creator 14.0.2, і він містить прошивку v5.0.1.

Основне#

  • Подання панелі – заголовок панелі гістограми отримує селектор, що перемикає панель між поданнями Гістограма, Інформація про плату (обладнання, версії та можливості підключеної камери), Пам’ять (живі графіки купи MicroPython та кожного пулу UMA з відстеженням піків), Статистика (лічильники пакетів, помилок та подій кожного каналу протоколу налагодження) і Канали.

  • Подання «Канали» – скрипт може публікувати іменовані канали даних та елементів керування через протокол налагодження, а IDE відображає їх у реальному часі: мітки, перемикачі, повзунки, поля-лічильники, радіокнопки, текстові поля, селектори, кнопки та текстові блоки, що записують значення назад на камеру; графіки осцилограм із панорамуванням, масштабуванням, маркерами, тригерами, історією та аналізатором спектра; а також карти глибини з власними палітрами камери, трьома фільтрами масштабування та тональним відображенням. Будь-який графік або карту можна записати у файли CSV, WAV, NumPy або Edge Impulse JSON і CBOR – включно з Record All для цілого каналу – для збору навчальних даних. Після зупинки скрипта останні значення залишаються на екрані.

  • Селектор джерела буфера кадрів – камери з більш ніж одним сенсором зображення показують у заголовку буфера кадрів селектор для вибору сенсора, що передає потік до IDE (або для вимкнення потоку), перемикач JPG став селектором режиму потоку JPG / RAW, а заголовок панелі називає формат, у якому надійшов кожен кадр.

  • Сторонні репозиторії – вендор може опублікувати репозиторій плат, прошивок (випускового та розробницького каналів), прикладів, моделей машинного навчання та заглушок .pyi; IDE встановлює його з URL або з теки, куди його поклав інсталятор, об’єднує з власним вмістом, підтримує актуальним і дозволяє впорядковувати вендорів за пріоритетом. Керується з Preferences → OpenMV → Third Party Repositories.

  • Нове обладнання – плата OpenMV N6 Classic (включно з драйвером її завантажувача, правилом udev та записом відновлення ROM-DFU) і сенсори FLIR Lepton 3.1R та UW.

  • Записи H.264 – засіб запису буфера кадрів і конвертер відео тепер кодують H.264 замість MPEG-4 Part 2, з фіксованим інтервалом ключових кадрів, щоб записи чисто перемотувалися, а частота кадрів округлюється до цілого числа.

  • Виправлення за результатами аудиту – кожен коміт від v5.0.0 було двічі перевірено на регресії, з особливою увагою до шляхів прошивки, завантажувача та ROMFS; знайдені дефекти виправлено в цьому випуску (див. виправлення помилок).

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

  • Подання «Інформація про плату», «Пам’ять» та «Статистика» у панелі гістограми, з оформленням на всю ширину в темній і світлій темах та текстом, який можна виділяти (cdea506655b, 7629a588db9, e21bd94a395, b55dcc412f6, fc744920011, e7dc3bf0092, 448e21db0bd).

  • Подання «Канали» – повний набір елементів керування (мітка, перемикач, повзунок, поле-лічильник, радіокнопка, текстове поле, селектор, кнопка, текст), графіки осцилограм з аналізатором спектра (вікна Ганна, Геммінга, Блекмана та прямокутне, усереднення, утримання піку, логарифмічна частота), тригери за висхідним і спадним фронтом, маркери, історія та експорт графіка; карти глибини з палітрами Depth, Rainbow, Ironbow та Event, масштабуванням nearest / bilinear / bicubic, тональним відображенням Script Range / Auto Range / Equalize, кнопкою паузи, показником під курсором, заголовком з оголошеним діапазоном та мінімумом / максимумом / середнім кадру та Save Image; запис у CSV, WAV, NumPy та Edge Impulse JSON / CBOR з необов’язковою міткою Edge Impulse, розбиттям на частини для довгих захоплень та Record All; інтервал Channel Polling у налаштуваннях протоколу (5b4f31a6b3a, d1252a24f14, bfd7fd72f94, d1c2ab02a5f, 4808b8ffe26, dfc323b4ec7, 61c077df9a5, 8c2cd6cf1f1, 1534225fcee).

  • Селектор джерела буфера кадрів і показник формату – вибирайте сенсор для потокової передачі на камерах з кількома сенсорами або Off; отриманий формат кадру показано в заголовку панелі; перемикач JPG тепер є селектором JPG Mode / RAW Mode (e76284bde9e, c2baff8d60c, afece31cb6a, 76448d7b9dd).

  • Сторонні репозиторії – файлові репозиторії прошивок, об’єднані з вбудованим списком плат, мережеві оновлення зі сторінкою в Preferences, розробницький канал прошивки для кожного вендора, керований користувачем пріоритет вендорів, приклади вендорів, об’єднані у File → Examples, моделі вендорів, об’єднані в Model Zoo, власні заглушки .pyi для автодоповнення коду, попередження про перевизначення, коли вендор затіняє вбудований вміст, і перевірка ліцензії для плат вендорів (21a63a74949, b5512efe949, b15afdac479, 1fe693f0b61, ae11ffeffc4, cf47a37ba65, 100bdeb530b, 252924901f7, c75a81f2a4a, 3e7f077a738, 5c5aa3e657c, e3f36adbdcb, b04da8ee888).

  • Вилучення коментарів перед запуском – коментарі видаляються зі скрипта перед надсиланням на камеру, що економить оперативну пам’ять камери на скриптах з великою кількістю коментарів; рядки зберігаються, тому номери рядків у трасуванні стека й далі збігаються з редактором (677546ee033).

  • Вбудована позначка помилки – коли скрипт завершується з винятком, редактор позначає проблемний рядок червоним з текстом помилки поруч; позначка зникає, коли ви редагуєте файл, запускаєте знову або відключаєтеся (677546ee033).

  • Перетягування в редактор ROMFS – файли, перетягнуті з робочого столу, проходять ту саму компіляцію скриптів і конвертацію моделей, що й Add File, у теку, на яку їх скинуто (677546ee033).

Покращення редактора, термінала та інтерфейсу#

  • Гістограми обчислюються з повного 8-бітного RGB замість таблиць RGB565 камери, зі спільною палітрою графіків, напівпрозорими заливками та тьмянішими лініями сітки (238e099373e, f126e8f34c0, cebbf0c9e2c).

  • Приховані подання панелі не виконують роботи – гістограма пропускає обчислення та перемальовування, поки показано інше подання або панель згорнуто, і надолужує після показу; перемальовування нульового розміру приглушено (c8730df8399).

  • Приклади скриптів відкриваються з порожнім рядком після імпортів, а вбудовані приклади переформатовано так само (1f88f617ec5, 87c8f7d41c7).

  • Автодоповнення коду показує приватні імена – вбудований мовний сервер більше не відфільтровує члени з префіксом _, які використовують модулі камери (23ab5b38bb3).

  • macOS – групи елементів керування протоколом у налаштуваннях більше не стиснуті, подання елементів захищено від збоїв спеціальних можливостей Cocoa, користувачів Apple Silicon попереджають про налаштування безпеки «Allow accessories to connect», а користувачів RT1062 – коли не надано дозвіл Input Monitoring (він потрібен для оновлень прошивки); обидва попередження показуються після підключення (7d7b69367bf, 69fe7ffc913, 742cb4d8c0b, 8890eb77834, 89646292e8d).

  • Комбінації клавіш режиму перегляду – зайві комбінації, що ламали режим перегляду (і звичайну IDE), вимкнено, а режим перегляду більше не зберігає свої очищені комбінації в налаштування повної IDE (251b422f642, 0d153671c1d).

  • Невідомі сенсори називаються за ідентифікатором чипа у рядку стану, щоб їх можна було розпізнати та додати до таблиці сенсорів (df561775b54).

Прошивка, плати та інструменти#

  • Підтримка OpenMV N6 Classic: запис плати, драйвер DFU для Windows і коди інсталятора, правило udev для Linux (4ff4a1f239d, bdd6c96ef47, 25fcdc13c6a, 7730b699f60).

  • Підтримка сенсорів FLIR Lepton 3.1R та UW (12c03024f3c).

  • Передача завантажувача IMX – попередньо підготовлений перехоплювач захоплює завантажувач RT1062, щойно той з’являється на USB, замінюючи цикл запуску на кожну спробу, який міг пропустити односекундне вікно на завантаженому хості (3d8b63c6859).

  • Zip-архіви прошивки – Load Custom Firmware приймає комплекти лише з romfs та комплекти без ROMFS, а власна або розробницька прошивка готується для плат IMX, що вже перебувають у режимі завантажувача (b6f16f54c1a, 94d5fd5c30e).

  • Приватні проміжні каталоги для розробницької / власної прошивки, образів редактора ROMFS та тимчасових файлів відеоінструментів, тож застарілі файли інших процесів ніколи не можуть бути помилково прошиті чи сконвертовані (939154501af, a288fe712e7, 5c8c717adec).

  • Відео H.264 – записи та конвертації кодуються в H.264 з фіксованим інтервалом ключових кадрів; частота кадрів запису, близька до цілого числа, округлюється до нього, тож програвачі повідомляють 30 FPS замість 29.97 (6ad1968341d, d62c110e155, bab488a54fe).

  • Контрольна сума zip ресурсів – оновлення ресурсів IDE перевіряється за SHA-256, опублікованим разом із версією (677546ee033).

  • Чесний User-Agent у запитах до серверів OpenMV (c4279c0213e).

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

Два проходи перевірки кожної зміни від v5.0.0 знайшли та виправили наведене нижче (ccea3b17d01, 71826200611):

  • Шляхи прошивки та завантажувача – Load Custom Firmware із zip на плату, що вже перебуває в режимі завантажувача, прошивав замість власної випускову збірку; шлях відновлення Alif тепер відмовляється від власної збірки замість прошивання випускової; непрацездатну плату N6 Classic відновлено звичайними завантажувачем і прошивкою N6; застарілий корінь сторонніх ресурсів міг спрямувати непрацездатну вбудовану плату до файлів вендора; перехоплювач IMX міг продовжити прошивання після свого збою, ігнорував Cancel під час очікування flashloader і залишав послідовний порт відкритим після скасування під час підготовки; завантажувач N6 Classic не мав правила udev; у прийнятних кодах виходу інсталятора драйверів Windows була помилка друку.

  • Редактор ROMFS – Cancel під час читання ROMFS повідомляв «Failed to unpack ROMFS!» і десять секунд чекав на камеру, що ще перебувала в завантажувачі; Cancel під час запису завершувався мовчки з можливо частковим ROMFS; помилка dfu-util під час запису повідомлялася як успіх; Cancel у наступному діалозі відкидав усі правки; Auto Reconnect міг підключитися під відкритим редактором; Edit ROMFS при підключенні без потреби спочатку відключався та підключався знову; тимчасові каталоги конвертера витікали. Після скасованої операції завантажувач тепер отримує запит вийти з DFU, щоб камера повернулася самостійно.

  • Сторонні репозиторії – записи zip перевіряються перед розпакуванням (без виходу за межі шляху та символічних посилань), часткові встановлення та перевстановлення зберігають стару копію, доки нова не стане на місце, відхилена плата вендора більше не тягне за собою вбудовану плату, з якою перетиналася, відсутня маска PID не збігалася ні з чим під час виконання, а рядки базового індексу прикладів / моделей більше не захоплюють однойменні файли вендора.

  • Буфер кадрів і сенсори – сенсор подій GENX320 (ідентифікатор чипа вище 0x80000000) вимикав буфер кадрів; збережений вибір сенсора не переживав перезапуск; старе налаштування «вимкнути буфер кадрів» не мігрувалося; команда вибору джерела потоку тепер залежить від версії протоколу; метрика фокусу завмирала, поки сторінка гістограми була прихована; формат кадру залишався в заголовку після відключення.

  • Процес підключення – попередження macOS могли поглинути «Yes» у запиті на оновлення прошивки; Model Zoo завжди відкривався згорнутим без відновлення вибору; резервний варіант з єдиним диском для накопичувача камери був недосяжним, якщо камера була підключена понад десять секунд.

  • Подання «Канали» та засіб запису – некоректні розміри кадрів могли переповнити перевірки розміру; засоби запису Edge Impulse перевиділяли пам’ять на кожному фрагменті, а тепер обмежені 64 МБ на частину; схема з роздільниками в іменах могла індексувати за межі списку записів; дублікати записів залишали запущений засіб запису без власника; записи відкидаються, поки подання заморожене; список каналів тепер оновлюється при скасуванні реєстрації та м’якому перезавантаженні.

  • Відео – непарна введена користувачем ширина ламала кодування H.264 у збірках з libx264; скасовані або невдалі конвертації .bin залишали кадри, які підхоплював наступний запуск.

  • Протокол – очищення вхідного буфера перед визначенням протоколу обмежено (issue #336) (77cd13af76f); зв’язування камери з накопичувачем більше не програє гонку іншим томам (9877480c304).

  • Попередження -Wdeprecated-copy в обгортці інформації про послідовний порт (abcfaa8af5e).

Локалізація#

  • Усі 37 каталогів оновлено для подань панелі, подання «Канали» та його карти глибини, а також для кожного нового рядка в цьому випуску (1b71f243733, dc13c23ed81, a7debafdafa, 173a57422f7).

Підтримка платформ та інструментів#

  • Основа Qt Creator: 14.0.2.

  • OpenMV IDE оновлено до версії 5.1.0.

  • Вбудована прошивка: v5.0.1 (див. журнал змін прошивки).

  • Нові плати та сенсори: OpenMV N6 Classic; FLIR Lepton 3.1R та UW.

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

Для наявних проєктів – жодних. Перемикач JPG у заголовку буфера кадрів тепер є селектором JPG Mode / RAW Mode, а його старе налаштування «вимкнути буфер кадрів» мігрується в пункт Off нового селектора джерела. Коментарі вилучаються зі скриптів перед запуском; скрипт, що покладається на читання власного вихідного тексту під час виконання, не повинен цього робити.