v4.8.1

v4.8.1 basiert auf Qt Creator 14.0.2 und konzentriert sich auf ein neues, hochzuverlässiges OpenMV V2 Kameraprotokoll, einen integrierten Code Profiler und einen Speicher-Workflow, der die Kamera eingebunden lässt, anstatt sie auszuwerfen. Die mitgelieferte Firmware und der vollständige Beispielsatz wurden auf 4.8.1 aktualisiert. Es gibt keine Brüche bei der Skripting-API, aber das Verhalten, dass das Speichern die Kamera nicht mehr auswirft, sowie das Entfernen einiger serieller Flags zur Startzeit sind für den Benutzer sichtbare Workflow-Änderungen.

Highlights

  • OpenMV Protocol V2 ist ein neuer, hochzuverlässiger Kamera-Stack (OMVCamera/OMVTransport/OMVDebug) mit CRC32, Sequenzierung, ACK/NAK, Neuübertragung, Ereignissen und Fragmentierung. Es wird beim Verbinden automatisch ausgehandelt und steuert Reset, Boot, Streaming, Skriptausführung und Statistiken.

  • Code Profiler ist ein neues Fenster (Window > Show Code Profiler), das pro Funktion Profiling-Datensätze von der Kamera abfragt und Aufrufe, min/max/gesamt/durchschnittliche Mikrosekunden (μs), durchschnittliche Zyklen, Prozentsatz und Ereigniszähler in einer sortierbaren Tabelle anzeigt.

  • Save in place wirft das Kamera-Laufwerk nicht mehr aus; die IDE schreibt nun main.py und schreibt das Volume auf die Festplatte zurück, sodass das Gerät eingebunden bleibt.

  • Multi-Sensor-Erkennung meldet jede Kamera auf einer Platine, angezeigt in der Statusleiste als Sensors: X, Y mit dem Hauptsensor an erster Stelle.

  • Dynamic Frame Reading berechnet die optimale raw Streaming-Auflösung pro Pixelformat neu und konfiguriert den Stream automatisch um.

  • Mitgelieferte Firmware und Beispiele wurden auf allen Platinen auf 4.8.1 aktualisiert, mit neuen Beispielen für die GenX320-Ereigniskamera, TensorFlow ML, Alif OLED und LCD/Touch-LCD-Shields.

Neue Funktionen

  • Das OpenMV V2 Kommunikationsprotokoll wurde hinzugefügt: eine vollständige Transport- und Transaktionsschicht mit CRC32, Sequenzierung, ACK/NAK, Neuübertragung, Ereignissen und Fragmentierung, plus einer OMVCamera-Klasse, die beim Verbinden automatisch ausgehandelt und in den seriellen Treiber integriert wird (2fde9eb3f, fff1bf2ba, 8c41fcfad, 7fc7ed4bc, 84c3956af, 669039adf, a49259852, 07af1922a, 85f0c7c87, 5070cc213, e314459cc, e0367ca95, 0da2f79d0, 2b6fc9866, 534ecffbe).

  • Das Code Profiler-Fenster (Window > Show Code Profiler) wurde hinzugefügt, das pro Funktion Profiling-Datensätze abfragt und Aufrufe, min/max/gesamt/durchschnittliche Mikrosekunden (μs), durchschnittliche Zyklen, Prozentsatz und Ereigniszähler anzeigt und Adressen über einen mitgelieferten ELFIO ELF-Parser zu Symbolen auflöst (019d3cd2c, 57cd9e1cc).

  • Ein Debug Protocol Settings-Dialog wurde hinzugefügt, der jede Sekunde aktualisierte Live-System-Info, Host-Statistiken und Geräte-Statistiken anzeigt und Abfrageraten pro Kanal sowie Steuerungen für kombinierte vs. getrennte Abfrage bereitstellt (5220a6125, 0da2f79d0).

  • Die Multi-Sensor-Erkennung wurde hinzugefügt: eine Platine mit mehr als einer Kamera meldet alle davon in der Statusleiste als Sensors: X, Y, Hauptsensor zuerst (cebc79ce7).

  • Dynamic Frame Reading wurde hinzugefügt (standardmäßig aktiviert), das die optimale raw Streaming-Auflösung pro Pixelformat (BINARY, GRAY, RGB565, ARGB8, JPEG, PNG) neu berechnet und den Stream umkonfiguriert (75c073bdb, 0da2f79d0).

  • Die Framebuffer-Dekodierung für die raw Pixelformate BINARY (1-bpp mono) und ARGB8 (32-Bit Alpha) wurde hinzugefügt, sodass diese Bildtypen nun im Viewer dargestellt werden (dabb82062).

  • Unter Windows sucht Connect nun nach USB-Geräten, die vom Betriebssystem als problembehaftet markiert sind, und warnt mit einer Liste der fehlerhaften Geräte, die eine Verbindung blockieren könnten (1a5beb081, 1b59cd78e).

  • Eine Registrierungsanzeige in der Statusleiste wurde hinzugefügt: ein grüner Registered- oder ein korallenfarbener Unregistered-Button für die verbundene Kamera, anklickbar, um die Platine zu registrieren (a8c98a4b9).

  • Der Framebuffer-Viewer kann nun eine zentrierte Textnachricht anzeigen, die vom laufenden Skript über einen neuen FB_MESSAGE-Escape-Code gesendet wird, anstatt eines Bildes (530048201).

  • Neue Model-Zoo-Einträge wurden hinzugefügt: ST FastDepth Tiefenschätzungsmodelle (224/256/320), ein ST Head-Landmarks Posenmodell, Palm-Detection- und Hand-Landmarks-Handmodelle sowie ein BlazeFace Frontal-Gesichtserkennungsmodell (551668410, 4d64556d4, fadd6c4ed, b8277bb88, a8c98a4b9).

  • Ein nur in Factory-Builds enthaltenes Selbsttest-Skript (Kamera, IMU, ToF, WiFi, LAN) wurde hinzugefügt, das in der Factory-IDE-Variante mitgeliefert und beim Start automatisch geöffnet wird (0db7fbbb0); der RT1060-LAN-Teil des Tests ist derzeit deaktiviert (48370d022).

