v4.8.1

v4.8.1 repose sur Qt Creator 14.0.2 et s’articule autour d’un nouveau protocole de caméra OpenMV V2 à haute fiabilité, d’un Code Profiler intégré et d’un flux d’enregistrement qui maintient la caméra montée au lieu de l’éjecter. Le micrologiciel fourni et l’ensemble complet des exemples sont mis à jour en 4.8.1. Il n’y a aucune rupture de l’API de script, mais le comportement « l’enregistrement n’éjecte plus » et la suppression de quelques indicateurs série au lancement sont des changements de flux de travail visibles par l’utilisateur.

Points forts

  • OpenMV Protocol V2 est une nouvelle pile caméra à haute fiabilité (OMVCamera/OMVTransport/OMVDebug) avec CRC32, séquencement, ACK/NAK, retransmission, événements et fragmentation. Elle est négociée automatiquement à la connexion et pilote la réinitialisation, le démarrage, le streaming, l’exécution de script et les statistiques.

  • Code Profiler est une nouvelle fenêtre (Window > Show Code Profiler) qui interroge les enregistrements de profilage par fonction depuis la caméra et affiche les appels, les microsecondes min/max/total/moyenne (μs), les cycles moyens, le pourcentage et les compteurs d’événements dans un tableau triable.

  • Save in place n’éjecte plus le lecteur de la caméra ; l’IDE écrit désormais main.py et vide le volume sur le disque afin que le périphérique reste monté.

  • Multi-sensor detection signale chaque caméra présente sur une carte, affichée dans la barre d’état sous la forme Sensors: X, Y avec le capteur principal listé en premier.

  • Dynamic Frame Reading recalcule la résolution de streaming brut la mieux adaptée par format de pixel et reconfigure automatiquement le flux.

  • Bundled firmware and examples sont mis à jour en 4.8.1 sur toutes les cartes, ajoutant de nouveaux exemples de caméra événementielle GenX320, de ML TensorFlow, d’OLED Alif et de shield LCD/Touch-LCD.

Nouvelles fonctionnalités

  • Ajout du protocole de communication OpenMV V2 : une couche complète de transport et de transaction avec CRC32, séquencement, ACK/NAK, retransmission, événements et fragmentation, ainsi qu’une classe OMVCamera négociée automatiquement à la connexion et intégrée au pilote série (2fde9eb3f, fff1bf2ba, 8c41fcfad, 7fc7ed4bc, 84c3956af, 669039adf, a49259852, 07af1922a, 85f0c7c87, 5070cc213, e314459cc, e0367ca95, 0da2f79d0, 2b6fc9866, 534ecffbe).

  • Ajout de la fenêtre Code Profiler (Window > Show Code Profiler), qui interroge les enregistrements de profilage par fonction et affiche les appels, les microsecondes min/max/total/moyenne (μs), les cycles moyens, le pourcentage et les compteurs d’événements, résolvant les adresses en symboles via un analyseur ELF ELFIO fourni (019d3cd2c, 57cd9e1cc).

  • Ajout d’une boîte de dialogue Debug Protocol Settings affichant en direct les System Info, Host Stats et Device Stats actualisés chaque seconde, exposant les fréquences d’interrogation par canal ainsi que des contrôles d’interrogation combinée ou séparée (5220a6125, 0da2f79d0).

  • Ajout de la détection multi-capteurs : une carte comportant plus d’une caméra les signale toutes dans la barre d’état sous la forme Sensors: X, Y, le capteur principal en premier (cebc79ce7).

  • Ajout de la Dynamic Frame Reading (activée par défaut), qui recalcule la résolution de streaming brut la mieux adaptée par format de pixel (BINARY, GRAY, RGB565, ARGB8, JPEG, PNG) et reconfigure le flux (75c073bdb, 0da2f79d0).

  • Ajout du décodage du framebuffer pour les formats de pixels bruts BINARY (1 bpp monochrome) et ARGB8 (alpha 32 bits) afin que ces types d’images s’affichent désormais dans la visionneuse (dabb82062).

  • Sous Windows, Connect recherche désormais les périphériques USB signalés en erreur par le système d’exploitation et avertit avec une liste des périphériques défectueux susceptibles de bloquer la connexion (1a5beb081, 1b59cd78e).

  • Ajout d’un indicateur d’enregistrement dans la barre d’état : un bouton vert Registered ou corail Unregistered pour la caméra connectée, cliquable pour enregistrer la carte (a8c98a4b9).

  • La visionneuse de framebuffer peut désormais afficher un message texte centré envoyé par le script en cours d’exécution via un nouveau code d’échappement FB_MESSAGE au lieu d’une image (530048201).

  • Ajout de nouvelles entrées de model-zoo : modèles d’estimation de profondeur ST FastDepth (224/256/320), un modèle de pose ST head-landmarks, des modèles de main palm-detection et hand-landmarks, et un modèle de détection de visage frontal BlazeFace (551668410, 4d64556d4, fadd6c4ed, b8277bb88, a8c98a4b9).

  • Ajout d’un script d’auto-test réservé aux builds d’usine (caméra, IMU, ToF, WiFi, LAN) qui est fourni et ouvert automatiquement au lancement dans la variante usine de l’IDE (0db7fbbb0) ; la partie LAN RT1060 du test est actuellement désactivée (48370d022).

