v4.5.9¶
v4.5.9 introduce lo streaming dell’anteprima grezza per le schede senza encoder JPEG hardware, il cropping hardware del sensore per liberare più RAM, un debayering più veloce accelerato con Helium e un insieme di correzioni per camera/USB-debug. Cambia inoltre l’API dei risultati AprilTag e l’insieme predefinito di famiglie AprilTag, quindi leggi le modifiche che rompono la compatibilità qui sotto.
In evidenza¶
Streaming dell’anteprima grezza — le schede senza encoder JPEG hardware possono ora inviare frame grezzi ridimensionati all’IDE/host invece di non riuscire a mostrare l’anteprima.
Cropping hardware del sensore — impostare una dimensione di frame più piccola ora riduce la memoria per buffer e libera RAM per
fb_alloc().Debayering più veloce — la conversione Bayer→RGB/scala di grigi è ora accelerata con Helium-SIMD sulle schede Cortex-M55.
Compatibilità: l’oggetto risultato AprilTag è passato all’accesso per attributi e l’insieme predefinito di famiglie AprilTag è stato ridotto (vedi le modifiche AprilTag e la modifica delle famiglie AprilTag).
Nuove funzionalità¶
Streaming dell’anteprima grezza — le schede senza encoder JPEG hardware possono bypassare il JPEG e trasmettere frame grezzi ridimensionati (limitati a circa 60 KB) all’IDE/host, così l’anteprima dal vivo funziona su quelle schede.
Altre modifiche e miglioramenti¶
Il cropping hardware è ora abilitato su tutte le schede STM32/NXP (Giga, Nicla Vision, Portenta H7, OpenMV 1–4 / 4 Plus / Pure Thermal / RT1060). Quando viene impostata una dimensione di frame o una finestra, la memoria per buffer viene ridotta alla dimensione ritagliata, liberando più RAM per
fb_alloc().Debayering più veloce — la conversione Bayer→RGB565/scala di grigi è ora accelerata con ARM Helium/MVE SIMD sulle schede Cortex-M55 (ad es. RT1060), con un percorso condiviso per l’encoder JPEG SIMD.
Debug IDE più veloce — il debugger ora trasferisce i dati direttamente dallo stack USB quando possibile, evitando una copia extra.
Sottomodulo MicroPython aggiornato — le schede possono ridimensionare il buffer CDC di TinyUSB, oltre a correzioni al GC e alle regole di build.
Correzioni di bug¶
Camera e sensori:
Corretto il pattern Bayer/CFA dell’OV7725 (GBRG → BGGR), correggendo l’output di colore debayerizzato sulle camere OV7725; l’OV7725 ora riporta il formato di pixel Bayer, e i sensori solo-Bayer ora riportano una profondità sorgente di 1 byte per pixel.
Corretto il calcolo della dimensione del framebuffer grezzo/Bayer.
Machine learning:
TensorFlow Lite Micro ora usa la memoria libera dell’heap GC nel dimensionare l’arena temporanea dei tensori, prevenendo i fallimenti di allocazione al caricamento del modello sulle schede con memoria frame buffer limitata.
Host / IDE:
Corretta la gestione del buffer CDC dell’USB-debug sulle schede TinyUSB per un throughput seriale/di debug più affidabile.
tools/pyopenmv: corretto l’ordine dei byte RGB565, aggiunto un argomentoscale, e lo strumento frame buffer ora riporta dimensione/formato dell’immagine.
Hardware e supporto schede¶
OV7725 ora riporta il formato di pixel Bayer (gestione corretta di raw/CFA).
Cropping hardware abilitato su tutta la gamma di schede STM32/NXP.
Modifiche all’API che rompono la compatibilità¶
Modifiche all’API visibili all’utente tra la v4.5.8 e la v4.5.9. Ambito: i moduli C Python in modules/ e le librerie Python in scripts/libraries/.
Ogni modifica è contrassegnata con il suo impatto:
minor — API ristretta; riguarda solo gli script che la usavano.
behavior — stessa API, risultati diversi; ricontrolla gli script ottimizzati.
Le modifiche sono raggruppate per impatto in quest’ordine. Se vuoi solo portare il tuo codice, salta alla checklist di migrazione in fondo. Ogni hash di commit rimanda al relativo diff su GitHub.
Oggetti risultato AprilTag e set_buffers (minor)¶
I risultati AprilTag da find_apriltags() ora espongono i loro dati come attributi invece che come metodi — usa tag.cx, tag.cy, tag.rotation, tag.family, tag.corners invece di tag.cx(), tag.family(), ecc. Sono stati aggiunti i nuovi accessor name (stringa del nome della famiglia) e cxf / cyf a precisione float.
Separatamente, è cambiata la configurazione automatica del buffer video: set_buffers sostituisce auto_adjust — passa -1 per usare fino a tre buffer della dimensione del frame (o il massimo che ci sta) e 1 per usare l’intero frame buffer. Il dimensionamento dei buffer ora tiene conto dei bit per pixel, quindi è possibile allocare più buffer per i formati a 1 bpp.
ble_advertising e RPC su rete rimossi (minor)¶
La libreria helper ble_advertising e l’esempio ble_temperature.py sono stati rimossi — usa invece aioble (viene fornito un esempio di temperatura con aioble). Le classi master/slave RPC su rete sono state rimosse da rpc.py.
Famiglie AprilTag disabilitate per impostazione predefinita (behavior)¶
Le famiglie AprilTag sono ora selezionabili singolarmente in fase di compilazione, e quelle inutilizzate sono disabilitate per impostazione predefinita. Sulle schede standard find_apriltags() ora rileva solo la famiglia TAG36H11 a meno che il firmware non venga ricompilato con altre famiglie abilitate. Gli script che si basano su altre famiglie (TAG16H5, TAG25H9, …) su una build standard smetteranno silenziosamente di rilevarle.
Commit: effe12f2c
Checklist di migrazione¶
Per un porting pulito alla v4.5.9 il lavoro tipico è:
Cambia l’accesso ai risultati AprilTag dalle chiamate di metodo agli attributi (
tag.cx()→tag.cx), e passa daauto_adjustaset_buffers(le modifiche AprilTag / buffer).Sostituisci
ble_advertisingconaioblee abbandona qualsiasi uso di master/slave RPC su rete (le rimozioni).Se usi famiglie AprilTag diverse da
TAG36H11su una build standard, nota che non vengono più rilevate per impostazione predefinita (la modifica delle famiglie AprilTag).