v4.8.1

v4.8.1 este construit pe Qt Creator 14.0.2 și se concentrează pe un nou protocol de cameră OpenMV V2 de înaltă fiabilitate, pe un Code Profiler încorporat și pe un flux de salvare care păstrează camera montată în loc să o ejecteze. Firmware-ul inclus și întregul set de exemple sunt actualizate la 4.8.1. Nu există modificări incompatibile ale API-ului de scripting, dar comportamentul de salvare-fără-ejectare și eliminarea câtorva flag-uri seriale de la pornire reprezintă modificări ale fluxului de lucru vizibile pentru utilizator.

Puncte importante

  • OpenMV Protocol V2 este o nouă stivă de cameră de înaltă fiabilitate (OMVCamera/OMVTransport/OMVDebug) cu CRC32, secvențiere, ACK/NAK, retransmisie, evenimente și fragmentare. Este negociat automat la momentul conectării și gestionează resetarea, pornirea, streaming-ul, execuția scripturilor și statisticile.

  • Code Profiler este o fereastră nouă (Window > Show Code Profiler) care interoghează înregistrările de profilare per funcție de la cameră și afișează apelurile, microsecundele (μs) minime/maxime/totale/medii, ciclurile medii, procentajul și contoarele de evenimente într-un tabel sortabil.

  • Save in place nu mai ejectează unitatea camerei; IDE-ul scrie acum main.py și golește volumul pe disc, astfel încât dispozitivul rămâne montat.

  • Detectarea cu mai mulți senzori raportează fiecare cameră de pe o placă, afișată în bara de stare ca Sensors: X, Y cu senzorul principal listat primul.

  • Dynamic Frame Reading recalculează rezoluția brută de streaming cu cea mai bună potrivire pentru fiecare format de pixel și reconfigurează fluxul automat.

  • Firmware-ul și exemplele incluse sunt actualizate la 4.8.1 pe toate plăcile, adăugând noi exemple pentru camera de evenimente GenX320, ML TensorFlow, OLED Alif și shield-ul LCD/Touch-LCD.

Funcții noi

  • S-a adăugat protocolul de comunicare OpenMV V2: un strat complet de transport și tranzacții cu CRC32, secvențiere, ACK/NAK, retransmisie, evenimente și fragmentare, plus o clasă OMVCamera negociată automat la conectare și integrată în driverul serial (2fde9eb3f, fff1bf2ba, 8c41fcfad, 7fc7ed4bc, 84c3956af, 669039adf, a49259852, 07af1922a, 85f0c7c87, 5070cc213, e314459cc, e0367ca95, 0da2f79d0, 2b6fc9866, 534ecffbe).

  • S-a adăugat fereastra Code Profiler (Window > Show Code Profiler), care interoghează înregistrările de profilare per funcție și afișează apelurile, microsecundele (μs) minime/maxime/totale/medii, ciclurile medii, procentajul și contoarele de evenimente, rezolvând adresele în simboluri prin intermediul unui parser ELF ELFIO inclus (019d3cd2c, 57cd9e1cc).

  • S-a adăugat un dialog Debug Protocol Settings care afișează în timp real System Info, Host Stats și Device Stats reîmprospătate în fiecare secundă, expunând ratele de interogare per canal plus controale de interogare combinată față de separată (5220a6125, 0da2f79d0).

  • S-a adăugat detectarea cu mai mulți senzori: o placă cu mai mult de o cameră le raportează pe toate în bara de stare ca Sensors: X, Y, senzorul principal primul (cebc79ce7).

  • S-a adăugat Dynamic Frame Reading (activat implicit), care recalculează rezoluția brută de streaming cu cea mai bună potrivire pentru fiecare format de pixel (BINARY, GRAY, RGB565, ARGB8, JPEG, PNG) și reconfigurează fluxul (75c073bdb, 0da2f79d0).

  • S-a adăugat decodarea framebuffer-ului pentru formatele de pixel brute BINARY (1-bpp monocrom) și ARGB8 (alfa pe 32 de biți), astfel încât acele tipuri de imagini sunt acum redate în vizualizator (dabb82062).

  • Pe Windows, Connect scanează acum dispozitivele USB marcate cu o problemă de către sistemul de operare și avertizează cu o listă a dispozitivelor defecte care ar putea bloca conexiunea (1a5beb081, 1b59cd78e).

  • S-a adăugat un indicator de înregistrare în bara de stare: un buton verde Registered sau coral Unregistered pentru camera conectată, pe care se poate face clic pentru a înregistra placa (a8c98a4b9).

  • Vizualizatorul de framebuffer poate acum afișa un mesaj text centrat trimis de scriptul în execuție printr-un nou cod de escape FB_MESSAGE în loc de o imagine (530048201).

  • S-au adăugat noi intrări în model-zoo: modele ST FastDepth de estimare a adâncimii (224/256/320), un model ST de poziție a reperelor capului, modele de mână pentru detectarea palmei și repere ale mâinii și un model BlazeFace de detectare a feței frontale (551668410, 4d64556d4, fadd6c4ed, b8277bb88, a8c98a4b9).

  • S-a adăugat un script de autotestare disponibil doar pentru build-urile de fabrică (cameră, IMU, ToF, WiFi, LAN) care este inclus și deschis automat la pornire în varianta IDE de fabrică (0db7fbbb0); porțiunea LAN RT1060 a testului este în prezent dezactivată (48370d022).