Weitere Änderungen und Verbesserungen

  • Save in place: Das Speichern eines Skripts wirft das Kamera-Laufwerk nicht mehr aus; die IDE schreibt main.py und schreibt das Volume auf die Festplatte zurück (FlushFileBuffers unter Windows, syncfs unter Linux, sync_volume_np/F_FULLFSYNC unter macOS), sodass das Gerät eingebunden bleibt (1614c572f, 6928b51ea, 35ed53967).

  • Symbolleisten-Aktionen, die angeklickt werden, während die Kamera beschäftigt ist (Framebuffer deaktivieren, JPEG komprimieren, Skript speichern, Einstellungen konfigurieren), werden nun in eine Warteschlange gestellt und automatisch ausgeführt, sobald das Gerät frei ist, anstatt einen Busy-Fehlerdialog anzuzeigen (f4315f0a4).

  • Der Framebuffer-Viewer verwendet nun standardmäßig fit-in-view, sodass sich das Bild beim Start automatisch an das Fenster anpasst, und der Ausgabebereich des seriellen Terminals wird nun beim Start standardmäßig angezeigt (f3ce4dc75).

  • Kompilierte Modelldateien mit der Erweiterung .lite werden nun überall erkannt: bei der Filterung und Anzeige im Model-Zoo-Browser, der Firmware-ROMFS-Ausrichtung, und die Vela/STEdge AI-Compiler geben nun .lite-Ausgaben aus (f3ce4dc75).

  • Der STEdge AI (N6) Modell-Kompilierdialog parst und meldet nun die Auslastungsprozentsätze von NPU-RAM und hyperRAM und kopiert die relozierte Netzwerk-Ausgabe in eine Datei, die der Erweiterung des Modells entspricht (f3ce4dc75).

  • Der Model-Zoo-Browser zeigt nun die Spalte Size der Dateigröße an und streckt die Namensspalte, um sie einzupassen, anstatt die Größe auszublenden (f3ce4dc75).

  • Die Vorlage für neue Skripte wurde auf die neue csi-Modul-API aktualisiert und verwendet standardmäßig die VGA-Framegröße, und das mitgelieferte Hello-World-Beispiel wurde von der QVGA- auf die VGA-Framegröße umgestellt (f3ce4dc75).

  • Der Convert Video-Dialog wurde neu geschrieben, um den gemeinsamen Loader-Dialog mit farbiger Ausgabe, Erfolgs-/Fehlermeldungen, einem OK-zum-Schließen-Button und einer klaren Fehlermeldung zu verwenden, wenn FFMPEG auf der Plattform nicht verfügbar ist (f56efc7be).

  • Der Framebuffer-Viewer zeigt nun eine blinkende Warnung an, wenn ein JPEG/PNG-Bild zu groß ist, um gepuffert und gesendet zu werden, über einen neuen FB_BUFFER_ERROR-Escape-Code (fda826126).

  • Der Eintritt in den DFU-Bootloader erzwingt nun, dass der Bootloader bei V2-Protokoll-Firmware resident bleibt, mit einer Versionserkennung, die bei älteren Bootloadern (<1.0.2), die beim Erzwingen hängenbleiben könnten, auf einen einfachen Reset zurückfällt (975857221).

  • ST-Objekterkennungs-Modellordner wurden umbenannt und neu organisiert (st_yolo_lc_v1 zu yolo_lc, tiny_yolo_v2 zu yolo_v2, yolov8n-Personenmodelle zu schlicht größenbenannten Dateien) und die großen tiny_yolo_v2 int8-Varianten wurden entfernt (34240cc3c).

  • Das serielle Timing wird nun über die protocol-Override-Schlüssel der Firmware-settings.json eingestellt (overrideReadTimeout, overrideReadStallTimeout, overridePerCommandWait und die V2-Schlüssel overrideCRC/overrideSEQ/overrideACK) anstatt über Kommandozeilen-Flags zur Startzeit (019d8bf1d).

  • Das Zeilenlängenlimit des Python-Language-Servers wurde für flake8 und pycodestyle auf 120 Spalten gesetzt, sodass lange Zeilen nicht mehr beim Standardwert von 79 markiert werden (dabb82062).

  • Der mitgelieferte Satz an Machine-Learning-Modellen wurde reduziert, indem die Qualcomm-Modellsammlung und google/mobilenet_v1 nach models_unused verschoben wurden, um den Installer zu verkleinern (c44ddba20).

