v4.8.1

v4.8.1 je postaveno na Qt Creator 14.0.2 a soustředí se na nový vysoce spolehlivý protokol kamery OpenMV V2, vestavěný Code Profiler a pracovní postup ukládání, který ponechá kameru připojenou místo jejího odpojení. Přibalený firmware a kompletní sada příkladů jsou aktualizovány na 4.8.1. Nedochází k žádným změnám skriptovacího API, ale chování „ukládání již neodpojuje“ a odstranění několika sériových přepínačů při spuštění jsou pro uživatele viditelné změny pracovního postupu.

Hlavní novinky

  • OpenMV Protocol V2 je nový vysoce spolehlivý komunikační stack kamery (OMVCamera/OMVTransport/OMVDebug) s CRC32, sekvencováním, ACK/NAK, opětovným přenosem, událostmi a fragmentací. Je automaticky vyjednán při připojení a řídí reset, bootování, streamování, spouštění skriptů a statistiky.

  • Code Profiler je nové okno (Window > Show Code Profiler), které z kamery získává záznamy profilování pro jednotlivé funkce a zobrazuje počty volání, min/max/celkové/průměrné mikrosekundy (μs), průměrné cykly, procenta a čítače událostí v seřaditelné tabulce.

  • Ukládání na místě již neodpojuje disk kamery; IDE nyní zapíše main.py a vyprázdní svazek na disk, takže zařízení zůstává připojené.

  • Detekce více senzorů hlásí každou kameru na desce, zobrazenou ve stavovém řádku jako Sensors: X, Y s hlavním senzorem uvedeným jako první.

  • Dynamické čtení snímků přepočítává nejvhodnější rozlišení surového streamování pro každý formát pixelů a automaticky překonfiguruje stream.

  • Přibalený firmware a příklady jsou aktualizovány na 4.8.1 napříč všemi deskami a přidávají nové příklady pro událostní kameru GenX320, TensorFlow ML, Alif OLED a štíty LCD/Touch-LCD.

Nové funkce

  • Přidán komunikační protokol OpenMV V2: kompletní transportní a transakční vrstva s CRC32, sekvencováním, ACK/NAK, opětovným přenosem, událostmi a fragmentací, plus třída OMVCamera automaticky vyjednaná při připojení a integrovaná do sériového ovladače (2fde9eb3f, fff1bf2ba, 8c41fcfad, 7fc7ed4bc, 84c3956af, 669039adf, a49259852, 07af1922a, 85f0c7c87, 5070cc213, e314459cc, e0367ca95, 0da2f79d0, 2b6fc9866, 534ecffbe).

  • Přidáno okno Code Profiler (Window > Show Code Profiler), které získává záznamy profilování pro jednotlivé funkce a zobrazuje počty volání, min/max/celkové/průměrné mikrosekundy (μs), průměrné cykly, procenta a čítače událostí, přičemž adresy převádí na symboly pomocí přibaleného ELF parseru ELFIO (019d3cd2c, 57cd9e1cc).

  • Přidán dialog Debug Protocol Settings zobrazující živé System Info, Host Stats a Device Stats obnovované každou sekundu, který odhaluje rychlosti dotazování pro jednotlivé kanály plus ovládací prvky pro kombinované vs. rozdělené dotazování (5220a6125, 0da2f79d0).

  • Přidána detekce více senzorů: deska s více než jednou kamerou je hlásí všechny ve stavovém řádku jako Sensors: X, Y, hlavní senzor jako první (cebc79ce7).

  • Přidáno Dynamické čtení snímků (ve výchozím nastavení zapnuto), které přepočítává nejvhodnější rozlišení surového streamování pro každý formát pixelů (BINARY, GRAY, RGB565, ARGB8, JPEG, PNG) a překonfiguruje stream (75c073bdb, 0da2f79d0).

  • Přidáno dekódování framebufferu pro surové formáty pixelů BINARY (1bpp mono) a ARGB8 (32bitová alfa), takže se tyto typy obrazu nyní vykreslují v prohlížeči (dabb82062).

  • Ve Windows nyní Connect vyhledává USB zařízení, která operační systém označil jako problematická, a varuje seznamem vadných zařízení, jež mohou blokovat připojení (1a5beb081, 1b59cd78e).

  • Přidán indikátor registrace ve stavovém řádku: zelené tlačítko Registered nebo korálové Unregistered pro připojenou kameru, na které lze kliknout a desku zaregistrovat (a8c98a4b9).

  • Prohlížeč framebufferu nyní může místo obrazu zobrazit vystředěnou textovou zprávu odeslanou z běžícího skriptu pomocí nového řídicího kódu FB_MESSAGE (530048201).

  • Přidány nové položky model-zoo: modely odhadu hloubky ST FastDepth (224/256/320), model pózy ST head-landmarks, modely ruky pro detekci dlaně a hand-landmarks a model BlazeFace pro detekci čelní tváře (551668410, 4d64556d4, fadd6c4ed, b8277bb88, a8c98a4b9).

  • Přidán samočinný testovací skript dostupný pouze v továrním sestavení (kamera, IMU, ToF, WiFi, LAN), který je přibalen a automaticky otevřen při spuštění v tovární variantě IDE (0db7fbbb0); část testu týkající se RT1060 LAN je momentálně zakázána (48370d022).