Alte modificări și îmbunătățiri

  • Save in place: salvarea unui script nu mai ejectează unitatea camerei; IDE-ul scrie main.py și golește volumul pe disc (FlushFileBuffers pe Windows, syncfs pe Linux, sync_volume_np/F_FULLFSYNC pe macOS), astfel încât dispozitivul rămâne montat (1614c572f, 6928b51ea, 35ed53967).

  • Acțiunile din bara de instrumente apăsate în timp ce camera este ocupată (dezactivare framebuffer, compresie JPEG, salvare script, configurare setări) sunt acum puse în coadă și rulate automat când dispozitivul este liber, în loc să afișeze un dialog de eroare Busy (f4315f0a4).

  • Vizualizatorul de framebuffer folosește acum implicit potrivirea în vizualizare, astfel încât imaginea se scalează automat la fereastră la pornire, iar panoul de ieșire al terminalului serial este acum afișat implicit la pornire (f3ce4dc75).

  • Fișierele de model compilate cu extensia .lite sunt acum recunoscute peste tot: filtrarea și afișarea în browserul model-zoo, alinierea ROMFS a firmware-ului, iar compilatoarele Vela/STEdge AI emit acum ieșire .lite (f3ce4dc75).

  • Dialogul de compilare a modelelor STEdge AI (N6) analizează și raportează acum procentajele de utilizare a memoriei RAM a NPU și a hyperRAM și copiază ieșirea de rețea relocată într-un fișier care corespunde extensiei modelului (f3ce4dc75).

  • Browserul model-zoo afișează acum coloana Size a fișierului și întinde coloana de nume pentru a se potrivi, în loc să ascundă dimensiunea (f3ce4dc75).

  • Șablonul pentru script nou a fost actualizat la noul API al modulului csi și folosește implicit dimensiunea de cadru VGA, iar exemplul Hello World inclus a fost comutat de la dimensiunea de cadru QVGA la VGA (f3ce4dc75).

  • Dialogul Convert Video a fost rescris pentru a utiliza dialogul de încărcare partajat cu ieșire colorată, mesaje de succes/eșec, un buton OK-to-close și o eroare clară atunci când FFMPEG nu este disponibil pe platformă (f56efc7be).

  • Vizualizatorul de framebuffer afișează acum un avertisment intermitent atunci când o imagine JPEG/PNG este prea mare pentru a fi pusă în tampon și trimisă, printr-un nou cod de escape FB_BUFFER_ERROR (fda826126).

  • Intrarea în bootloader-ul DFU forțează acum bootloader-ul să rămână rezident pe firmware-ul cu protocol V2, cu detectarea versiunii care revine la o resetare simplă pe bootloader-ele mai vechi (<1.0.2) care s-ar putea bloca atunci când sunt forțate (975857221).

  • S-au redenumit și reorganizat folderele cu modele ST de detectare a obiectelor (st_yolo_lc_v1 în yolo_lc, tiny_yolo_v2 în yolo_v2, modelele de persoană yolov8n în fișiere simple denumite după dimensiune) și s-au eliminat variantele int8 mari tiny_yolo_v2 (34240cc3c).

  • Sincronizarea seriala este acum reglată prin cheile de suprascriere protocol din settings.json al firmware-ului (overrideReadTimeout, overrideReadStallTimeout, overridePerCommandWait și cheile V2 overrideCRC/overrideSEQ/overrideACK) în loc de flag-uri din linia de comandă la pornire (019d8bf1d).

  • S-a setat limita de lungime a liniei a serverului de limbaj Python la 120 de coloane pentru flake8 și pycodestyle, astfel încât liniile lungi nu mai sunt semnalate la valoarea implicită de 79 (dabb82062).

  • S-a redus setul de modele de învățare automată incluse prin mutarea colecției de modele Qualcomm și a google/mobilenet_v1 în models_unused pentru a micșora programul de instalare (c44ddba20).