Fehlerbehebungen

  • Die Fortschrittsdialoge für Firmware-Download und Ressourcen-Update wurden mit QPointer-Schutz absturzsicher gemacht, sodass sie keinen gelöschten Dialog mehr verwenden, falls dieser mitten im Download geschlossen wird (f3ce4dc75).

  • Das Laufwerks-Scanning sucht nun weiter, bis das USB-Laufwerk der Kamera gefunden ist, und löscht veraltete Laufwerkseinträge beim Trennen, wodurch der vorherige Einmal-Timer-Hack entfernt wird (a31d41b4e).

  • Mehrere Verbindungs- und serielle Korrekturen: versteckte Sensoren (z. B. SoftCSI) überladen den angezeigten Sensortyp nicht mehr, ein Windows-Serial-Keep-Alive-Timer verhindert USB-Stillstände, Start startet ein bereits laufendes Skript nicht mehr neu, und der Kamerakanal wird beim Schließen des Ports sauber getrennt (a8e467be6).

  • Die Profiler-Ansicht hat ihre Auswahl der PMU-Ereigniszähler pro Spalte (ankreuzbare Ereignismenüs) und den gespeicherten Zähler-/Kopfzeilen-Zustand wiederhergestellt, die vorübergehend deaktiviert waren (40c679e90).

Plattform- und Tool-Unterstützung

  • Qt Creator Basis: 14.0.2.

  • Mitgelieferte Firmware: aktualisiert von 4.7.0 auf 4.8.1, mit Neukompilierung der Firmware für OPENMV2/3/4/4P/PT, OPENMV_N6, OPENMV_AE3, OPENMV_RT1060 und die Arduino GIGA/Nicla Vision/Portenta H7 Platinen (2657818ca).

  • Der Protokollversions-Handshake unter macOS für RT1062- und AE3-Platinen wurde behoben, indem die Mehrfach-Kommando-USB-Übertragung in USBDBG_LEN-große Stücke aufgeteilt wurde, die diese Platinen verarbeiten können (6b9d5f842).

  • Das mitgelieferte Windows-Treiberpaket wurde überarbeitet: signierte .cat/.inf-Treiberdateien pro Platine (AE3, H7, H7Plus, M4, M7, N6, Pico/PT, RT1062) wurden hinzugefügt und die CDC-Seriell-Treiber in einen neuen openmvcdc-Ordner mit einem dpinst-basierten Auto-Installer verschoben (439557829, ba3b01bfb).

  • Unterstützung für ältere MT9V032 Kamerasensor-Revisionen wurde hinzugefügt, indem die Sensor-IDs 0x1311 und 0x1312 (neben der bestehenden 0x1313) als MT9V0X2 registriert wurden (eaaa624e3).

Breaking Changes

Diese Version enthält keine Brüche bei der Skripting-API, aber es gibt einige für den Benutzer sichtbare Workflow-Änderungen:

  • Das Speichern eines Skripts wirft das USB-Laufwerk der Kamera nicht mehr aus oder hebt dessen Einbindung auf. Die IDE schreibt nun die Volume-Puffer an Ort und Stelle zurück, sodass das Gerät nach einem Speichervorgang eingebunden bleibt.

  • Die seriellen Flags zur Startzeit -override_read_timeout (Standard 5000 ms), -override_read_stall_timeout (Standard 1000 ms) und -override_per_command_wait (Standard 1 ms, 2 ms unter macOS) wurden entfernt; das serielle Timing wird nun über die protocol-Override-Schlüssel in der Firmware-settings.json konfiguriert (019d8bf1d).

  • Mitgelieferte Bootloader werden nun nur noch als .bin ausgeliefert; die .dfu-Firmware- und Bootloader-Dateien pro Platine wurden entfernt.