Další změny a vylepšení

  • Ukládání na místě: uložení skriptu již neodpojuje disk kamery; IDE zapíše main.py a vyprázdní svazek na disk (FlushFileBuffers ve Windows, syncfs v Linuxu, sync_volume_np/F_FULLFSYNC v macOS), takže zařízení zůstává připojené (1614c572f, 6928b51ea, 35ed53967).

  • Akce na panelu nástrojů spuštěné v době, kdy je kamera zaneprázdněna (zakázat framebuffer, JPEG komprese, uložit skript, konfigurovat nastavení), jsou nyní zařazeny do fronty a spuštěny automaticky, jakmile je zařízení volné, místo zobrazení chybového dialogu Busy (f4315f0a4).

  • Prohlížeč framebufferu nyní ve výchozím nastavení přizpůsobí obraz oknu, takže se při spuštění automaticky škáluje na velikost okna, a výstupní panel sériového terminálu je nyní při spuštění zobrazen ve výchozím nastavení (f3ce4dc75).

  • Zkompilované soubory modelů s příponou .lite jsou nyní rozpoznávány všude: filtrování a zobrazení v prohlížeči model-zoo, zarovnání ROMFS firmwaru a kompilátory Vela/STEdge AI nyní vytvářejí výstup .lite (f3ce4dc75).

  • Dialog kompilace modelu STEdge AI (N6) nyní analyzuje a hlásí procentuální využití NPU RAM a hyperRAM a kopíruje přemístěný výstup sítě do souboru odpovídajícího příponě modelu (f3ce4dc75).

  • Prohlížeč model-zoo nyní zobrazuje sloupec Size se souborem a roztahuje sloupec s názvem tak, aby se vešel, místo skrývání velikosti (f3ce4dc75).

  • Šablona nového skriptu byla aktualizována na nové API modulu csi a ve výchozím nastavení používá velikost snímku VGA a přibalený příklad Hello World byl přepnut z velikosti snímku QVGA na VGA (f3ce4dc75).

  • Dialog Convert Video byl přepsán tak, aby používal sdílený dialog načítání s barevným výstupem, zprávami o úspěchu/neúspěchu, tlačítkem OK pro zavření a jasnou chybou, když FFMPEG není na dané platformě k dispozici (f56efc7be).

  • Prohlížeč framebufferu nyní zobrazí blikající varování, když je obraz JPEG/PNG příliš velký na uložení do bufferu a odeslání, prostřednictvím nového řídicího kódu FB_BUFFER_ERROR (fda826126).

  • Vstup do DFU bootloaderu nyní vynutí, aby bootloader zůstal rezidentní na firmwaru s protokolem V2, s detekcí verze, která se vrací k běžnému resetu na starších bootloaderech (<1.0.2), jež by se při vynucení mohly zaseknout (975857221).

  • Přejmenovány a reorganizovány složky modelů detekce objektů ST (st_yolo_lc_v1 na yolo_lc, tiny_yolo_v2 na yolo_v2, modely osob yolov8n na soubory pojmenované jen podle velikosti) a odstraněny velké int8 varianty tiny_yolo_v2 (34240cc3c).

  • Časování sériové komunikace se nyní ladí pomocí přepisovacích klíčů protocol ve firmwarovém settings.json (overrideReadTimeout, overrideReadStallTimeout, overridePerCommandWait a klíče V2 overrideCRC/overrideSEQ/overrideACK) místo přepínačů příkazového řádku při spuštění (019d8bf1d).

  • Nastaven limit délky řádku jazykového serveru Pythonu na 120 sloupců pro flake8 a pycodestyle, takže dlouhé řádky již nejsou označovány při výchozí hodnotě 79 (dabb82062).

  • Zmenšena přibalená sada modelů strojového učení přesunutím kolekce modelů Qualcomm a google/mobilenet_v1 do models_unused za účelem zmenšení instalátoru (c44ddba20).