Corectări de erori

  • Dialogurile de progres pentru descărcarea firmware-ului și actualizarea resurselor au fost făcute rezistente la blocaje folosind protecții QPointer, astfel încât nu mai utilizează un dialog șters dacă acesta se închide în timpul descărcării (f3ce4dc75).

  • Scanarea unităților rescanează acum până când este găsită unitatea USB a camerei și șterge intrările de unitate învechite la deconectare, eliminând hack-ul anterior cu temporizator unic (a31d41b4e).

  • Mai multe corectări de conexiune și seriale: senzorii ascunși (de ex. SoftCSI) nu mai aglomerează tipul de senzor afișat, un temporizator de keep-alive serial pe Windows previne blocajele USB, Start nu mai repornește un script deja în execuție, iar canalul camerei este deconectat curat la închiderea portului (a8e467be6).

  • Vizualizarea profiler-ului și-a restabilit selecția contoarelor de evenimente PMU per coloană (meniuri de evenimente bifabile) și a salvat starea contoarelor/antetelor care fusese dezactivată temporar (40c679e90).

Suport pentru platformă și instrumente

  • Bază Qt Creator: 14.0.2.

  • Firmware inclus: actualizat de la 4.7.0 la 4.8.1, reconstruind firmware-ul pentru plăcile OPENMV2/3/4/4P/PT, OPENMV_N6, OPENMV_AE3, OPENMV_RT1060 și Arduino GIGA/Nicla Vision/Portenta H7 (2657818ca).

  • S-a corectat handshake-ul de versiune de protocol pe macOS pentru plăcile RT1062 și AE3 prin împărțirea transferului USB cu mai multe comenzi în bucăți de dimensiune USBDBG_LEN pe care acele plăci le pot gestiona (6b9d5f842).

  • S-a reproiectat pachetul de drivere Windows inclus: s-au adăugat fișiere de driver .cat/.inf semnate per placă (AE3, H7, H7Plus, M4, M7, N6, Pico/PT, RT1062) și s-au mutat driverele seriale CDC într-un nou folder openmvcdc cu un instalator automat bazat pe dpinst (439557829, ba3b01bfb).

  • S-a adăugat suport pentru revizii mai vechi ale senzorului de cameră MT9V032 prin înregistrarea ID-urilor de senzor 0x1311 și 0x1312 (alături de 0x1313 existent) ca MT9V0X2 (eaaa624e3).

Modificări incompatibile

Această versiune nu are modificări incompatibile ale API-ului de scripting, dar există câteva modificări ale fluxului de lucru vizibile pentru utilizator:

  • Salvarea unui script nu mai ejectează sau demontează unitatea USB a camerei. IDE-ul golește acum tampoanele volumului pe loc, astfel încât dispozitivul rămâne montat după o salvare.

  • Flag-urile seriale de la pornire -override_read_timeout (implicit 5000 ms), -override_read_stall_timeout (implicit 1000 ms) și -override_per_command_wait (implicit 1 ms, 2 ms pe macOS) au fost eliminate; sincronizarea seriala este acum configurată prin cheile de suprascriere protocol din settings.json al firmware-ului (019d8bf1d).

  • Bootloader-ele incluse sunt acum livrate doar ca .bin; fișierele de firmware și bootloader .dfu per placă au fost eliminate.