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 argument scale, 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.

Commity: c0d4759f8, 7b36e4ef6

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.

Commity: 6513276c1, 44a7e579d

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:

  1. Zmień dostęp do wyników AprilTag z wywołań metod na atrybuty (tag.cx()tag.cx) i przełącz auto_adjust na set_buffers (zmiany AprilTag / buforów).

  2. Zastąp ble_advertising przez aioble i zrezygnuj z używania master/slave sieci RPC (usunięcia).

  3. Jeśli używasz rodzin AprilTag innych niż TAG36H11 w standardowej kompilacji, zwróć uwagę, że nie są one już domyślnie wykrywane (zmiana rodzin AprilTag).