v4.5.9

v4.5.9 tillför rå förhandsvisningsströmning för kort utan en hårdvarubaserad JPEG-kodare, hårdvarubaserad sensorbeskärning för att frigöra mer RAM, snabbare Helium-accelererad debayering samt en samling kamera-/USB-felsökningsfixar. Den ändrar även AprilTag-resultat-API:et och standarduppsättningen av AprilTag-familjer, så läs de brytande ändringarna nedan.

Höjdpunkter

  • Rå förhandsvisningsströmning — kort utan en hårdvarubaserad JPEG-kodare kan nu skicka nedskalade råa bildrutor till IDE:n/värddatorn istället för att misslyckas med förhandsvisningen.

  • Hårdvarubaserad sensorbeskärning — att ange en mindre bildrutestorlek minskar nu minnet per buffert och frigör RAM för fb_alloc().

  • Snabbare debayering — konvertering från Bayer till RGB/gråskala är nu Helium-SIMD-accelererad på Cortex-M55-kort.

  • Brytande: AprilTag-resultatobjektet ändrades till attributåtkomst och standarduppsättningen av AprilTag-familjer minskades (se AprilTag-ändringarna och AprilTag-familjeändringen).

Nya funktioner

  • Rå förhandsvisningsströmning — kort utan en hårdvarubaserad JPEG-kodare kan kringgå JPEG och strömma nedskalade råa bildrutor (begränsade till cirka 60 KB) till IDE:n/värddatorn, så att liveförhandsvisning fungerar på dessa kort.

Övriga ändringar och förbättringar

  • Hårdvarubeskärning är nu aktiverad på alla STM32/NXP-kort (Giga, Nicla Vision, Portenta H7, OpenMV 1–4 / 4 Plus / Pure Thermal / RT1060). När en bildrutestorlek eller ett fönster anges minskas minnet per buffert till den beskurna storleken, vilket frigör mer RAM för fb_alloc().

  • Snabbare debayering — konvertering från Bayer till RGB565/gråskala är nu ARM Helium/MVE-SIMD-accelererad på Cortex-M55-kort (t.ex. RT1060), med en delad SIMD-JPEG-kodarväg.

  • Snabbare IDE-felsökning — felsökaren överför nu data direkt från USB-stacken när det är möjligt, vilket undviker en extra kopiering.

  • MicroPython-submodulen uppdaterad — kort kan ändra storlek på TinyUSB CDC-bufferten, plus GC- och byggregelsfixar.

Buggfixar

Kamera och sensorer:

  • Korrigerade OV7725 Bayer/CFA-mönstret (GBRG → BGGR), vilket åtgärdar debayerad färgutdata på OV7725-kameror; OV7725 rapporterar nu Bayer-pixelformatet, och sensorer med enbart Bayer rapporterar nu ett källdjup på 1 byte per pixel.

  • Åtgärdade beräkningen av storleken på den råa/Bayer-baserade bildbufferten.

Maskininlärning:

  • TensorFlow Lite Micro använder nu det lediga minnet i GC-heapen vid dimensionering av den tillfälliga tensorarenan, vilket förhindrar allokeringsfel vid modellinläsning på kort med begränsat bildbuffertminne.

Värddator / IDE:

  • Åtgärdade hanteringen av USB-felsöknings-CDC-bufferten på TinyUSB-kort för mer tillförlitlig seriell-/felsökningsgenomströmning.

  • tools/pyopenmv: åtgärdade RGB565-byteordningen, lade till ett scale-argument, och bildbuffertverktyget rapporterar nu bildstorlek/-format.

Hårdvaru- och kortstöd

  • OV7725 rapporterar nu Bayer-pixelformatet (korrekt hantering av rå/CFA).

  • Hårdvarubeskärning aktiverad över hela STM32/NXP-kortserien.

Brytande API-ändringar

Användarsynliga API-brytningar mellan v4.5.8 och v4.5.9. Omfattning: Python-C-moduler i modules/ och Python-bibliotek i scripts/libraries/.

Varje ändring är märkt med sin påverkan:

  • minor — smalt API; påverkar endast skript som använde det.

  • behavior — samma API, olika resultat; kontrollera finjusterade skript igen.

Ändringarna är grupperade efter påverkan i den ordningen. Om du bara vill porta din kod kan du hoppa till migreringschecklistan i slutet. Varje commit-hash länkar till sin diff på GitHub.

AprilTag-resultatobjekt och set_buffers (minor)

AprilTag-resultat från find_apriltags() exponerar nu sina data som attribut istället för metoder — använd tag.cx, tag.cy, tag.rotation, tag.family, tag.corners istället för tag.cx(), tag.family() osv. Nya accessorer name (familjenamnssträng) och flyttalsprecisionsbaserade cxf / cyf lades till.

Separat ändrades den automatiska videobuffertkonfigurationen: set_buffers ersätter auto_adjust — skicka -1 för att använda upp till tre buffertar i bildrutans storlek (eller så många som får plats) och 1 för att använda hela bildbufferten. Buffertdimensioneringen är nu medveten om bitar per pixel, så fler buffertar kan allokeras för 1 bpp-format.

Commits: c0d4759f8, 7b36e4ef6

ble_advertising och RPC-över-nätverk borttagna (minor)

Hjälpbiblioteket ble_advertising och exemplet ble_temperature.py togs bort — använd aioble istället (ett aioble-temperaturexempel tillhandahålls). RPC-nätverksklasserna master/slave togs bort från rpc.py.

Commits: 6513276c1, 44a7e579d

AprilTag-familjer inaktiverade som standard (behavior)

AprilTag-familjer är nu individuellt valbara vid kompileringstid, och de oanvända är inaktiverade som standard. På standardkort detekterar find_apriltags() nu endast TAG36H11-familjen om inte firmware byggs om med andra familjer aktiverade. Skript som förlitar sig på andra familjer (TAG16H5, TAG25H9, …) på ett standardbygge slutar tyst att detektera dem.

Commit: effe12f2c

Migreringschecklista

För en ren port till v4.5.9 är det typiska arbetet:

  1. Ändra AprilTag-resultatåtkomst från metodanrop till attribut (tag.cx()tag.cx), och byt auto_adjust mot set_buffers (AprilTag-/buffertändringarna).

  2. Ersätt ble_advertising med aioble och ta bort all användning av RPC-nätverk master/slave (borttagningarna).

  3. Om du använder andra AprilTag-familjer än TAG36H11 på ett standardbygge, observera att de inte längre detekteras som standard (AprilTag-familjeändringen).