v4.8.1

v4.8.1 si basa su Qt Creator 14.0.2 ed è incentrata su un nuovo protocollo per camera OpenMV V2 ad alta affidabilità, un Code Profiler integrato e un flusso di salvataggio che mantiene la camera montata invece di espellerla. Il firmware incluso e l’intero set di esempi sono aggiornati alla 4.8.1. Non ci sono rotture nell’API di scripting, ma il comportamento per cui il salvataggio non espelle più e la rimozione di alcuni flag seriali all’avvio sono cambiamenti del flusso di lavoro visibili all’utente.

In evidenza

  • OpenMV Protocol V2 è un nuovo stack camera ad alta affidabilità (OMVCamera/OMVTransport/OMVDebug) con CRC32, sequenziamento, ACK/NAK, ritrasmissione, eventi e frammentazione. Viene negoziato automaticamente al momento della connessione e gestisce reset, avvio, streaming, esecuzione di script e statistiche.

  • Code Profiler è una nuova finestra (Window > Show Code Profiler) che interroga i record di profilazione per funzione dalla camera e mostra chiamate, microsecondi min/max/totali/medi (μs), cicli medi, percentuale e contatori di eventi in una tabella ordinabile.

  • Save in place non espelle più l’unità della camera; l’IDE ora scrive main.py e svuota il volume su disco, così il dispositivo rimane montato.

  • Multi-sensor detection segnala ogni camera presente su una scheda, mostrata nella barra di stato come Sensors: X, Y con il sensore principale elencato per primo.

  • Dynamic Frame Reading ricalcola la risoluzione di streaming raw ottimale per ciascun formato di pixel e riconfigura automaticamente lo stream.

  • Firmware ed esempi inclusi sono aggiornati alla 4.8.1 su tutte le schede, aggiungendo nuovi esempi per event-camera GenX320, TensorFlow ML, OLED Alif e shield LCD/Touch-LCD.

Nuove funzionalità

  • Aggiunto il protocollo di comunicazione OpenMV V2: un livello completo di trasporto e transazione con CRC32, sequenziamento, ACK/NAK, ritrasmissione, eventi e frammentazione, oltre a una classe OMVCamera negoziata automaticamente alla connessione e integrata nel driver seriale (2fde9eb3f, fff1bf2ba, 8c41fcfad, 7fc7ed4bc, 84c3956af, 669039adf, a49259852, 07af1922a, 85f0c7c87, 5070cc213, e314459cc, e0367ca95, 0da2f79d0, 2b6fc9866, 534ecffbe).

  • Aggiunta la finestra Code Profiler (Window > Show Code Profiler), che interroga i record di profilazione per funzione e mostra chiamate, microsecondi min/max/totali/medi (μs), cicli medi, percentuale e contatori di eventi, risolvendo gli indirizzi in simboli tramite un parser ELF ELFIO incluso (019d3cd2c, 57cd9e1cc).

  • Aggiunta una finestra di dialogo Debug Protocol Settings che mostra in tempo reale System Info, Host Stats e Device Stats aggiornate ogni secondo, esponendo le frequenze di polling per canale oltre ai controlli di polling combinato vs separato (5220a6125, 0da2f79d0).

  • Aggiunto il rilevamento multi-sensore: una scheda con più di una camera le segnala tutte nella barra di stato come Sensors: X, Y, con il sensore principale per primo (cebc79ce7).

  • Aggiunto il Dynamic Frame Reading (attivo per impostazione predefinita), che ricalcola la risoluzione di streaming raw ottimale per ciascun formato di pixel (BINARY, GRAY, RGB565, ARGB8, JPEG, PNG) e riconfigura lo stream (75c073bdb, 0da2f79d0).

  • Aggiunta la decodifica del framebuffer per i formati di pixel raw BINARY (mono 1-bpp) e ARGB8 (alpha a 32 bit), così questi tipi di immagine ora vengono visualizzati nel viewer (dabb82062).

  • Su Windows, Connect ora cerca i dispositivi USB contrassegnati con un problema dal sistema operativo e avvisa con un elenco dei dispositivi difettosi che potrebbero bloccare la connessione (1a5beb081, 1b59cd78e).

  • Aggiunto un indicatore di registrazione nella barra di stato: un pulsante verde Registered o corallo Unregistered per la camera connessa, cliccabile per registrare la scheda (a8c98a4b9).

  • Il viewer del framebuffer ora può visualizzare un messaggio di testo centrato inviato dallo script in esecuzione tramite un nuovo codice di escape FB_MESSAGE invece di un’immagine (530048201).

  • Aggiunte nuove voci al model-zoo: modelli di stima della profondità ST FastDepth (224/256/320), un modello di posa ST head-landmarks, modelli per le mani di rilevamento del palmo e hand-landmarks, e un modello BlazeFace di rilevamento del volto frontale (551668410, 4d64556d4, fadd6c4ed, b8277bb88, a8c98a4b9).

  • Aggiunto uno script di self-test esclusivo per le build di fabbrica (camera, IMU, ToF, WiFi, LAN) che viene incluso e aperto automaticamente all’avvio nella variante factory dell’IDE (0db7fbbb0); la parte LAN del test per RT1060 è attualmente disabilitata (48370d022).