Autres changements et améliorations

  • Save in place : l’enregistrement d’un script n’éjecte plus le lecteur de la caméra ; l’IDE écrit main.py et vide le volume sur le disque (FlushFileBuffers sous Windows, syncfs sous Linux, sync_volume_np/F_FULLFSYNC sous macOS) afin que le périphérique reste monté (1614c572f, 6928b51ea, 35ed53967).

  • Les actions de la barre d’outils cliquées pendant que la caméra est occupée (désactiver le framebuffer, compresser en JPEG, enregistrer le script, configurer les réglages) sont désormais mises en file d’attente et exécutées automatiquement lorsque le périphérique est libre, au lieu d’afficher une boîte de dialogue d’erreur Busy (f4315f0a4).

  • La visionneuse de framebuffer adopte désormais par défaut l’ajustement à la vue afin que l’image se mette automatiquement à l’échelle de la fenêtre au démarrage, et le volet de sortie du terminal série est désormais affiché par défaut au démarrage (f3ce4dc75).

  • Les fichiers de modèles compilés portant l’extension .lite sont désormais reconnus partout : le filtrage et l’affichage du navigateur model-zoo, l’alignement ROMFS du micrologiciel, et les compilateurs Vela/STEdge AI émettent désormais une sortie .lite (f3ce4dc75).

  • La boîte de dialogue de compilation de modèle STEdge AI (N6) analyse et signale désormais les pourcentages d’utilisation de la RAM NPU et de la hyperRAM, et copie la sortie réseau relocalisée dans un fichier correspondant à l’extension du modèle (f3ce4dc75).

  • Le navigateur model-zoo affiche désormais la colonne Size du fichier et étire la colonne du nom pour l’ajuster, au lieu de masquer la taille (f3ce4dc75).

  • Le modèle de nouveau script a été mis à jour avec la nouvelle API du module csi et utilise par défaut la taille de trame VGA, et l’exemple Hello World fourni est passé de la taille de trame QVGA à VGA (f3ce4dc75).

  • La boîte de dialogue Convert Video a été réécrite pour utiliser la boîte de dialogue de chargement partagée avec sortie colorée, messages de succès/échec, un bouton OK-to-close et une erreur claire lorsque FFMPEG n’est pas disponible sur la plateforme (f56efc7be).

  • La visionneuse de framebuffer affiche désormais un avertissement clignotant lorsqu’une image JPEG/PNG est trop volumineuse pour être mise en tampon et envoyée, via un nouveau code d’échappement FB_BUFFER_ERROR (fda826126).

  • L’entrée du programme d’amorçage DFU force désormais le programme d’amorçage à rester résident sur le micrologiciel à protocole V2, avec une détection de version qui se replie sur une simple réinitialisation sur les anciens programmes d’amorçage (<1.0.2) susceptibles de se bloquer lorsqu’ils sont forcés (975857221).

  • Renommage et réorganisation des dossiers de modèles de détection d’objets ST (st_yolo_lc_v1 en yolo_lc, tiny_yolo_v2 en yolo_v2, modèles de personnes yolov8n en fichiers simplement nommés par taille) et suppression des volumineuses variantes int8 tiny_yolo_v2 (34240cc3c).

  • Le timing série est désormais réglé via les clés de remplacement protocol du settings.json du micrologiciel (overrideReadTimeout, overrideReadStallTimeout, overridePerCommandWait et les clés V2 overrideCRC/overrideSEQ/overrideACK) au lieu d’indicateurs de ligne de commande au lancement (019d8bf1d).

  • Définition de la limite de longueur de ligne du serveur de langage Python à 120 colonnes pour flake8 et pycodestyle, afin que les lignes longues ne soient plus signalées à la valeur par défaut de 79 (dabb82062).

  • Réduction de l’ensemble de modèles d’apprentissage automatique fourni en déplaçant la collection de modèles Qualcomm et google/mobilenet_v1 dans models_unused afin de réduire la taille de l’installateur (c44ddba20).

