v5.1.0#
v5.1.0 is een functierelease. Het paneel onder de framebuffer groeit van een histogram uit tot een set live weergaven – Board Info, Memory, Statistics en de nieuwe weergave Channels die de waarden die een script publiceert omzet in widgets, grafieken, spectra en dieptekaarten en ze naar bestanden opneemt – de framebuffer krijgt een bronkeuzelijst voor camera’s met meerdere sensoren, de IDE leert repositories van derden met boards, firmware, voorbeelden, modellen en stubs te laden, en video-opnamen schakelen over op H.264. Nieuwe boards en sensoren worden ondersteund, de firmwaregereedschappen zijn verstevigd door een volledige audit van elke wijziging sinds v5.0.0, en een handvol gedragingen is overgenomen uit OpenMV Studio. Het is gebouwd op Qt Creator 14.0.2 en bevat firmware v5.0.1.
Hoogtepunten#
Paneelweergaven – de titelbalk van het histogrampaneel krijgt een keuzelijst die het paneel schakelt tussen de weergaven Histogram, Board Info (de hardware, versies en mogelijkheden van de verbonden camera), Memory (live grafieken van de MicroPython-heap en elke UMA-pool, met piekregistratie), Statistics (de pakket-, fout- en per-kanaal-gebeurtenistellers van het debugprotocol) en Channels.
Channels-weergave – een script kan benoemde kanalen met gegevens en bedieningselementen publiceren over het debugprotocol, en de IDE geeft ze live weer: labels, schakelaars, schuifregelaars, spinboxen, keuzerondjes, tekstvelden, keuzelijsten, drukknoppen en tekstblokken die terugschrijven naar de camera; golfvormgrafieken met pannen, zoomen, markers, triggers, geschiedenis en een spectrumanalyser; en dieptekaarten met de eigen paletten van de camera, drie schaalfilters en tone mapping. Elke grafiek of kaart neemt op naar CSV-, WAV-, NumPy- of Edge Impulse JSON- en CBOR-bestanden – inclusief een Record All voor een heel kanaal – voor het verzamelen van trainingsdata. De laatste waarden blijven op het scherm wanneer een script stopt.
Framebuffer-bronkeuzelijst – camera’s met meer dan één beeldsensor tonen een keuzelijst in de titelbalk van de framebuffer om te kiezen welke sensor naar de IDE streamt (of om het streamen uit te schakelen), de JPG-schakelaar werd een JPG / RAW-streamingmoduskeuzelijst, en de titel van het paneel noemt het formaat waarin elk frame is binnengekomen.
Repositories van derden – een leverancier kan een repository publiceren met boards, firmware (release- en development-kanalen), voorbeelden, machine-learningmodellen en
.pyi-stubs; de IDE installeert deze vanaf een URL of uit een map die een installatieprogramma heeft neergezet, voegt deze samen met zijn eigen inhoud, houdt deze bijgewerkt en laat je leveranciers op prioriteit ordenen. Beheerd via Preferences → OpenMV → Third Party Repositories.Nieuwe hardware – het OpenMV N6 Classic-board (inclusief zijn bootloader-stuurprogramma, udev-regel en ROM-DFU-herstelitem) en de FLIR Lepton 3.1R- en UW-sensoren.
H.264-opnamen – de framebuffer-recorder en de videoconverter coderen nu H.264 in plaats van MPEG-4 Part 2, met een vast keyframe-interval zodat opnamen netjes doorzoekbaar zijn, en met de framesnelheid afgerond op een geheel getal.
Auditcorrecties – elke commit sinds v5.0.0 is twee keer beoordeeld op regressies, met bijzondere aandacht voor de firmware-, bootloader- en ROMFS-paden; de gevonden defecten zijn in deze release verholpen (zie bugfixes).
Nieuwe functies#
Board Info-, Memory- en Statistics-weergaven in het histogrampaneel, met randloze vormgeving in zowel het donkere als het lichte thema en selecteerbare tekst (cdea506655b, 7629a588db9, e21bd94a395, b55dcc412f6, fc744920011, e7dc3bf0092, 448e21db0bd).
Channels-weergave – de volledige verzameling bedieningselementen (label, toggle, slider, spin box, radio, line edit, select, push button, text), golfvormgrafieken met een spectrumanalyser (Hann-, Hamming-, Blackman- en rechthoekige vensters, middeling, peak hold, logaritmische frequentie), triggers op stijgende en dalende flank, markers, geschiedenis en plotexport; dieptekaarten met de paletten Depth, Rainbow, Ironbow en Event, nearest / bilineaire / bicubische schaling, tone mapping met Script Range / Auto Range / Equalize, een pauzeknop, uitlezing bij aanwijzen, een kop met het gedeclareerde bereik en de min / max / gemiddelde van het frame, en Save Image; opnemen naar CSV, WAV, NumPy en Edge Impulse JSON / CBOR met een optioneel Edge Impulse-label, splitsing in delen voor lange opnamen, en Record All; een Channel Polling-interval in de protocolvoorkeuren (5b4f31a6b3a, d1252a24f14, bfd7fd72f94, d1c2ab02a5f, 4808b8ffe26, dfc323b4ec7, 61c077df9a5, 8c2cd6cf1f1, 1534225fcee).
Framebuffer-bronkeuzelijst en formaatuitlezing – kies de streamende sensor op camera’s met meerdere sensoren, of Off; het ontvangen frameformaat wordt in de titel van het paneel getoond; de JPG-schakelaar is nu een JPG Mode / RAW Mode-keuzelijst (e76284bde9e, c2baff8d60c, afece31cb6a, 76448d7b9dd).
Repositories van derden – bestandsgestuurde firmwarerepositories samengevoegd met de ingebouwde boardlijst, netwerkupdates met een Preferences-pagina, een development-firmwarekanaal per leverancier, door de gebruiker bepaalde leveranciersprioriteit, leveranciersvoorbeelden samengevoegd in File → Examples, leveranciersmodellen samengevoegd in de Model Zoo, aangepaste
.pyi-stubs doorgegeven aan de codeaanvulling, waarschuwingen bij overschrijving wanneer een leverancier ingebouwde inhoud overschaduwt, en een licentiecontrole voor leveranciersboards (21a63a74949, b5512efe949, b15afdac479, 1fe693f0b61, ae11ffeffc4, cf47a37ba65, 100bdeb530b, 252924901f7, c75a81f2a4a, 3e7f077a738, 5c5aa3e657c, e3f36adbdcb, b04da8ee888).Commentaar verwijderen vóór Run – commentaar wordt uit het script verwijderd voordat het naar de camera wordt gestuurd, wat camera-RAM bespaart bij scripts met veel commentaar; regels blijven behouden, zodat regelnummers in tracebacks nog steeds overeenkomen met de editor (677546ee033).
Inline foutmarkering – wanneer een script afsterft met een uitzondering, markeert de editor de regel die het probleem veroorzaakt in rood met de fouttekst ernaast; de markering verdwijnt wanneer je het bestand bewerkt, opnieuw uitvoert of de verbinding verbreekt (677546ee033).
Slepen en neerzetten op de ROMFS-editor – bestanden die vanaf het bureaublad worden neergezet doorlopen dezelfde scriptcompilatie en modelconversie als Add File, in de map waarop ze zijn neergezet (677546ee033).
Verbeteringen aan editor, terminal en UI#
Histogrammen worden berekend uit volledige 8-bits RGB in plaats van de RGB565-tabellen van de camera, met een gedeeld plotpalet, alpha-gemengde vullingen en gedimde rasterlijnen (238e099373e, f126e8f34c0, cebbf0c9e2c).
Verborgen paneelweergaven doen geen werk – het histogram slaat zijn berekening en replots over terwijl een andere weergave wordt getoond of het paneel is ingeklapt, en haalt de achterstand in wanneer het weer wordt getoond; replots met nulgrootte worden onderdrukt (c8730df8399).
Voorbeeldscripts openen met een lege regel na de imports, en de meegeleverde voorbeelden zijn op dezelfde manier opnieuw opgemaakt (1f88f617ec5, 87c8f7d41c7).
Codeaanvulling toont private namen – de ingebouwde taalserver filtert leden met een
_-voorvoegsel, die de modules van de camera gebruiken, niet langer weg (23ab5b38bb3).macOS – de groepsvakken van de protocolbediening in de voorkeuren zijn niet langer krap, itemweergaven zijn beschermd tegen Cocoa-toegankelijkheidscrashes, gebruikers van Apple Silicon worden gewaarschuwd voor de beveiligingsinstelling “Allow accessories to connect”, en RT1062-gebruikers worden gewaarschuwd wanneer Input Monitoring niet is toegestaan (firmware-updates hebben dit nodig); beide waarschuwingen worden na het verbinden getoond (7d7b69367bf, 69fe7ffc913, 742cb4d8c0b, 8890eb77834, 89646292e8d).
Sneltoetsen in viewer-modus – verdwaalde sneltoetsen die de viewer-modus (en de gewone IDE) braken zijn uitgeschakeld, en de viewer-modus slaat zijn gewiste sneltoetsen niet langer op in de instellingen van de volledige IDE (251b422f642, 0d153671c1d).
Onbekende sensoren worden benoemd op chip-id in de statusbalk, zodat ze kunnen worden geïdentificeerd en toegevoegd aan de sensortabel (df561775b54).
Firmware, boards en gereedschappen#
OpenMV N6 Classic-ondersteuning: board-item, Windows DFU-stuurprogramma en installatiecodes, Linux udev-regel (4ff4a1f239d, bdd6c96ef47, 25fcdc13c6a, 7730b699f60).
FLIR Lepton 3.1R en UW sensorondersteuning (12c03024f3c).
IMX-bootloaderoverdracht – een vooraf geactiveerde catcher claimt de bootloader van de RT1062 op het moment dat deze enumereert, ter vervanging van de spawn-per-probe-lus die het venster van één seconde kon missen op een zwaarbelaste host (3d8b63c6859).
Firmware-zips – Load Custom Firmware accepteert bundels met alleen romfs en bundels zonder ROMFS, en aangepaste of development-firmware wordt klaargezet voor IMX-boards die al in bootloader-modus staan (b6f16f54c1a, 94d5fd5c30e).
Privé-stagingmappen voor development-/aangepaste firmware, ROMFS-editor-images en tijdelijke bestanden van de videogereedschappen, zodat verouderde bestanden van andere processen nooit per ongeluk geflasht of geconverteerd kunnen worden (939154501af, a288fe712e7, 5c8c717adec).
H.264-video – opnamen en conversies coderen H.264 met een vast keyframe-interval; een opgenomen framesnelheid dicht bij een geheel getal wordt daarop afgerond, zodat spelers 30 FPS melden in plaats van 29,97 (6ad1968341d, d62c110e155, bab488a54fe).
Checksum van de resources-zip – de resources-update van de IDE wordt geverifieerd tegen een SHA-256 die naast de versie wordt gepubliceerd (677546ee033).
Eerlijke User-Agent bij verzoeken aan de servers van OpenMV (c4279c0213e).
Bugfixes#
Twee beoordelingsrondes over elke wijziging sinds v5.0.0 hebben het volgende gevonden en verholpen (ccea3b17d01, 71826200611):
Firmware- en bootloaderpaden – een Load Custom Firmware-zip op een board dat al in bootloader-modus stond flashte in plaats daarvan de release-build; het Alif-herstelpad weigert nu een aangepaste build in plaats van de release te flashen; een onbruikbare N6 Classic werd hersteld met de gewone N6-bootloader en -firmware; een verouderde root van bronnen van derden kon een onbruikbaar ingebouwd board naar leveranciersbestanden sturen; de IMX-catcher kon doorgaan met flashen nadat hij was gecrasht, negeerde Cancel tijdens het wachten op de flashloader en liet de seriële poort open na een annulering tijdens het activeren; de N6 Classic-bootloader had geen udev-regel; de geaccepteerde exitcodes van het Windows-stuurprogramma-installatieprogramma bevatten een typefout.
ROMFS-editor – Cancel tijdens het lezen van een ROMFS meldde “Failed to unpack ROMFS!” en wachtte tien seconden op een camera die nog in de bootloader zat; Cancel tijdens een schrijfbewerking eindigde stilzwijgend met een mogelijk gedeeltelijke ROMFS; een dfu-util-fout tijdens een schrijfbewerking werd als succes gemeld; Cancel in het vervolgdialoogvenster gooide elke bewerking weg; Auto Reconnect kon verbinding maken onder de geopende editor; Edit ROMFS terwijl verbonden verbrak eerst onnodig de verbinding en maakte deze opnieuw; tijdelijke mappen van de converter lekten. Na een geannuleerde bewerking wordt de bootloader nu gevraagd DFU te verlaten, zodat de camera vanzelf terugkomt.
Repositories van derden – zip-items worden gevalideerd vóór het uitpakken (geen path traversal of symlinks), deelinstallaties en herinstallaties behouden de oude kopie totdat de nieuwe op zijn plaats staat, een afgewezen leveranciersboard neemt het ingebouwde board waarmee het overlapte niet langer mee omlaag, een ontbrekend PID-masker kwam tijdens runtime met niets overeen, en basisrijen van de voorbeeld- / modelindex vangen niet langer gelijknamige leveranciersbestanden.
Framebuffer en sensoren – de GENX320-eventsensor (chip-id boven
0x80000000) schakelde de framebuffer uit; een opgeslagen sensorselectie overleefde een herstart niet; de oude voorkeur “disable frame buffer” werd niet gemigreerd; het stream-source-commando is afhankelijk gemaakt van de protocolversie; de scherpstelmaatstaf bevroor terwijl de histogrampagina verborgen was; het frameformaat bleef na het verbreken van de verbinding in de titel hangen.Verbindingsproces – de macOS-waarschuwingen konden de “Yes” van de firmware-upgradeprompt opslokken; de Model Zoo opende altijd ingeklapt zonder herstelde selectie; de fallback naar één schijf voor de schijf van de camera was onbereikbaar wanneer de camera langer dan tien seconden was aangesloten.
Channels-weergave en recorder – vijandige framegroottes konden de groottecontroles doen overlopen; de Edge Impulse-recorders realloceerden bij elk chunk en zijn nu begrensd op 64 MB per deel; een schema met scheidingstekens in namen kon voorbij de recordlijst indexeren; dubbele records lieten een lopende recorder verweesd achter; schrijfbewerkingen worden genegeerd terwijl de weergave is bevroren; de kanalenlijst wordt nu ververst bij unregister- en soft-reboot-gebeurtenissen.
Video – een oneven door de gebruiker ingevoerde breedte brak de H.264-codering op de libx264-builds; geannuleerde of mislukte
.bin-conversies lieten frames achter die de volgende run meenam.Protocol – de leesflush die vóór de protocoldetectie draait is begrensd (issue #336) (77cd13af76f); de koppeling tussen camera en schijf verliest de race tegen andere volumes niet meer (9877480c304).
Een
-Wdeprecated-copy-waarschuwing in de wrapper voor seriëlepoortinformatie (abcfaa8af5e).
Lokalisatie#
Alle 37 catalogi zijn bijgewerkt voor de paneelweergaven, de Channels-weergave en zijn dieptekaart, en elke nieuwe tekst in deze release (1b71f243733, dc13c23ed81, a7debafdafa, 173a57422f7).
Platform- en gereedschapsondersteuning#
Qt Creator-basis: 14.0.2.
OpenMV IDE-versie verhoogd naar 5.1.0.
Meegeleverde firmware: v5.0.1 (zie de firmware-changelog).
Nieuwe boards en sensoren: OpenMV N6 Classic; FLIR Lepton 3.1R en UW.
Ingrijpende wijzigingen#
Geen voor bestaande projecten. De JPG-schakelaar in de titelbalk van de framebuffer is nu een JPG Mode / RAW Mode-keuzelijst, en de oude instelling “disable frame buffer” wordt gemigreerd naar het Off-item van de nieuwe bronkeuzelijst. Commentaar wordt uit scripts verwijderd voordat ze draaien; een script dat erop vertrouwt tijdens runtime zijn eigen brontekst te lezen, zou dat niet moeten doen.