v4.8.1¶
Wersja v4.8.1 jest oparta na Qt Creator 14.0.2 i koncentruje się na nowym, wysoce niezawodnym protokole kamery OpenMV V2, wbudowanym Code Profiler oraz na procesie zapisu, który utrzymuje kamerę zamontowaną zamiast ją odłączać. Dołączone oprogramowanie układowe oraz pełny zestaw przykładów zostały zaktualizowane do wersji 4.8.1. Nie ma żadnych zmian łamiących API skryptów, ale zachowanie polegające na tym, że zapis nie odłącza już urządzenia, oraz usunięcie kilku flag szeregowych uruchamianych przy starcie to widoczne dla użytkownika zmiany w sposobie pracy.
Najważniejsze zmiany¶
OpenMV Protocol V2 to nowy, wysoce niezawodny stos kamery (
OMVCamera/OMVTransport/OMVDebug) z CRC32, sekwencjonowaniem, ACK/NAK, retransmisją, zdarzeniami i fragmentacją. Jest on automatycznie negocjowany przy połączeniu i obsługuje reset, rozruch, strumieniowanie, wykonywanie skryptów oraz statystyki.Code Profiler to nowe okno (
Window>Show Code Profiler), które odczytuje rekordy profilowania dla poszczególnych funkcji z kamery i pokazuje liczbę wywołań, min/maks/sumę/średnią mikrosekund (μs), średnią liczbę cykli, procent oraz liczniki zdarzeń w sortowalnej tabeli.Save in place nie odłącza już dysku kamery; IDE zapisuje teraz
main.pyi opróżnia wolumin na dysk, dzięki czemu urządzenie pozostaje zamontowane.Wykrywanie wielu sensorów raportuje każdą kamerę na płytce, wyświetlając ją na pasku stanu jako
Sensors: X, Y, z głównym sensorem na pierwszej pozycji.Dynamic Frame Reading ponownie oblicza najlepiej dopasowaną surową rozdzielczość strumieniowania dla każdego formatu pikseli i automatycznie rekonfiguruje strumień.
Dołączone oprogramowanie układowe i przykłady zostały zaktualizowane do wersji 4.8.1 na wszystkich płytkach, z dodaniem nowych przykładów dla kamery zdarzeniowej GenX320, TensorFlow ML, Alif OLED oraz nakładek LCD/Touch-LCD.
Nowe funkcje¶
Dodano protokół komunikacyjny OpenMV V2: pełną warstwę transportu i transakcji z CRC32, sekwencjonowaniem, ACK/NAK, retransmisją, zdarzeniami i fragmentacją, a także klasę
OMVCameraautomatycznie negocjowaną przy połączeniu i zintegrowaną ze sterownikiem szeregowym (2fde9eb3f, fff1bf2ba, 8c41fcfad, 7fc7ed4bc, 84c3956af, 669039adf, a49259852, 07af1922a, 85f0c7c87, 5070cc213, e314459cc, e0367ca95, 0da2f79d0, 2b6fc9866, 534ecffbe).Dodano okno Code Profiler (
Window>Show Code Profiler), które odczytuje rekordy profilowania dla poszczególnych funkcji i wyświetla liczbę wywołań, min/maks/sumę/średnią mikrosekund (μs), średnią liczbę cykli, procent oraz liczniki zdarzeń, rozwiązując adresy do symboli za pomocą dołączonego parsera ELF ELFIO (019d3cd2c, 57cd9e1cc).Dodano okno dialogowe Debug Protocol Settings pokazujące na żywo System Info, Host Stats oraz Device Stats odświeżane co sekundę, udostępniające częstotliwości odpytywania dla poszczególnych kanałów oraz przełączniki sterujące odpytywaniem łączonym lub rozdzielonym (5220a6125, 0da2f79d0).
Dodano wykrywanie wielu sensorów: płytka z więcej niż jedną kamerą raportuje je wszystkie na pasku stanu jako
Sensors: X, Y, z głównym sensorem na początku (cebc79ce7).Dodano Dynamic Frame Reading (domyślnie włączone), które ponownie oblicza najlepiej dopasowaną surową rozdzielczość strumieniowania dla każdego formatu pikseli (
BINARY,GRAY,RGB565,ARGB8,JPEG,PNG) i rekonfiguruje strumień (75c073bdb, 0da2f79d0).Dodano dekodowanie bufora ramki dla surowych formatów pikseli
BINARY(1-bpp mono) orazARGB8(32-bitowa alfa), dzięki czemu te typy obrazów są teraz renderowane w podglądzie (dabb82062).W systemie Windows funkcja Connect skanuje teraz urządzenia USB oznaczone przez system operacyjny jako problematyczne i ostrzega listą wadliwych urządzeń, które mogą blokować połączenie (1a5beb081, 1b59cd78e).
Dodano wskaźnik rejestracji na pasku stanu: zielony przycisk
Registeredlub koralowyUnregistereddla podłączonej kamery, klikalny w celu zarejestrowania płytki (a8c98a4b9).Podgląd bufora ramki może teraz wyświetlać wyśrodkowany komunikat tekstowy wysłany z działającego skryptu za pomocą nowego kodu ucieczki
FB_MESSAGEzamiast obrazu (530048201).Dodano nowe pozycje do model-zoo: modele estymacji głębi ST FastDepth (224/256/320), model pozy punktów charakterystycznych głowy ST, modele dłoni do wykrywania dłoni i punktów charakterystycznych ręki oraz model wykrywania twarzy z przodu BlazeFace (551668410, 4d64556d4, fadd6c4ed, b8277bb88, a8c98a4b9).
Dodano skrypt autotestu dostępny wyłącznie w kompilacji fabrycznej (kamera, IMU, ToF, WiFi, LAN), który jest dołączany i automatycznie otwierany przy uruchomieniu w fabrycznym wariancie IDE (0db7fbbb0); część testu dotycząca LAN dla RT1060 jest obecnie wyłączona (48370d022).
Inne zmiany i usprawnienia¶
Save in place: zapis skryptu nie odłącza już dysku kamery; IDE zapisuje
main.pyi opróżnia wolumin na dysk (FlushFileBuffersw systemie Windows,syncfsw systemie Linux,sync_volume_np/F_FULLFSYNCw systemie macOS), dzięki czemu urządzenie pozostaje zamontowane (1614c572f, 6928b51ea, 35ed53967).Akcje na pasku narzędzi klikane, gdy kamera jest zajęta (wyłączenie bufora ramki, kompresja JPEG, zapis skryptu, konfiguracja ustawień), są teraz kolejkowane i uruchamiane automatycznie, gdy urządzenie jest wolne, zamiast wyświetlać okno dialogowe błędu Busy (f4315f0a4).
Podgląd bufora ramki domyślnie dopasowuje teraz obraz do widoku, dzięki czemu przy uruchomieniu jest on automatycznie skalowany do okna, a panel wyjścia terminala szeregowego jest teraz domyślnie wyświetlany przy starcie (f3ce4dc75).
Skompilowane pliki modeli z rozszerzeniem
.litesą teraz rozpoznawane wszędzie: przy filtrowaniu i wyświetlaniu w przeglądarce model-zoo, przy wyrównywaniu ROMFS oprogramowania układowego, a kompilatory Vela/STEdge AI generują teraz wyjście.lite(f3ce4dc75).Okno dialogowe kompilacji modelu STEdge AI (N6) analizuje teraz i raportuje procentowe zużycie pamięci RAM NPU oraz hyperRAM, a także kopiuje przeniesione wyjście sieci do pliku zgodnego z rozszerzeniem modelu (f3ce4dc75).
Przeglądarka model-zoo pokazuje teraz kolumnę Size z rozmiarem pliku i rozciąga kolumnę nazwy, aby ją dopasować, zamiast ukrywać rozmiar (f3ce4dc75).
Szablon nowego skryptu został zaktualizowany do nowego API modułu
csii domyślnie używa rozmiaru ramki VGA, a dołączony przykład Hello World przełączono z rozmiaru ramki QVGA na VGA (f3ce4dc75).Okno dialogowe Convert Video zostało przepisane tak, aby korzystało ze wspólnego okna ładowania z kolorowym wyjściem, komunikatami o powodzeniu/niepowodzeniu, przyciskiem OK do zamknięcia oraz czytelnym błędem, gdy FFMPEG jest niedostępny na danej platformie (f56efc7be).
Podgląd bufora ramki pokazuje teraz migające ostrzeżenie, gdy obraz
JPEG/PNGjest zbyt duży, aby go zbuforować i wysłać, za pomocą nowego kodu ucieczkiFB_BUFFER_ERROR(fda826126).Wejście do bootloadera DFU wymusza teraz pozostanie bootloadera rezydentnego w oprogramowaniu układowym z protokołem V2, z wykrywaniem wersji, które wraca do zwykłego resetu na starszych bootloaderach (<1.0.2), które mogłyby się zawiesić przy wymuszeniu (975857221).
Zmieniono nazwy i zreorganizowano foldery modeli wykrywania obiektów ST (
st_yolo_lc_v1nayolo_lc,tiny_yolo_v2nayolo_v2, modele osóbyolov8nna pliki o prostych nazwach zawierających rozmiar) oraz usunięto duże warianty int8tiny_yolo_v2(34240cc3c).Czasy transmisji szeregowej są teraz dostrajane za pomocą kluczy nadpisania
protocolw plikusettings.jsonoprogramowania układowego (overrideReadTimeout,overrideReadStallTimeout,overridePerCommandWaitoraz kluczy V2overrideCRC/overrideSEQ/overrideACK) zamiast za pomocą flag wiersza poleceń przy uruchomieniu (019d8bf1d).Ustawiono limit długości wiersza serwera języka Python na 120 kolumn dla flake8 i pycodestyle, dzięki czemu długie wiersze nie są już oznaczane przy domyślnej wartości 79 (dabb82062).
Zmniejszono dołączony zestaw modeli uczenia maszynowego, przenosząc kolekcję modeli Qualcomm oraz
google/mobilenet_v1domodels_unused, aby zmniejszyć instalator (c44ddba20).
Poprawki błędów¶
Okna dialogowe postępu pobierania oprogramowania układowego i aktualizacji zasobów zabezpieczono przed awarią za pomocą strażników
QPointer, dzięki czemu nie używają już usuniętego okna dialogowego, jeśli zostanie ono zamknięte w trakcie pobierania (f3ce4dc75).Skanowanie dysków ponawia teraz próby aż do znalezienia dysku USB kamery i czyści nieaktualne wpisy dysków przy rozłączeniu, usuwając wcześniejszą prowizorkę z jednorazowym licznikiem czasu (a31d41b4e).
Kilka poprawek połączenia i komunikacji szeregowej: ukryte sensory (np.
SoftCSI) nie zaśmiecają już wyświetlanego typu sensora, licznik czasu podtrzymujący połączenie szeregowe w systemie Windows zapobiega zawieszeniom USB, Start nie uruchamia ponownie już działającego skryptu, a kanał kamery jest czysto rozłączany przy zamknięciu portu (a8e467be6).Widok profilera przywrócił wybór licznika zdarzeń PMU dla poszczególnych kolumn (zaznaczalne menu zdarzeń) oraz zapisywanie stanu licznika/nagłówka, które zostało tymczasowo wyłączone (40c679e90).
Obsługa platform i narzędzi¶
Baza Qt Creator: 14.0.2.
Dołączone oprogramowanie układowe: zaktualizowane z 4.7.0 do 4.8.1, z ponowną kompilacją oprogramowania układowego dla OPENMV2/3/4/4P/PT, OPENMV_N6, OPENMV_AE3, OPENMV_RT1060 oraz płytek Arduino GIGA/Nicla Vision/Portenta H7 (2657818ca).
Naprawiono uzgadnianie wersji protokołu w systemie macOS dla płytek RT1062 i AE3 poprzez podzielenie wielokomendowego transferu USB na części o rozmiarze
USBDBG_LEN, które te płytki potrafią obsłużyć (6b9d5f842).Przebudowano dołączony pakiet sterowników dla systemu Windows: dodano podpisane pliki sterowników
.cat/.infdla poszczególnych płytek (AE3, H7, H7Plus, M4, M7, N6, Pico/PT, RT1062) i przeniesiono sterowniki szeregowe CDC do nowego folderuopenmvcdcz automatycznym instalatorem opartym na dpinst (439557829, ba3b01bfb).Dodano obsługę starszych rewizji sensora kamery MT9V032 poprzez zarejestrowanie identyfikatorów sensorów
0x1311i0x1312(obok istniejącego0x1313) jakoMT9V0X2(eaaa624e3).
Zmiany łamiące zgodność¶
To wydanie nie wprowadza żadnych zmian łamiących API skryptów, ale zawiera kilka widocznych dla użytkownika zmian w sposobie pracy:
Zapis skryptu nie odłącza już ani nie demontuje dysku USB kamery. IDE opróżnia teraz bufory woluminu w miejscu, dzięki czemu urządzenie pozostaje zamontowane po zapisie.
Flagi szeregowe uruchamiane przy starcie
-override_read_timeout(domyślnie 5000 ms),-override_read_stall_timeout(domyślnie 1000 ms) oraz-override_per_command_wait(domyślnie 1 ms, 2 ms w systemie macOS) zostały usunięte; czasy transmisji szeregowej są teraz konfigurowane za pomocą kluczy nadpisaniaprotocolw plikusettings.jsonoprogramowania układowego (019d8bf1d).Dołączone bootloadery są teraz dostarczane wyłącznie jako
.bin; pliki oprogramowania układowego i bootloadera.dfudla poszczególnych płytek zostały usunięte.