v5.1.0#
v5.1.0 ist ein Feature-Release. Der Bereich unter dem Framebuffer wächst von einem Histogramm zu einem Satz von Live-Ansichten – Board-Info, Speicher, Statistiken und die neue Ansicht Kanäle, die die von einem Skript veröffentlichten Werte in Widgets, Diagramme, Spektren und Tiefenkarten verwandelt und sie in Dateien aufzeichnet –, der Framebuffer erhält eine Quellenauswahl für Kameras mit mehreren Sensoren, die IDE lernt, Drittanbieter-Repositorys mit Boards, Firmware, Beispielen, Modellen und Stubs zu laden, und Videoaufzeichnungen wechseln zu H.264. Neue Boards und Sensoren werden unterstützt, die Firmware-Werkzeuge wurden durch ein vollständiges Audit jeder Änderung seit v5.0.0 gehärtet, und eine Handvoll Verhaltensweisen wurde aus OpenMV Studio übernommen. Es basiert auf Qt Creator 14.0.2 und enthält Firmware v5.0.1.
Highlights#
Bereichsansichten – die Titelleiste des Histogrammbereichs erhält einen Auswahlschalter, der den Bereich zwischen den Ansichten Histogramm, Board-Info (Hardware, Versionen und Fähigkeiten der verbundenen Kamera), Speicher (Live-Diagramme des MicroPython-Heaps und jedes UMA-Pools, mit Spitzenwertverfolgung), Statistiken (Paket-, Fehler- und Kanal-Ereigniszähler des Debug-Protokolls) und Kanäle umschaltet.
Kanäle-Ansicht – ein Skript kann benannte Kanäle mit Daten und Steuerelementen über das Debug-Protokoll veröffentlichen, und die IDE stellt sie live dar: Labels, Schalter, Schieberegler, Drehfelder, Optionsfelder, Textfelder, Auswahlfelder, Schaltflächen und Textblöcke, die zurück zur Kamera schreiben; Wellenformdiagramme mit Verschieben, Zoom, Markern, Triggern, Verlauf und einem Spektrumanalysator; und Tiefenkarten mit den kameraeigenen Paletten, drei Skalierungsfiltern und Tone-Mapping. Jedes Diagramm und jede Karte zeichnet in CSV-, WAV-, NumPy- oder Edge-Impulse-JSON- und -CBOR-Dateien auf – einschließlich eines „Alle aufzeichnen“ für einen ganzen Kanal – zum Sammeln von Trainingsdaten. Die letzten Werte bleiben auf dem Bildschirm, wenn ein Skript stoppt.
Framebuffer-Quellenauswahl – Kameras mit mehr als einem Bildsensor zeigen in der Titelleiste des Framebuffers einen Auswahlschalter, mit dem Sie wählen, welcher Sensor zur IDE streamt (oder das Streaming abschalten); der JPG-Umschalter wurde zu einem Auswahlschalter für den Streaming-Modus JPG / RAW, und der Titel des Bereichs nennt das Format, in dem jeder Frame eingetroffen ist.
Drittanbieter-Repositorys – ein Hersteller kann ein Repository mit Boards, Firmware (Release- und Entwicklungskanäle), Beispielen, Machine-Learning-Modellen und
.pyi-Stubs veröffentlichen; die IDE installiert es von einer URL oder aus einem Ordner, den ein Installer abgelegt hat, führt es mit ihren eigenen Inhalten zusammen, hält es aktuell und lässt Sie Hersteller nach Priorität ordnen. Verwaltet unter Preferences → OpenMV → Third Party Repositories.Neue Hardware – das Board OpenMV N6 Classic (einschließlich seines Bootloader-Treibers, seiner udev-Regel und seines ROM-DFU-Wiederherstellungseintrags) sowie die Sensoren FLIR Lepton 3.1R und UW.
H.264-Aufzeichnungen – der Framebuffer-Rekorder und der Videokonverter kodieren jetzt H.264 statt MPEG-4 Part 2, mit festem Keyframe-Intervall, damit sich Aufzeichnungen sauber durchsuchen lassen, und einer auf eine ganze Zahl gerundeten Bildrate.
Audit-Korrekturen – jeder Commit seit v5.0.0 wurde zweimal auf Regressionen geprüft, mit besonderem Augenmerk auf die Firmware-, Bootloader- und ROMFS-Pfade; die gefundenen Fehler sind in dieser Version behoben (siehe Fehlerbehebungen).
Neue Funktionen#
Board-Info-, Speicher- und Statistik-Ansichten im Histogrammbereich, mit randloser Gestaltung im dunklen und im hellen Theme und auswählbarem Text (cdea506655b, 7629a588db9, e21bd94a395, b55dcc412f6, fc744920011, e7dc3bf0092, 448e21db0bd).
Kanäle-Ansicht – das vollständige Steuerelement-Vokabular (Label, Schalter, Schieberegler, Drehfeld, Optionsfeld, Textfeld, Auswahlfeld, Schaltfläche, Text), Wellenformdiagramme mit Spektrumanalysator (Hann-, Hamming-, Blackman- und Rechteckfenster, Mittelung, Spitzenwert halten, logarithmische Frequenz), Trigger auf steigende und fallende Flanken, Marker, Verlauf und Plot-Export; Tiefenkarten mit den Paletten Depth, Rainbow, Ironbow und Event, Nearest-/Bilinear-/Bikubisch-Skalierung, Tone-Mapping mit Skript-Bereich / Auto-Bereich / Angleichen, einer Pause-Schaltfläche, Hover-Anzeige, einer Kopfzeile mit dem deklarierten Bereich und Min / Max / Mittelwert des Frames sowie Bild speichern; Aufzeichnung in CSV, WAV, NumPy und Edge Impulse JSON / CBOR mit optionalem Edge-Impulse-Label, Aufteilung in Teile bei langen Aufnahmen und Alle aufzeichnen; ein Channel-Polling-Intervall in den Protokolleinstellungen (5b4f31a6b3a, d1252a24f14, bfd7fd72f94, d1c2ab02a5f, 4808b8ffe26, dfc323b4ec7, 61c077df9a5, 8c2cd6cf1f1, 1534225fcee).
Framebuffer-Quellenauswahl und Formatanzeige – wählen Sie bei Kameras mit mehreren Sensoren den streamenden Sensor, oder Aus; das empfangene Frame-Format wird im Titel des Bereichs angezeigt; der JPG-Umschalter ist jetzt ein Auswahlschalter JPG Mode / RAW Mode (e76284bde9e, c2baff8d60c, afece31cb6a, 76448d7b9dd).
Drittanbieter-Repositorys – dateigesteuerte Firmware-Repositorys, die mit der eingebauten Board-Liste zusammengeführt werden, Netzwerk-Updates mit einer Preferences-Seite, ein Entwicklungs-Firmware-Kanal pro Hersteller, benutzergesteuerte Herstellerpriorität, Herstellerbeispiele zusammengeführt in File → Examples, Herstellermodelle zusammengeführt in den Model Zoo, benutzerdefinierte
.pyi-Stubs für die Code-Vervollständigung, Überschreibungswarnungen, wenn ein Hersteller eingebaute Inhalte verdeckt, und eine Lizenzprüfung für Hersteller-Boards (21a63a74949, b5512efe949, b15afdac479, 1fe693f0b61, ae11ffeffc4, cf47a37ba65, 100bdeb530b, 252924901f7, c75a81f2a4a, 3e7f077a738, 5c5aa3e657c, e3f36adbdcb, b04da8ee888).Kommentarentfernung vor dem Ausführen – Kommentare werden aus dem Skript entfernt, bevor es an die Kamera gesendet wird, was bei kommentarreichen Skripten Kamera-RAM spart; die Zeilen bleiben erhalten, sodass die Zeilennummern eines Tracebacks weiterhin zum Editor passen (677546ee033).
Inline-Fehlermarkierung – wenn ein Skript mit einer Exception abbricht, markiert der Editor die betreffende Zeile rot mit dem Fehlertext daneben; die Markierung verschwindet, wenn Sie die Datei bearbeiten, erneut ausführen oder die Verbindung trennen (677546ee033).
Drag-and-drop auf den ROMFS-Editor – vom Desktop abgelegte Dateien durchlaufen dieselbe Skriptkompilierung und Modellkonvertierung wie Add File, in den Ordner, auf dem sie abgelegt wurden (677546ee033).
Verbesserungen an Editor, Terminal und UI#
Histogramme werden aus vollem 8-Bit-RGB berechnet statt aus den RGB565-Tabellen der Kamera, mit einer gemeinsamen Plot-Palette, alpha-geblendeten Füllungen und gedämpfteren Gitterlinien (238e099373e, f126e8f34c0, cebbf0c9e2c).
Verborgene Bereichsansichten verrichten keine Arbeit – das Histogramm überspringt seine Berechnung und Neuzeichnung, während eine andere Ansicht angezeigt wird oder der Bereich eingeklappt ist, und holt nach, sobald es wieder sichtbar ist; Neuzeichnungen mit Nullgröße werden unterdrückt (c8730df8399).
Beispielskripte öffnen sich mit einer Leerzeile nach den Imports, und die mitgelieferten Beispiele wurden auf dieselbe Weise neu formatiert (1f88f617ec5, 87c8f7d41c7).
Code-Vervollständigung zeigt private Namen – der eingebettete Sprachserver filtert
_-präfixierte Member nicht mehr heraus, die die Module der Kamera verwenden (23ab5b38bb3).macOS – die Gruppenfelder der Protokollsteuerung in den Einstellungen sind nicht mehr gequetscht, Item-Views sind gegen Cocoa-Accessibility-Abstürze abgesichert, Apple-Silicon-Benutzer werden vor der Sicherheitseinstellung „Allow accessories to connect“ gewarnt, und RT1062-Benutzer werden gewarnt, wenn Input Monitoring nicht gewährt ist (Firmware-Updates benötigen es); beide Warnungen erscheinen nach dem Verbinden (7d7b69367bf, 69fe7ffc913, 742cb4d8c0b, 8890eb77834, 89646292e8d).
Tastenkürzel im Viewer-Modus – verirrte Tastenkürzel, die den Viewer-Modus (und die reguläre IDE) störten, wurden deaktiviert, und der Viewer-Modus schreibt seine gelöschten Tastenkürzel nicht mehr in die Einstellungen der vollständigen IDE (251b422f642, 0d153671c1d).
Unbekannte Sensoren werden in der Statusleiste mit ihrer Chip-ID benannt, damit sie identifiziert und in die Sensortabelle aufgenommen werden können (df561775b54).
Firmware, Boards und Werkzeuge#
Unterstützung für OpenMV N6 Classic: Board-Eintrag, Windows-DFU-Treiber und Installer-Codes, Linux-udev-Regel (4ff4a1f239d, bdd6c96ef47, 25fcdc13c6a, 7730b699f60).
Unterstützung für die Sensoren FLIR Lepton 3.1R und UW (12c03024f3c).
IMX-Bootloader-Übergabe – ein vorab scharfgeschalteter Catcher beansprucht den Bootloader des RT1062 in dem Moment, in dem er enumeriert wird, und ersetzt die Spawn-pro-Probe-Schleife, die auf einem ausgelasteten Host das Ein-Sekunden-Fenster verpassen konnte (3d8b63c6859).
Firmware-Zips – Load Custom Firmware akzeptiert Nur-ROMFS-Bundles und Bundles ohne ROMFS, und benutzerdefinierte oder Entwicklungs-Firmware wird für IMX-Boards bereitgestellt, die bereits im Bootloader-Modus sitzen (b6f16f54c1a, 94d5fd5c30e).
Private Staging-Verzeichnisse für Entwicklungs- / benutzerdefinierte Firmware, ROMFS-Editor-Abbilder und temporäre Dateien der Video-Tools, sodass veraltete Dateien anderer Prozesse nie versehentlich geflasht oder konvertiert werden können (939154501af, a288fe712e7, 5c8c717adec).
H.264-Video – Aufzeichnungen und Konvertierungen kodieren H.264 mit festem Keyframe-Intervall; eine aufgezeichnete Bildrate nahe einer ganzen Zahl wird auf diese gerundet, sodass Player 30 FPS statt 29,97 melden (6ad1968341d, d62c110e155, bab488a54fe).
Prüfsumme des Ressourcen-Zips – das Ressourcen-Update der IDE wird gegen eine neben der Version veröffentlichte SHA-256 geprüft (677546ee033).
Ehrlicher User-Agent bei Anfragen an die Server von OpenMV (c4279c0213e).
Fehlerbehebungen#
Zwei Prüfdurchgänge über jede Änderung seit v5.0.0 haben Folgendes gefunden und behoben (ccea3b17d01, 71826200611):
Firmware- und Bootloader-Pfade – ein Load-Custom-Firmware-Zip auf ein Board, das sich bereits im Bootloader-Modus befand, flashte stattdessen den Release-Build; der Alif-Wiederherstellungspfad lehnt jetzt einen benutzerdefinierten Build ab, statt das Release zu flashen; ein gebricktes N6 Classic wurde mit dem gewöhnlichen N6-Bootloader und der N6-Firmware repariert; ein veralteter Drittanbieter-Ressourcenstamm konnte ein gebricktes eingebautes Board zu Herstellerdateien lenken; der IMX-Catcher konnte nach einem Absturz mit dem Flashen fortfahren, ignorierte Cancel beim Warten auf den Flashloader und ließ den seriellen Port nach einem Abbruch während des Scharfschaltens offen; der N6-Classic-Bootloader hatte keine udev-Regel; die akzeptierten Exit-Codes des Windows-Treiberinstallers enthielten einen Tippfehler.
ROMFS-Editor – Cancel während eines ROMFS-Lesevorgangs meldete „Failed to unpack ROMFS!“ und wartete zehn Sekunden auf eine Kamera, die noch im Bootloader war; Cancel während eines Schreibvorgangs endete stillschweigend mit einem möglicherweise unvollständigen ROMFS; ein dfu-util-Fehler während eines Schreibvorgangs wurde als Erfolg gemeldet; Cancel im Folgedialog verwarf jede Änderung; Auto Reconnect konnte sich unter dem geöffneten Editor verbinden; Edit ROMFS trennte und verband bei bestehender Verbindung unnötig zuerst neu; temporäre Konverter-Verzeichnisse leckten. Nach einem abgebrochenen Vorgang wird der Bootloader jetzt aufgefordert, DFU zu verlassen, sodass die Kamera von selbst zurückkommt.
Drittanbieter-Repositorys – Zip-Einträge werden vor dem Entpacken validiert (kein Path Traversal, keine Symlinks), Teil-Installationen und Neuinstallationen behalten die alte Kopie, bis die neue an Ort und Stelle ist, ein abgelehntes Hersteller-Board reißt das eingebaute Board, das es überlappte, nicht mehr mit, eine fehlende PID-Maske passte zur Laufzeit auf nichts, und Basis-Indexzeilen für Beispiele / Modelle fangen gleichnamige Herstellerdateien nicht mehr ein.
Framebuffer und Sensoren – der GENX320-Event-Sensor (Chip-ID über
0x80000000) deaktivierte den Framebuffer; eine gespeicherte Sensorauswahl überlebte keinen Neustart; die alte Einstellung „disable frame buffer“ wurde nicht migriert; der Stream-Source-Befehl ist an die Protokollversion gebunden; die Fokusmetrik fror ein, während die Histogrammseite verborgen war; das Frame-Format blieb nach dem Trennen im Titel stehen.Verbindungsablauf – die macOS-Warnungen konnten das „Yes“ der Firmware-Upgrade-Abfrage verschlucken; der Model Zoo öffnete sich immer eingeklappt, ohne die Auswahl wiederherzustellen; der Einzellaufwerk-Fallback für das Laufwerk der Kamera war unerreichbar, wenn die Kamera länger als zehn Sekunden eingesteckt war.
Kanäle-Ansicht und Rekorder – feindselige Frame-Größen konnten die Größenprüfungen überlaufen lassen; die Edge-Impulse-Rekorder allokierten bei jedem Chunk neu und sind jetzt auf 64 MB pro Teil begrenzt; ein Schema mit Trennzeichen in Namen konnte über das Ende der Record-Liste hinaus indizieren; doppelte Records ließen einen laufenden Rekorder verwaisen; Schreibvorgänge werden verworfen, solange die Ansicht eingefroren ist; die Kanalliste wird jetzt bei Unregister- und Soft-Reboot-Ereignissen aktualisiert.
Video – eine ungerade, vom Benutzer eingegebene Breite brach die H.264-Kodierung auf den libx264-Builds; abgebrochene oder fehlgeschlagene
.bin-Konvertierungen hinterließen Frames, die der nächste Lauf mit einbezog.Protokoll – das Lese-Flush, das vor der Protokollerkennung läuft, ist begrenzt (Issue #336) (77cd13af76f); die Zuordnung des Kameralaufwerks verliert das Rennen gegen andere Volumes nicht mehr (9877480c304).
Eine
-Wdeprecated-copy-Warnung im Wrapper für die Serial-Port-Informationen (abcfaa8af5e).
Lokalisierung#
Alle 37 Kataloge wurden für die Bereichsansichten, die Kanäle-Ansicht und ihre Tiefenkarte sowie jeden neuen String dieser Version aktualisiert (1b71f243733, dc13c23ed81, a7debafdafa, 173a57422f7).
Plattform- und Tool-Unterstützung#
Qt-Creator-Basis: 14.0.2.
OpenMV IDE Version auf 5.1.0 angehoben.
Mitgelieferte Firmware: v5.0.1 (siehe das Firmware-Changelog).
Neue Boards und Sensoren: OpenMV N6 Classic; FLIR Lepton 3.1R und UW.
Breaking Changes#
Keine für bestehende Projekte. Der JPG-Umschalter in der Titelleiste des Framebuffers ist jetzt ein Auswahlschalter JPG Mode / RAW Mode, und seine alte Einstellung „disable frame buffer“ wird in den Eintrag Aus der neuen Quellenauswahl migriert. Kommentare werden aus Skripten entfernt, bevor sie laufen; ein Skript, das darauf angewiesen ist, zur Laufzeit seinen eigenen Quelltext zu lesen, sollte das nicht tun.