Altre modifiche e miglioramenti

  • Save in place: il salvataggio di uno script non espelle più l’unità della camera; l’IDE scrive main.py e svuota il volume su disco (FlushFileBuffers su Windows, syncfs su Linux, sync_volume_np/F_FULLFSYNC su macOS), così il dispositivo rimane montato (1614c572f, 6928b51ea, 35ed53967).

  • Le azioni della barra degli strumenti cliccate mentre la camera è occupata (disabilita framebuffer, comprimi JPEG, salva script, configura impostazioni) ora vengono accodate ed eseguite automaticamente quando il dispositivo è libero, invece di mostrare una finestra di errore Busy (f4315f0a4).

  • Il viewer del framebuffer ora utilizza per impostazione predefinita l’adattamento alla vista, così l’immagine si ridimensiona automaticamente alla finestra all’avvio, e il pannello di output del terminale seriale ora viene mostrato per impostazione predefinita all’avvio (f3ce4dc75).

  • I file di modello compilati con estensione .lite ora vengono riconosciuti ovunque: filtro e visualizzazione nel browser del model-zoo, allineamento ROMFS del firmware, e i compilatori Vela/STEdge AI ora emettono output .lite (f3ce4dc75).

  • La finestra di dialogo di compilazione modelli STEdge AI (N6) ora analizza e segnala le percentuali di utilizzo di RAM NPU e hyperRAM e copia l’output di rete ricollocato in un file corrispondente all’estensione del modello (f3ce4dc75).

  • Il browser del model-zoo ora mostra la colonna Size dei file e allarga la colonna del nome per adattarla, invece di nascondere la dimensione (f3ce4dc75).

  • Il template del nuovo script è stato aggiornato alla nuova API del modulo csi e usa per impostazione predefinita il framesize VGA, e l’esempio Hello World incluso è stato cambiato dal framesize QVGA a VGA (f3ce4dc75).

  • La finestra di dialogo Convert Video è stata riscritta per utilizzare la finestra di dialogo loader condivisa con output colorato, messaggi di successo/fallimento, un pulsante OK-to-close e un errore chiaro quando FFMPEG non è disponibile sulla piattaforma (f56efc7be).

  • Il viewer del framebuffer ora mostra un avviso lampeggiante quando un’immagine JPEG/PNG è troppo grande per essere bufferizzata e inviata, tramite un nuovo codice di escape FB_BUFFER_ERROR (fda826126).

  • L’ingresso nel bootloader DFU ora forza il bootloader a rimanere residente sul firmware con protocollo V2, con un rilevamento di versione che ricade su un reset semplice sui bootloader più vecchi (<1.0.2) che potrebbero bloccarsi se forzati (975857221).

  • Rinominate e riorganizzate le cartelle dei modelli di rilevamento oggetti ST (st_yolo_lc_v1 in yolo_lc, tiny_yolo_v2 in yolo_v2, i modelli person yolov8n in semplici file denominati per dimensione) e rimosse le grandi varianti int8 di tiny_yolo_v2 (34240cc3c).

  • La temporizzazione seriale ora viene regolata tramite le chiavi di override protocol del file settings.json del firmware (overrideReadTimeout, overrideReadStallTimeout, overridePerCommandWait e le chiavi V2 overrideCRC/overrideSEQ/overrideACK) invece dei flag della riga di comando all’avvio (019d8bf1d).

  • Impostato il limite di lunghezza riga del language-server Python a 120 colonne per flake8 e pycodestyle, così le righe lunghe non vengono più segnalate al valore predefinito di 79 (dabb82062).

  • Ridotto il set di modelli di machine learning inclusi spostando la collezione di modelli Qualcomm e google/mobilenet_v1 in models_unused per ridurre le dimensioni dell’installer (c44ddba20).