Opravy chyb

  • Dialogy průběhu stahování firmwaru a aktualizace prostředků byly zabezpečeny proti pádu pomocí strážců QPointer, takže již nepoužívají smazaný dialog, pokud se zavře uprostřed stahování (f3ce4dc75).

  • Skenování disků nyní pokračuje v opětovném skenování, dokud není USB disk kamery nalezen, a při odpojení vymaže zastaralé záznamy disků, čímž odstraňuje předchozí hack s jednorázovým časovačem (a31d41b4e).

  • Několik oprav připojení a sériové komunikace: skryté senzory (např. SoftCSI) již nezahlcují zobrazený typ senzoru, časovač sériového keep-alive ve Windows zabraňuje zaseknutí USB, Start již nerestartuje již běžící skript a kanál kamery je při zavření portu čistě odpojen (a8e467be6).

  • Pohled profileru obnovil svůj výběr čítače událostí PMU pro jednotlivé sloupce (zaškrtávací nabídky událostí) a uložený stav čítačů/záhlaví, který byl dočasně zakázán (40c679e90).

Podpora platforem a nástrojů

  • Základ Qt Creator: 14.0.2.

  • Přibalený firmware: aktualizován z 4.7.0 na 4.8.1, znovu sestaven firmware pro OPENMV2/3/4/4P/PT, OPENMV_N6, OPENMV_AE3, OPENMV_RT1060 a desky Arduino GIGA/Nicla Vision/Portenta H7 (2657818ca).

  • Opraveno navázání verze protokolu v macOS pro desky RT1062 a AE3 rozdělením vícepříkazového USB přenosu na části o velikosti USBDBG_LEN, které tyto desky zvládnou (6b9d5f842).

  • Přepracován přibalený balík ovladačů pro Windows: přidány podepsané soubory ovladačů .cat/.inf pro jednotlivé desky (AE3, H7, H7Plus, M4, M7, N6, Pico/PT, RT1062) a CDC sériové ovladače přesunuty do nové složky openmvcdc s automatickým instalátorem založeným na dpinst (439557829, ba3b01bfb).

  • Přidána podpora starších revizí senzoru kamery MT9V032 registrací ID senzorů 0x1311 a 0x1312 (vedle stávajícího 0x1313) jako MT9V0X2 (eaaa624e3).

Zásadní změny

Toto vydání nepřináší žádné změny skriptovacího API, ale obsahuje několik pro uživatele viditelných změn pracovního postupu:

  • Uložení skriptu již neodpojuje ani neodpoutává USB disk kamery. IDE nyní vyprázdní buffery svazku na místě, takže zařízení zůstává po uložení připojené.

  • Sériové přepínače při spuštění -override_read_timeout (výchozí 5000 ms), -override_read_stall_timeout (výchozí 1000 ms) a -override_per_command_wait (výchozí 1 ms, 2 ms v macOS) byly odstraněny; časování sériové komunikace se nyní konfiguruje pomocí přepisovacích klíčů protocol ve firmwarovém settings.json (019d8bf1d).

  • Přibalené bootloadery se nyní dodávají pouze jako .bin; soubory firmwaru .dfu a bootloaderu pro jednotlivé desky byly odstraněny.