v5.1.0#
v5.1.0 to wydanie funkcjonalne. Panel pod buforem ramki rozrasta się z histogramu w zestaw widoków na żywo – Informacje o płytce, Pamięć, Statystyki i nowy widok Kanały, który zamienia wartości publikowane przez skrypt w widżety, wykresy, widma i mapy głębi oraz nagrywa je do plików – bufor ramki otrzymuje selektor źródła dla kamer wieloczujnikowych, IDE uczy się wczytywać repozytoria stron trzecich z płytkami, oprogramowaniem układowym, przykładami, modelami i zaślepkami, a nagrania wideo przechodzą na H.264. Obsługiwane są nowe płytki i czujniki, narzędzia oprogramowania układowego zostały wzmocnione pełnym audytem każdej zmiany od v5.0.0, a garść zachowań przeniesiono z OpenMV Studio. Jest zbudowane na Qt Creator 14.0.2 i zawiera oprogramowanie układowe v5.0.1.
Najważniejsze zmiany#
Widoki panelu – pasek tytułu panelu histogramu zyskuje selektor, który przełącza panel między widokami Histogram, Informacje o płytce (sprzęt, wersje i możliwości podłączonej kamery), Pamięć (wykresy na żywo sterty MicroPython i każdej puli UMA, ze śledzeniem szczytów), Statystyki (liczniki pakietów, błędów i zdarzeń poszczególnych kanałów protokołu debugowania) oraz Kanały.
Widok Kanały – skrypt może publikować nazwane kanały danych i elementów sterujących przez protokół debugowania, a IDE renderuje je na żywo: etykiety, przełączniki, suwaki, pola liczbowe, przyciski opcji, pola tekstowe, selektory, przyciski i bloki tekstu, które zapisują wartości z powrotem do kamery; wykresy przebiegów z przesuwaniem, powiększaniem, znacznikami, wyzwalaniem, historią i analizatorem widma; oraz mapy głębi z własnymi paletami kamery, trzema filtrami skalowania i mapowaniem tonów. Każdy wykres lub mapę można nagrać do plików CSV, WAV, NumPy albo Edge Impulse JSON i CBOR – w tym opcją Nagraj wszystko dla całego kanału – na potrzeby zbierania danych treningowych. Po zatrzymaniu skryptu ostatnie wartości pozostają na ekranie.
Selektor źródła bufora ramki – kamery z więcej niż jednym czujnikiem obrazu pokazują na pasku tytułu bufora ramki selektor wyboru, który czujnik strumieniuje do IDE (lub wyłączenia strumieniowania), przełącznik JPG stał się selektorem trybu strumieniowania JPG / RAW, a tytuł panelu podaje format, w jakim dotarła każda ramka.
Repozytoria stron trzecich – dostawca może opublikować repozytorium płytek, oprogramowania układowego (kanały wydań i rozwojowy), przykładów, modeli uczenia maszynowego i zaślepek
.pyi; IDE instaluje je z adresu URL lub z folderu umieszczonego przez instalator, scala z własną zawartością, utrzymuje aktualność i pozwala uporządkować dostawców według priorytetu. Zarządzane z Preferences → OpenMV → Third Party Repositories.Nowy sprzęt – płytka OpenMV N6 Classic (wraz ze sterownikiem bootloadera, regułą udev i wpisem odzyskiwania ROM-DFU) oraz czujniki FLIR Lepton 3.1R i UW.
Nagrania H.264 – rejestrator bufora ramki i konwerter wideo kodują teraz H.264 zamiast MPEG-4 Part 2, ze stałym odstępem klatek kluczowych, dzięki czemu nagrania przewijają się czysto, a liczba klatek na sekundę jest zaokrąglana do liczby całkowitej.
Poprawki po audycie – każdy commit od v5.0.0 został dwukrotnie przejrzany pod kątem regresji, ze szczególnym uwzględnieniem ścieżek oprogramowania układowego, bootloadera i ROMFS; znalezione defekty są naprawione w tym wydaniu (zobacz poprawki błędów).
Nowe funkcje#
Widoki Informacje o płytce, Pamięć i Statystyki w panelu histogramu, z wypełniającą cały panel stylizacją w ciemnym i jasnym motywie oraz zaznaczalnym tekstem (cdea506655b, 7629a588db9, e21bd94a395, b55dcc412f6, fc744920011, e7dc3bf0092, 448e21db0bd).
Widok Kanały – pełny zestaw elementów sterujących (label, toggle, slider, spin box, radio, line edit, select, push button, text), wykresy przebiegów z analizatorem widma (okna Hanna, Hamminga, Blackmana i prostokątne, uśrednianie, zatrzymanie szczytu, logarytmiczna częstotliwość), wyzwalanie zboczem narastającym i opadającym, znaczniki, historia i eksport wykresu; mapy głębi z paletami Depth, Rainbow, Ironbow i Event, skalowaniem nearest / bilinear / bicubic, mapowaniem tonów Zakres skryptu / Zakres auto / Wyrównaj, przyciskiem pauzy, odczytem pod kursorem, nagłówkiem z zadeklarowanym zakresem oraz min / max / średnią ramki i opcją Zapisać obraz; nagrywanie do CSV, WAV, NumPy i Edge Impulse JSON / CBOR z opcjonalną etykietą Edge Impulse, dzieleniem na części przy długich przechwyceniach i Nagraj wszystko; interwał Channel Polling w preferencjach protokołu (5b4f31a6b3a, d1252a24f14, bfd7fd72f94, d1c2ab02a5f, 4808b8ffe26, dfc323b4ec7, 61c077df9a5, 8c2cd6cf1f1, 1534225fcee).
Selektor źródła bufora ramki i odczyt formatu – wybierz czujnik strumieniujący na kamerach wieloczujnikowych albo Wył.; odebrany format ramki jest pokazywany w tytule panelu; przełącznik JPG jest teraz selektorem Tryb JPG / Tryb RAW (e76284bde9e, c2baff8d60c, afece31cb6a, 76448d7b9dd).
Repozytoria stron trzecich – oparte na plikach repozytoria oprogramowania układowego scalane z wbudowaną listą płytek, aktualizacje sieciowe ze stroną w Preferences, kanał rozwojowego oprogramowania układowego dla każdego dostawcy, priorytet dostawców kontrolowany przez użytkownika, przykłady dostawców scalane z File → Examples, modele dostawców scalane z Model Zoo, własne zaślepki
.pyizasilające uzupełnianie kodu, ostrzeżenia o przesłonięciach, gdy dostawca przesłania wbudowaną zawartość, oraz sprawdzanie licencji płytek dostawców (21a63a74949, b5512efe949, b15afdac479, 1fe693f0b61, ae11ffeffc4, cf47a37ba65, 100bdeb530b, 252924901f7, c75a81f2a4a, 3e7f077a738, 5c5aa3e657c, e3f36adbdcb, b04da8ee888).Usuwanie komentarzy przed uruchomieniem – komentarze są usuwane ze skryptu, zanim zostanie wysłany do kamery, co oszczędza RAM kamery przy skryptach z dużą liczbą komentarzy; wiersze są zachowywane, więc numery wierszy w śladzie stosu nadal odpowiadają edytorowi (677546ee033).
Znacznik błędu w edytorze – gdy skrypt kończy się wyjątkiem, edytor oznacza winny wiersz na czerwono z tekstem błędu obok; znacznik znika, gdy edytujesz plik, uruchamiasz ponownie lub rozłączasz się (677546ee033).
Przeciąganie i upuszczanie do edytora ROMFS – pliki upuszczone z pulpitu przechodzą tę samą kompilację skryptów i konwersję modeli co Add File, do folderu, na który zostały upuszczone (677546ee033).
Ulepszenia edytora, terminala i interfejsu#
Histogramy są liczone z pełnego 8-bitowego RGB zamiast z tablic RGB565 kamery, ze wspólną paletą wykresów, półprzezroczystymi wypełnieniami i przyciemnionymi liniami siatki (238e099373e, f126e8f34c0, cebbf0c9e2c).
Ukryte widoki panelu nie wykonują pracy – histogram pomija obliczenia i ponowne rysowanie, gdy pokazywany jest inny widok lub panel jest zwinięty, i nadrabia zaległości po ponownym pokazaniu; ponowne rysowanie o zerowym rozmiarze jest wyciszone (c8730df8399).
Przykładowe skrypty otwierają się z pustym wierszem po importach, a dołączone przykłady zostały sformatowane w ten sam sposób (1f88f617ec5, 87c8f7d41c7).
Uzupełnianie kodu pokazuje nazwy prywatne – wbudowany serwer języka nie filtruje już składowych z przedrostkiem
_, których używają moduły kamery (23ab5b38bb3).macOS – pola grupowe elementów sterujących protokołu w preferencjach nie są już ściśnięte, widoki elementów są zabezpieczone przed awariami ułatwień dostępu Cocoa, użytkownicy Apple Silicon są ostrzegani o ustawieniu zabezpieczeń „Allow accessories to connect”, a użytkownicy RT1062 są ostrzegani, gdy nie przyznano uprawnienia Input Monitoring (wymagają go aktualizacje oprogramowania układowego); oba ostrzeżenia są pokazywane po połączeniu (7d7b69367bf, 69fe7ffc913, 742cb4d8c0b, 8890eb77834, 89646292e8d).
Skróty w trybie przeglądarki – zbłąkane skróty, które psuły tryb przeglądarki (i zwykłe IDE), zostały wyłączone, a tryb przeglądarki nie zapisuje już swoich wyczyszczonych skrótów w ustawieniach pełnego IDE (251b422f642, 0d153671c1d).
Nieznane czujniki są nazywane identyfikatorem układu na pasku stanu, aby można je było zidentyfikować i dodać do tabeli czujników (df561775b54).
Oprogramowanie układowe, płytki i narzędzia#
Obsługa OpenMV N6 Classic: wpis płytki, sterownik DFU dla Windows i kody instalatora, reguła udev dla Linux (4ff4a1f239d, bdd6c96ef47, 25fcdc13c6a, 7730b699f60).
Obsługa czujników FLIR Lepton 3.1R i UW (12c03024f3c).
Przekazanie bootloadera IMX – wstępnie uzbrojony catcher przejmuje bootloader RT1062 w chwili, gdy ten się enumeruje, zastępując pętlę uruchamiającą proces na każdą próbę, która na obciążonym hoście mogła przegapić jednosekundowe okno (3d8b63c6859).
Pliki zip oprogramowania układowego – Load Custom Firmware akceptuje pakiety zawierające tylko ROMFS oraz pakiety bez ROMFS, a niestandardowe lub rozwojowe oprogramowanie układowe jest przygotowywane dla płytek IMX znajdujących się już w trybie bootloadera (b6f16f54c1a, 94d5fd5c30e).
Prywatne katalogi pośrednie dla rozwojowego / niestandardowego oprogramowania układowego, obrazów edytora ROMFS i plików tymczasowych narzędzi wideo, dzięki czemu nieaktualne pliki z innych procesów nigdy nie zostaną przez pomyłkę wgrane ani skonwertowane (939154501af, a288fe712e7, 5c8c717adec).
Wideo H.264 – nagrania i konwersje kodują H.264 ze stałym odstępem klatek kluczowych; nagrana liczba klatek na sekundę bliska liczbie całkowitej jest do niej zaokrąglana, dzięki czemu odtwarzacze raportują 30 FPS zamiast 29.97 (6ad1968341d, d62c110e155, bab488a54fe).
Suma kontrolna pliku zip zasobów – aktualizacja zasobów IDE jest weryfikowana względem sumy SHA-256 publikowanej wraz z wersją (677546ee033).
Uczciwy User-Agent w żądaniach do serwerów OpenMV (c4279c0213e).
Poprawki błędów#
Dwa przejścia przeglądu każdej zmiany od v5.0.0 znalazły i naprawiły następujące błędy (ccea3b17d01, 71826200611):
Ścieżki oprogramowania układowego i bootloadera – Load Custom Firmware z plikiem zip na płytkę będącą już w trybie bootloadera wgrywał zamiast tego kompilację wydania; ścieżka odzyskiwania Alif odmawia teraz wgrania własnej kompilacji, zamiast wgrywać wydanie; zablokowany N6 Classic był naprawiany zwykłym bootloaderem i oprogramowaniem układowym N6; nieaktualny katalog główny zasobów stron trzecich mógł skierować zablokowaną wbudowaną płytkę do plików dostawcy; catcher IMX mógł przejść do wgrywania po własnej awarii, ignorował Cancel podczas oczekiwania na flashloader i pozostawiał otwarty port szeregowy po anulowaniu w trakcie uzbrajania; bootloader N6 Classic nie miał reguły udev; akceptowane kody wyjścia instalatora sterowników Windows zawierały literówkę.
Edytor ROMFS – Cancel podczas odczytu ROMFS zgłaszał „Failed to unpack ROMFS!” i czekał dziesięć sekund na kamerę wciąż będącą w bootloaderze; Cancel podczas zapisu kończył się po cichu z możliwie częściowym ROMFS; błąd dfu-util podczas zapisu był zgłaszany jako sukces; Cancel w kolejnym oknie dialogowym odrzucał wszystkie zmiany; Auto Reconnect mógł nawiązać połączenie pod otwartym edytorem; Edit ROMFS przy połączonej kamerze niepotrzebnie najpierw rozłączał i łączył ponownie; katalogi tymczasowe konwertera wyciekały. Po anulowanej operacji bootloader jest teraz proszony o opuszczenie DFU, dzięki czemu kamera wraca sama.
Repozytoria stron trzecich – wpisy w plikach zip są sprawdzane przed rozpakowaniem (brak przechodzenia ścieżek i dowiązań symbolicznych), instalacje i reinstalacje części zachowują starą kopię, dopóki nowa nie znajdzie się na miejscu, odrzucona płytka dostawcy nie pociąga już za sobą wbudowanej płytki, z którą się pokrywała, brakująca maska PID nie dopasowywała niczego w czasie działania, a bazowe wiersze indeksu przykładów / modeli nie przechwytują już plików dostawców o tych samych nazwach.
Bufor ramki i czujniki – czujnik zdarzeniowy GENX320 (identyfikator układu powyżej
0x80000000) wyłączał bufor ramki; zapisany wybór czujnika nie przetrwał ponownego uruchomienia; dawne ustawienie „disable frame buffer” nie było migrowane; polecenie źródła strumienia jest uzależnione od wersji protokołu; metryka ostrości zamierała, gdy strona histogramu była ukryta; format ramki pozostawał w tytule po rozłączeniu.Przebieg łączenia – ostrzeżenia macOS mogły pochłonąć „Yes” w monicie o aktualizację oprogramowania układowego; Model Zoo zawsze otwierał się zwinięty, bez przywrócenia zaznaczenia; awaryjne wykrywanie pojedynczego dysku kamery było nieosiągalne, gdy kamera była podłączona dłużej niż dziesięć sekund.
Widok Kanały i rejestrator – wrogie rozmiary ramek mogły przepełnić kontrole rozmiaru; rejestratory Edge Impulse realokowały pamięć przy każdym fragmencie, a teraz są ograniczone do 64 MB na część; schemat z separatorami w nazwach mógł indeksować poza listę rekordów; zduplikowane rekordy osierocały działający rejestrator; zapisy są odrzucane, gdy widok jest zamrożony; lista kanałów odświeża się teraz przy zdarzeniach wyrejestrowania i miękkiego restartu.
Wideo – nieparzysta szerokość wpisana przez użytkownika psuła kodowanie H.264 w kompilacjach z libx264; anulowane lub nieudane konwersje
.binpozostawiały ramki, które kolejne uruchomienie dołączało do wyniku.Protokół – opróżnianie bufora odczytu wykonywane przed wykrywaniem protokołu jest ograniczone (issue #336) (77cd13af76f); powiązanie kamery z dyskiem nie przegrywa już wyścigu z innymi wolumenami (9877480c304).
Ostrzeżenie
-Wdeprecated-copyw opakowaniu informacji o porcie szeregowym (abcfaa8af5e).
Lokalizacja#
Wszystkie 37 katalogów zostało zaktualizowanych o widoki panelu, widok Kanały i jego mapę głębi oraz każdy nowy ciąg w tym wydaniu (1b71f243733, dc13c23ed81, a7debafdafa, 173a57422f7).
Obsługa platform i narzędzi#
Podstawa Qt Creator: 14.0.2.
Wersja OpenMV IDE podniesiona do 5.1.0.
Dołączone oprogramowanie układowe: v5.0.1 (zobacz dziennik zmian oprogramowania układowego).
Nowe płytki i czujniki: OpenMV N6 Classic; FLIR Lepton 3.1R i UW.
Zmiany łamiące kompatybilność#
Brak dla istniejących projektów. Przełącznik JPG na pasku tytułu bufora ramki jest teraz selektorem Tryb JPG / Tryb RAW, a jego dawne ustawienie „disable frame buffer” jest migrowane do pozycji Wył. nowego selektora źródła. Komentarze są usuwane ze skryptów przed uruchomieniem; skrypt, który polega na odczytywaniu własnego tekstu źródłowego w czasie działania, nie powinien tego robić.