Correzioni di bug

  • Le finestre di dialogo di avanzamento del download del firmware e dell’aggiornamento delle risorse sono state rese resistenti ai crash usando le protezioni QPointer, così non utilizzano più una finestra di dialogo eliminata se viene chiusa durante il download (f3ce4dc75).

  • La scansione delle unità ora continua a riscansionare finché non viene trovata l’unità USB della camera e cancella le voci di unità obsolete alla disconnessione, eliminando il precedente trucco del timer one-shot (a31d41b4e).

  • Diverse correzioni di connessione e seriale: i sensori nascosti (ad es. SoftCSI) non ingombrano più il tipo di sensore visualizzato, un timer keep-alive seriale su Windows previene gli stalli USB, Start non riavvia più uno script già in esecuzione, e il canale della camera viene disconnesso in modo pulito alla chiusura della porta (a8e467be6).

  • La vista del profiler ha ripristinato la selezione dei contatori di eventi PMU per colonna (menu di eventi selezionabili) e lo stato salvato di contatori/intestazioni che erano stati temporaneamente disabilitati (40c679e90).

Supporto di piattaforme e strumenti

  • Base Qt Creator: 14.0.2.

  • Firmware incluso: aggiornato dalla 4.7.0 alla 4.8.1, ricompilando il firmware per OPENMV2/3/4/4P/PT, OPENMV_N6, OPENMV_AE3, OPENMV_RT1060 e le schede Arduino GIGA/Nicla Vision/Portenta H7 (2657818ca).

  • Corretto l’handshake della versione di protocollo su macOS per le schede RT1062 e AE3 suddividendo il trasferimento USB multi-comando in pezzi di dimensione USBDBG_LEN che quelle schede possono gestire (6b9d5f842).

  • Rielaborato il pacchetto driver Windows incluso: aggiunti file driver firmati .cat/.inf per scheda (AE3, H7, H7Plus, M4, M7, N6, Pico/PT, RT1062) e spostati i driver seriali CDC in una nuova cartella openmvcdc con un installer automatico basato su dpinst (439557829, ba3b01bfb).

  • Aggiunto il supporto per le revisioni più vecchie del sensore camera MT9V032 registrando gli ID sensore 0x1311 e 0x1312 (insieme all’esistente 0x1313) come MT9V0X2 (eaaa624e3).

Modifiche incompatibili

Questa release non ha rotture nell’API di scripting, ma ci sono alcuni cambiamenti del flusso di lavoro visibili all’utente:

  • Il salvataggio di uno script non espelle né smonta più l’unità USB della camera. L’IDE ora svuota i buffer del volume in loco, così il dispositivo rimane montato dopo un salvataggio.

  • I flag seriali all’avvio -override_read_timeout (predefinito 5000 ms), -override_read_stall_timeout (predefinito 1000 ms) e -override_per_command_wait (predefinito 1 ms, 2 ms su macOS) sono stati rimossi; la temporizzazione seriale ora viene configurata tramite le chiavi di override protocol nel file settings.json del firmware (019d8bf1d).

  • I bootloader inclusi ora vengono forniti solo come .bin; i file .dfu di firmware e bootloader per scheda sono stati rimossi.