v4.5.9

v4.5.9 přináší streamování raw náhledu pro desky bez hardwarového JPEG enkodéru, hardwarové ořezávání senzoru pro uvolnění více RAM, rychlejší debayering akcelerovaný technologií Helium a sadu oprav kamery/USB-debug. Mění také API výsledku AprilTag a výchozí sadu rodin AprilTag, proto si přečtěte zásadní změny níže.

Hlavní novinky

  • Streamování raw náhledu — desky bez hardwarového JPEG enkodéru nyní mohou do IDE/hostitele posílat zmenšené raw snímky namísto selhání náhledu.

  • Hardwarové ořezávání senzoru — nastavení menší velikosti snímku nyní snižuje paměť na buffer a uvolňuje RAM pro fb_alloc().

  • Rychlejší debayering — převod Bayer→RGB/stupně šedi je nyní akcelerován technologií Helium-SIMD na deskách Cortex-M55.

  • Zásadní změna: objekt výsledku AprilTag se změnil na přístup přes atributy a výchozí sada rodin AprilTag byla zredukována (viz změny AprilTag a změna rodiny AprilTag).

Nové funkce

  • Streamování raw náhledu — desky bez hardwarového JPEG enkodéru mohou obejít JPEG a streamovat zmenšené raw snímky (omezené na ~60 KB) do IDE/hostitele, takže živý náhled na těchto deskách funguje.

Další změny a vylepšení

  • Hardwarové ořezávání je nyní zapnuto na všech deskách STM32/NXP (Giga, Nicla Vision, Portenta H7, OpenMV 1–4 / 4 Plus / Pure Thermal / RT1060). Při nastavení velikosti snímku nebo okna se paměť na buffer redukuje na oříznutou velikost, čímž se uvolní více RAM pro fb_alloc().

  • Rychlejší debayering — převod Bayer→RGB565/stupně šedi je nyní akcelerován pomocí ARM Helium/MVE SIMD na deskách Cortex-M55 (např. RT1060), se sdílenou SIMD cestou JPEG enkodéru.

  • Rychlejší ladění v IDE — debugger nyní pokud možno přenáší data přímo z USB zásobníku, čímž se vyhne kopírování navíc.

  • Submodul MicroPython aktualizován — desky mohou změnit velikost CDC bufferu TinyUSB, plus opravy GC a pravidel sestavení.

Opravy chyb

Kamera a senzory:

  • Opraven Bayer/CFA vzor OV7725 (GBRG → BGGR), čímž se opravil debayerovaný barevný výstup na kamerách OV7725; OV7725 nyní hlásí Bayer formát pixelů a senzory pouze pro Bayer nyní hlásí zdrojovou hloubku 1 bajt na pixel.

  • Opraven výpočet velikosti raw/Bayer framebufferu.

Strojové učení:

  • TensorFlow Lite Micro nyní při dimenzování dočasné tenzorové arény používá volnou paměť GC haldy, čímž se předchází selhání alokace při načítání modelu na deskách s omezenou pamětí snímkového bufferu.

Hostitel / IDE:

  • Opraveno zpracování CDC bufferu pro USB-debug na deskách TinyUSB pro spolehlivější propustnost sériové/ladicí komunikace.

  • tools/pyopenmv: opraveno pořadí bajtů RGB565, přidán argument scale a nástroj snímkového bufferu nyní hlásí velikost/formát obrazu.

Hardware a podpora desek

  • OV7725 nyní hlásí Bayer formát pixelů (správné zpracování raw/CFA).

  • Hardwarové ořezávání zapnuto v celé řadě desek STM32/NXP.

Zásadní změny API

Změny API viditelné pro uživatele mezi v4.5.8 a v4.5.9. Rozsah: pythonovské C moduly v modules/ a pythonovské knihovny v scripts/libraries/.

Každá změna je označena svým dopadem:

  • minor — úzké API; ovlivňuje pouze skripty, které ho používaly.

  • behavior — stejné API, jiné výsledky; znovu zkontrolujte vyladěné skripty.

Změny jsou seskupeny podle dopadu v tomto pořadí. Pokud chcete pouze přenést svůj kód, přejděte na kontrolní seznam migrace na konci. Každý hash commitu odkazuje na svůj diff na GitHubu.

Objekty výsledku AprilTag a set_buffers (minor)

Výsledky AprilTag z find_apriltags() nyní zpřístupňují svá data jako atributy namísto metod — použijte tag.cx, tag.cy, tag.rotation, tag.family, tag.corners namísto tag.cx(), tag.family() atd. Byly přidány nové přístupové prvky name (řetězec s názvem rodiny) a cxf / cyf s přesností float.

Samostatně se změnila automatická konfigurace video bufferu: set_buffers nahrazuje auto_adjust — předejte -1 pro použití až tří bufferů velikosti snímku (nebo co největšího počtu, který se vejde) a 1 pro použití celého snímkového bufferu. Dimenzování bufferu nyní zohledňuje počet bitů na pixel, takže pro formáty s 1 bpp lze alokovat více bufferů.

Commity: c0d4759f8, 7b36e4ef6

ble_advertising a RPC po síti odstraněny (minor)

Pomocná knihovna ble_advertising a příklad ble_temperature.py byly odstraněny — místo nich použijte aioble (je k dispozici příklad teploty s aioble). Třídy RPC network master/slave byly odstraněny z rpc.py.

Commity: 6513276c1, 44a7e579d

Rodiny AprilTag ve výchozím nastavení vypnuté (behavior)

Rodiny AprilTag jsou nyní jednotlivě volitelné při kompilaci a nepoužívané jsou ve výchozím nastavení vypnuté. Na standardních deskách find_apriltags() nyní detekuje pouze rodinu TAG36H11, pokud není firmware znovu sestaven s povolenými dalšími rodinami. Skripty spoléhající na jiné rodiny (TAG16H5, TAG25H9, …) na standardním sestavení je tiše přestanou detekovat.

Commit: effe12f2c

Kontrolní seznam migrace

Pro čistý přechod na v4.5.9 je typická práce následující:

  1. Změňte přístup k výsledku AprilTag z volání metod na atributy (tag.cx()tag.cx) a přejděte z auto_adjust na set_buffers (změny AprilTag / bufferů).

  2. Nahraďte ble_advertising za aioble a zrušte jakékoli použití RPC network master/slave (odstranění).

  3. Pokud používáte jiné rodiny AprilTag než TAG36H11 na standardním sestavení, vezměte na vědomí, že ve výchozím nastavení již nejsou detekovány (změna rodiny AprilTag).