v4.5.9¶
v4.5.9 wprowadza strumieniowanie surowego podglądu dla płytek bez sprzętowego enkodera JPEG, sprzętowe przycinanie sensora w celu zwolnienia większej ilości RAM, szybsze debayerowanie przyspieszane przez Helium oraz pakiet poprawek kamery/debugowania USB. Zmienia także API wyników AprilTag oraz domyślny zestaw rodzin AprilTag, więc przeczytaj poniższe zmiany łamiące zgodność.
Najważniejsze zmiany¶
Strumieniowanie surowego podglądu — płytki bez sprzętowego enkodera JPEG mogą teraz wysyłać do IDE/hosta pomniejszone surowe ramki zamiast nie być w stanie wyświetlić podglądu.
Sprzętowe przycinanie sensora — ustawienie mniejszego rozmiaru ramki zmniejsza teraz pamięć na bufor i zwalnia RAM dla
fb_alloc().Szybsze debayerowanie — konwersja Bayer→RGB/skala szarości jest teraz przyspieszana przez Helium-SIMD na płytkach Cortex-M55.
Zmiana łamiąca zgodność: obiekt wyniku AprilTag zmienił się na dostęp przez atrybuty, a domyślny zestaw rodzin AprilTag został zredukowany (zobacz zmiany AprilTag oraz zmianę rodzin AprilTag).
Nowe funkcje¶
Strumieniowanie surowego podglądu — płytki bez sprzętowego enkodera JPEG mogą pominąć JPEG i strumieniować pomniejszone surowe ramki (ograniczone do ~60 KB) do IDE/hosta, dzięki czemu podgląd na żywo działa na tych płytkach.
Inne zmiany i usprawnienia¶
Sprzętowe przycinanie jest teraz włączone na wszystkich płytkach STM32/NXP (Giga, Nicla Vision, Portenta H7, OpenMV 1–4 / 4 Plus / Pure Thermal / RT1060). Gdy ustawiony jest rozmiar ramki lub okno, pamięć na bufor jest redukowana do przyciętego rozmiaru, zwalniając więcej RAM dla
fb_alloc().Szybsze debayerowanie — konwersja Bayer→RGB565/skala szarości jest teraz przyspieszana przez ARM Helium/MVE SIMD na płytkach Cortex-M55 (np. RT1060), ze współdzieloną ścieżką enkodera JPEG SIMD.
Szybsze debugowanie w IDE — debuger przesyła teraz dane bezpośrednio ze stosu USB, gdy to możliwe, unikając dodatkowej kopii.
Zaktualizowano submoduł MicroPython — płytki mogą zmieniać rozmiar bufora CDC TinyUSB, plus poprawki GC i reguł budowania.
Poprawki błędów¶
Kamera i sensory:
Poprawiono wzorzec Bayer/CFA dla OV7725 (GBRG → BGGR), naprawiając wyjście kolorów po debayerowaniu na kamerach OV7725; OV7725 zgłasza teraz format pikseli Bayer, a sensory tylko-Bayer zgłaszają teraz głębię źródła 1 bajt na piksel.
Naprawiono obliczanie rozmiaru surowego/Bayer bufora ramki.
Uczenie maszynowe:
TensorFlow Lite Micro używa teraz wolnej pamięci sterty GC podczas ustalania rozmiaru tymczasowej areny tensorów, zapobiegając niepowodzeniom alokacji przy ładowaniu modelu na płytkach z ograniczoną pamięcią bufora ramki.
Host / IDE:
Naprawiono obsługę bufora CDC debugowania USB na płytkach TinyUSB dla bardziej niezawodnej przepustowości szeregowej/debugowania.
tools/pyopenmv: naprawiono kolejność bajtów RGB565, dodano argumentscale, a narzędzie bufora ramki zgłasza teraz rozmiar/format obrazu.
Sprzęt i obsługa płytek¶
OV7725 zgłasza teraz format pikseli Bayer (poprawna obsługa surowego/CFA).
Sprzętowe przycinanie włączone w całej gamie płytek STM32/NXP.
Zmiany API łamiące zgodność¶
Widoczne dla użytkownika zmiany API łamiące zgodność pomiędzy v4.5.8 a v4.5.9. Zakres: moduły C Pythona w modules/ oraz biblioteki Pythona w scripts/libraries/.
Każda zmiana jest oznaczona swoim wpływem:
mały — wąskie API; dotyczy tylko skryptów, które tego używały.
zachowanie — to samo API, inne wyniki; ponownie sprawdź dostrojone skrypty.
Zmiany są pogrupowane według wpływu w tej kolejności. Jeśli chcesz tylko przenieść swój kod, przejdź do listy kontrolnej migracji na końcu. Każdy skrót commita prowadzi do jego diffa na GitHubie.
Obiekty wyniku AprilTag i set_buffers (mały)¶
Wyniki AprilTag z find_apriltags() udostępniają teraz swoje dane jako atrybuty zamiast metod — używaj tag.cx, tag.cy, tag.rotation, tag.family, tag.corners zamiast tag.cx(), tag.family() itd. Dodano nowy name (ciąg z nazwą rodziny) oraz akcesory cxf / cyf o precyzji zmiennoprzecinkowej.
Osobno zmieniła się automatyczna konfiguracja bufora wideo: set_buffers zastępuje auto_adjust — przekaż -1, aby użyć do trzech buforów o rozmiarze ramki (lub maksymalnej liczby, która się zmieści), oraz 1, aby użyć całego bufora ramki. Ustalanie rozmiaru bufora uwzględnia teraz liczbę bitów na piksel, dzięki czemu można alokować więcej buforów dla formatów 1 bpp.
ble_advertising i RPC przez sieć usunięte (mały)¶
Pomocnicza biblioteka ble_advertising oraz przykład ble_temperature.py zostały usunięte — użyj zamiast nich aioble (dostarczono przykład temperatury aioble). Klasy master/slave sieci RPC zostały usunięte z rpc.py.
Rodziny AprilTag domyślnie wyłączone (zachowanie)¶
Rodziny AprilTag można teraz indywidualnie wybierać na etapie kompilacji, a nieużywane są domyślnie wyłączone. Na standardowych płytkach find_apriltags() wykrywa teraz tylko rodzinę TAG36H11, chyba że oprogramowanie układowe zostanie ponownie zbudowane z włączonymi innymi rodzinami. Skrypty polegające na innych rodzinach (TAG16H5, TAG25H9, …) w standardowej kompilacji po cichu przestaną je wykrywać.
Commit: effe12f2c
Lista kontrolna migracji¶
Dla czystego przeniesienia na v4.5.9 typowa praca to:
Zmień dostęp do wyników AprilTag z wywołań metod na atrybuty (
tag.cx()→tag.cx) i przełączauto_adjustnaset_buffers(zmiany AprilTag / buforów).Zastąp
ble_advertisingprzezaioblei zrezygnuj z używania master/slave sieci RPC (usunięcia).Jeśli używasz rodzin AprilTag innych niż
TAG36H11w standardowej kompilacji, zwróć uwagę, że nie są one już domyślnie wykrywane (zmiana rodzin AprilTag).