Corrections de bogues

  • Les boîtes de dialogue de progression du téléchargement de micrologiciel et de la mise à jour des ressources ont été rendues résistantes aux plantages à l’aide de protections QPointer, afin qu’elles n’utilisent plus une boîte de dialogue supprimée si celle-ci se ferme en cours de téléchargement (f3ce4dc75).

  • L’analyse des lecteurs continue désormais de réanalyser jusqu’à ce que le lecteur USB de la caméra soit trouvé et efface les entrées de lecteur obsolètes à la déconnexion, supprimant l’ancien bricolage de minuteur à un seul déclenchement (a31d41b4e).

  • Plusieurs corrections de connexion et série : les capteurs masqués (par ex. SoftCSI) n’encombrent plus le type de capteur affiché, un minuteur de keep-alive série sous Windows empêche les blocages USB, Start ne redémarre plus un script déjà en cours d’exécution, et le canal de la caméra est déconnecté proprement à la fermeture du port (a8e467be6).

  • La vue du profileur a rétabli sa sélection par colonne des compteurs d’événements PMU (menus d’événements cochables) et l’état sauvegardé des compteurs/en-têtes qui avait été temporairement désactivé (40c679e90).

Prise en charge des plateformes et des outils

  • Base Qt Creator : 14.0.2.

  • Micrologiciel fourni : mis à jour de 4.7.0 vers 4.8.1, avec reconstruction du micrologiciel pour OPENMV2/3/4/4P/PT, OPENMV_N6, OPENMV_AE3, OPENMV_RT1060 et les cartes Arduino GIGA/Nicla Vision/Portenta H7 (2657818ca).

  • Correction de la négociation de version de protocole sous macOS pour les cartes RT1062 et AE3 en divisant le transfert USB multi-commandes en morceaux de taille USBDBG_LEN que ces cartes peuvent gérer (6b9d5f842).

  • Refonte du paquet de pilotes Windows fourni : ajout de fichiers de pilotes signés .cat/.inf par carte (AE3, H7, H7Plus, M4, M7, N6, Pico/PT, RT1062) et déplacement des pilotes série CDC dans un nouveau dossier openmvcdc avec un installateur automatique basé sur dpinst (439557829, ba3b01bfb).

  • Ajout de la prise en charge des anciennes révisions du capteur de caméra MT9V032 en enregistrant les ID de capteur 0x1311 et 0x1312 (aux côtés du 0x1313 existant) en tant que MT9V0X2 (eaaa624e3).

Changements incompatibles

Cette version ne comporte aucune rupture de l’API de script, mais il y a quelques changements de flux de travail visibles par l’utilisateur :

  • L’enregistrement d’un script n’éjecte ni ne démonte plus le lecteur USB de la caméra. L’IDE vide désormais les tampons du volume sur place, de sorte que le périphérique reste monté après un enregistrement.

  • Les indicateurs série au lancement -override_read_timeout (par défaut 5000 ms), -override_read_stall_timeout (par défaut 1000 ms) et -override_per_command_wait (par défaut 1 ms, 2 ms sous macOS) ont été supprimés ; le timing série est désormais configuré via les clés de remplacement protocol dans le settings.json du micrologiciel (019d8bf1d).

  • Les programmes d’amorçage fournis sont désormais livrés uniquement au format .bin ; les fichiers de micrologiciel et de programme d’amorçage .dfu par carte ont été supprimés.