v5.1.0#
v5.1.0 è una release di funzionalità. Il pannello sotto il frame buffer cresce da un istogramma a un insieme di viste in tempo reale – Info scheda, Memoria, Statistiche e la nuova vista Canali che trasforma i valori pubblicati da uno script in widget, grafici, spettri e mappe di profondità e li registra su file – il frame buffer ottiene un selettore della sorgente per le camere multi-sensore, l’IDE impara a caricare repository di terze parti di schede, firmware, esempi, modelli e stub, e le registrazioni video passano a H.264. Nuove schede e sensori sono supportati, gli strumenti per il firmware sono stati irrobustiti da un audit completo di ogni modifica dalla v5.0.0, e una manciata di comportamenti è stata portata da OpenMV Studio. È basata su Qt Creator 14.0.2 e include il firmware v5.0.1.
In evidenza#
Viste del pannello – la barra del titolo del pannello dell’istogramma acquisisce un selettore che commuta il pannello tra le viste Istogramma, Info scheda (hardware, versioni e capacità della camera connessa), Memoria (grafici in tempo reale dell’heap MicroPython e di ogni pool UMA, con tracciamento dei picchi), Statistiche (i contatori di pacchetti, errori ed eventi per canale del protocollo di debug) e Canali.
Vista Canali – uno script può pubblicare canali con nome di dati e controlli tramite il protocollo di debug, e l’IDE li visualizza in tempo reale: etichette, interruttori, cursori, caselle numeriche, pulsanti di opzione, campi di testo, selettori, pulsanti e blocchi di testo che scrivono di ritorno sulla camera; grafici di forme d’onda con panoramica, zoom, marcatori, trigger, cronologia e un analizzatore di spettro; e mappe di profondità con le palette proprie della camera, tre filtri di scalatura e la mappatura dei toni. Qualsiasi grafico o mappa registra su file CSV, WAV, NumPy o Edge Impulse JSON e CBOR – incluso un Registra tutto per un intero canale – per la raccolta di dati di addestramento. Gli ultimi valori restano sullo schermo quando uno script si ferma.
Selettore della sorgente del frame buffer – le camere con più di un sensore di immagine mostrano un selettore nella barra del titolo del frame buffer per scegliere quale sensore trasmette all’IDE (o per spegnere lo streaming), l’interruttore JPG è diventato un selettore della modalità di streaming JPG / RAW, e il titolo del pannello indica il formato in cui è arrivato ogni frame.
Repository di terze parti – un vendor può pubblicare un repository di schede, firmware (canali di release e di sviluppo), esempi, modelli di machine learning e stub
.pyi; l’IDE lo installa da un URL o da una cartella lasciata da un installer, lo unisce ai propri contenuti, lo tiene aggiornato e ti consente di ordinare i vendor per priorità. Si gestisce da Preferences → OpenMV → Third Party Repositories.Nuovo hardware – la scheda OpenMV N6 Classic (inclusi il driver del bootloader, la regola udev e la voce di ripristino ROM-DFU) e i sensori FLIR Lepton 3.1R e UW.
Registrazioni H.264 – il registratore del frame buffer e il convertitore video ora codificano in H.264 invece che in MPEG-4 Part 2, con un intervallo fisso tra i key frame così che le registrazioni consentano una ricerca pulita, e con il frame rate arrotondato a un numero intero.
Correzioni dall’audit – ogni commit dalla v5.0.0 è stato riesaminato due volte alla ricerca di regressioni, con particolare attenzione ai percorsi di firmware, bootloader e ROMFS; i difetti trovati sono corretti in questa release (vedi correzioni di bug).
Nuove funzionalità#
Viste Info scheda, Memoria e Statistiche nel pannello dell’istogramma, con uno stile a tutta larghezza sia nel tema scuro sia in quello chiaro e testo selezionabile (cdea506655b, 7629a588db9, e21bd94a395, b55dcc412f6, fc744920011, e7dc3bf0092, 448e21db0bd).
Vista Canali – il vocabolario completo dei controlli (etichetta, interruttore, cursore, casella numerica, pulsante di opzione, campo di testo, selezione, pulsante, testo), grafici di forme d’onda con analizzatore di spettro (finestre Hann, Hamming, Blackman e rettangolare, media, mantenimento del picco, frequenza logaritmica), trigger su fronte di salita e di discesa, marcatori, cronologia ed esportazione del grafico; mappe di profondità con le palette Depth, Rainbow, Ironbow ed Event, scalatura più vicino / bilineare / bicubica, mappatura dei toni Intervallo script / Intervallo auto / Equalizza, un pulsante di pausa, lettura al passaggio del mouse, un’intestazione con l’intervallo dichiarato e il minimo / massimo / media del frame, e Salva immagine; registrazione su CSV, WAV, NumPy ed Edge Impulse JSON / CBOR con un’etichetta Edge Impulse opzionale, suddivisione in parti per le acquisizioni lunghe e Registra tutto; un intervallo di Polling dei canali nelle preferenze del protocollo (5b4f31a6b3a, d1252a24f14, bfd7fd72f94, d1c2ab02a5f, 4808b8ffe26, dfc323b4ec7, 61c077df9a5, 8c2cd6cf1f1, 1534225fcee).
Selettore della sorgente del frame buffer e lettura del formato – scegli il sensore in streaming sulle camere multi-sensore, oppure Disattivato; il formato del frame ricevuto è mostrato nel titolo del pannello; l’interruttore JPG è ora un selettore Modalità JPG / Modalità RAW (e76284bde9e, c2baff8d60c, afece31cb6a, 76448d7b9dd).
Repository di terze parti – repository di firmware basati su file uniti all’elenco delle schede integrate, aggiornamenti di rete con una pagina delle Preferenze, un canale di firmware di sviluppo per vendor, priorità dei vendor controllata dall’utente, esempi dei vendor uniti in File → Examples, modelli dei vendor uniti nel Model Zoo, stub
.pyipersonalizzati forniti al completamento del codice, avvisi di sovrascrittura quando un vendor oscura contenuti integrati, e un controllo della licenza per le schede dei vendor (21a63a74949, b5512efe949, b15afdac479, 1fe693f0b61, ae11ffeffc4, cf47a37ba65, 100bdeb530b, 252924901f7, c75a81f2a4a, 3e7f077a738, 5c5aa3e657c, e3f36adbdcb, b04da8ee888).Rimozione dei commenti prima dell’esecuzione – i commenti vengono rimossi dallo script prima che sia inviato alla camera, risparmiando RAM della camera sugli script ricchi di commenti; le righe sono conservate, così i numeri di riga dei traceback corrispondono ancora all’editor (677546ee033).
Contrassegno di errore inline – quando uno script muore con un’eccezione, l’editor contrassegna in rosso la riga incriminata con il testo dell’errore accanto; il contrassegno scompare quando modifichi il file, esegui di nuovo o ti disconnetti (677546ee033).
Trascinamento sull’editor ROMFS – i file trascinati dal desktop passano per la stessa compilazione degli script e conversione dei modelli di Add File, nella cartella su cui sono stati rilasciati (677546ee033).
Miglioramenti a editor, terminale e interfaccia#
Gli istogrammi sono calcolati dall’RGB completo a 8 bit invece che dalle tabelle RGB565 della camera, con una palette dei grafici condivisa, riempimenti con alpha blending e linee della griglia più tenui (238e099373e, f126e8f34c0, cebbf0c9e2c).
Le viste nascoste del pannello non fanno lavoro – l’istogramma salta il calcolo e il ridisegno mentre è mostrata un’altra vista o il pannello è compresso, e si rimette in pari quando viene mostrato di nuovo; i ridisegni a dimensione zero sono silenziati (c8730df8399).
Gli script di esempio si aprono con una riga vuota dopo gli import, e gli esempi inclusi sono stati riformattati allo stesso modo (1f88f617ec5, 87c8f7d41c7).
Il completamento del codice mostra i nomi privati – il language server integrato non filtra più i membri con prefisso
_, che i moduli della camera usano (23ab5b38bb3).macOS – i group box dei controlli del protocollo nelle preferenze non sono più compressi, le viste a elementi sono protette dai crash dell’accessibilità Cocoa, gli utenti di Apple Silicon vengono avvisati dell’impostazione di sicurezza «Consenti la connessione degli accessori», e gli utenti RT1062 vengono avvisati quando il Monitoraggio input non è concesso (gli aggiornamenti del firmware ne hanno bisogno); entrambi gli avvisi sono mostrati dopo la connessione (7d7b69367bf, 69fe7ffc913, 742cb4d8c0b, 8890eb77834, 89646292e8d).
Scorciatoie in modalità viewer – le scorciatoie spurie che rompevano la modalità viewer (e l’IDE normale) sono state disabilitate, e la modalità viewer non salva più le proprie scorciatoie azzerate nelle impostazioni dell’IDE completo (251b422f642, 0d153671c1d).
I sensori sconosciuti sono indicati per chip id nella barra di stato, così possono essere identificati e aggiunti alla tabella dei sensori (df561775b54).
Firmware, schede e strumenti#
Supporto per OpenMV N6 Classic: voce della scheda, driver DFU per Windows e codici dell’installer, regola udev per Linux (4ff4a1f239d, bdd6c96ef47, 25fcdc13c6a, 7730b699f60).
Supporto dei sensori FLIR Lepton 3.1R e UW (12c03024f3c).
Passaggio di consegne del bootloader IMX – un catcher pre-armato cattura il bootloader dell’RT1062 nell’istante in cui si enumera, sostituendo il ciclo di avvio-per-sondaggio che poteva mancare la finestra di un secondo su un host sotto carico (3d8b63c6859).
Zip del firmware – Load Custom Firmware accetta bundle con il solo romfs e bundle senza ROMFS, e il firmware personalizzato o di sviluppo viene preparato per le schede IMX già in modalità bootloader (b6f16f54c1a, 94d5fd5c30e).
Directory di staging private per il firmware di sviluppo / personalizzato, le immagini dell’editor ROMFS e i file temporanei dello strumento video, così i file obsoleti di altri processi non possono mai essere flashati o convertiti per errore (939154501af, a288fe712e7, 5c8c717adec).
Video H.264 – registrazioni e conversioni codificano in H.264 con un intervallo fisso tra i key frame; un frame rate registrato vicino a un numero intero viene arrotondato a esso, così i lettori riportano 30 FPS anziché 29,97 (6ad1968341d, d62c110e155, bab488a54fe).
Checksum dello zip delle risorse – l’aggiornamento delle risorse dell’IDE viene verificato rispetto a uno SHA-256 pubblicato insieme alla versione (677546ee033).
User-Agent veritiero nelle richieste ai server di OpenMV (c4279c0213e).
Correzioni di bug#
Due passaggi di revisione su ogni modifica dalla v5.0.0 hanno trovato e corretto quanto segue (ccea3b17d01, 71826200611):
Percorsi di firmware e bootloader – un Load Custom Firmware con uno zip su una scheda già in modalità bootloader flashava invece la build di release; il percorso di ripristino Alif ora rifiuta una build personalizzata anziché flashare la release; una N6 Classic bloccata veniva riparata con il bootloader e il firmware della N6 normale; una radice di risorse di terze parti obsoleta poteva dirottare una scheda integrata bloccata verso i file del vendor; il catcher IMX poteva procedere al flashing dopo essere andato in crash, ignorava Annulla durante l’attesa del flashloader e lasciava aperta la porta seriale dopo un annullamento durante l’armamento; il bootloader della N6 Classic non aveva una regola udev; i codici di uscita accettati dall’installer dei driver Windows avevano un refuso.
Editor ROMFS – Annulla durante una lettura del ROMFS segnalava «Failed to unpack ROMFS!» e attendeva dieci secondi una camera ancora nel bootloader; Annulla durante una scrittura terminava in silenzio con un ROMFS forse parziale; un errore di dfu-util durante una scrittura veniva segnalato come successo; Annulla nella finestra di dialogo successiva scartava ogni modifica; Auto Reconnect poteva connettersi sotto l’editor aperto; Edit ROMFS mentre connessi prima si disconnetteva e riconnetteva senza necessità; le directory temporanee del convertitore venivano abbandonate. Dopo un’operazione annullata al bootloader viene ora chiesto di uscire da DFU, così la camera torna da sola.
Repository di terze parti – le voci degli zip vengono validate prima dell’estrazione (niente path traversal o symlink), le installazioni parziali e le reinstallazioni conservano la vecchia copia finché la nuova non è al suo posto, una scheda di un vendor rifiutata non trascina più con sé la scheda integrata a cui si sovrapponeva, una maschera PID mancante non corrispondeva a nulla a runtime, e le righe dell’indice base di esempi / modelli non catturano più i file dei vendor con lo stesso nome.
Frame buffer e sensori – il sensore a eventi GENX320 (chip id superiore a
0x80000000) disabilitava il frame buffer; una selezione del sensore salvata non sopravviveva a un riavvio; la vecchia preferenza «disable frame buffer» non veniva migrata; il comando della sorgente di streaming è condizionato alla versione del protocollo; la metrica di messa a fuoco si bloccava mentre la pagina dell’istogramma era nascosta; il formato del frame restava nel titolo dopo la disconnessione.Flusso di connessione – gli avvisi di macOS potevano inghiottire il «Sì» del prompt di aggiornamento del firmware; il Model Zoo si apriva sempre compresso senza ripristinare la selezione; il fallback a drive singolo per il drive della camera era irraggiungibile quando la camera era collegata da più di dieci secondi.
Vista Canali e registratore – dimensioni dei frame ostili potevano mandare in overflow i controlli di dimensione; i registratori Edge Impulse riallocavano a ogni blocco e ora sono limitati a 64 MB per parte; uno schema con separatori nei nomi poteva indicizzare oltre la lista dei record; record duplicati lasciavano orfano un registratore in esecuzione; le scritture vengono scartate mentre la vista è congelata; l’elenco dei canali ora si aggiorna agli eventi di deregistrazione e di soft reboot.
Video – una larghezza dispari inserita dall’utente rompeva la codifica H.264 nelle build con libx264; le conversioni
.binannullate o fallite lasciavano frame che l’esecuzione successiva inglobava.Protocollo – lo svuotamento in lettura eseguito prima del rilevamento del protocollo è limitato (issue #336) (77cd13af76f); l’associazione camera-drive non perde più la gara con gli altri volumi (9877480c304).
Un avviso
-Wdeprecated-copynel wrapper delle informazioni sulla porta seriale (abcfaa8af5e).
Localizzazione#
Tutti i 37 cataloghi sono stati aggiornati per le viste del pannello, la vista Canali e la sua mappa di profondità, e per ogni nuova stringa di questa release (1b71f243733, dc13c23ed81, a7debafdafa, 173a57422f7).
Supporto delle piattaforme e degli strumenti#
Base Qt Creator: 14.0.2.
Versione di OpenMV IDE portata alla 5.1.0.
Firmware incluso: v5.0.1 (vedi il changelog del firmware).
Nuove schede e sensori: OpenMV N6 Classic; FLIR Lepton 3.1R e UW.
Modifiche incompatibili#
Nessuna per i progetti esistenti. L’interruttore JPG nella barra del titolo del frame buffer è ora un selettore Modalità JPG / Modalità RAW, e la sua vecchia impostazione «disable frame buffer» viene migrata nella voce Disattivato del nuovo selettore della sorgente. I commenti vengono rimossi dagli script prima dell’esecuzione; uno script che si affida alla lettura del proprio testo sorgente a runtime non dovrebbe farlo.