v3.5.1
La version 3.5.1 est une version de stabilité et de qualité. Parmi les principales nouveautés, on peut citer : l'appairage automatique dans une configuration 1↔1 Inverse3 + poignée ; lorsque la session WebSocket n'est pas ouverte,GET /devices/{id} Il est toujours possible de récupérer l'état actuel du mouvement ; l'élimination des grincements et bruits parasites lors du passage du mode force au mode position ; ainsi qu'un planificateur de ticks de service à réglage automatique en cas de charge élevée prolongée.
Points forts
- 1↔1 Inverse3 + Appairage automatique de la poignée. Lorsqu'un Inverse3 et une poignée sont tous deux prêts, le SDK enregistre automatiquement la relation d'appairage — dans un environnement multi-appareils,
pen_attachedGrâce à Minverse , les données de calibrage ne sont plus acheminées vers la mauvaise destination. - Pour obtenir les dernières informations sans avoir à ouvrir une session :
GET /devices/{id}Instantané. Les modèles Inverse3 , Inverse3x et Minverse équipés d'un micrologiciel v7.5 ou supérieur effectuent désormais une interrogation de l'état de mouvement toutes les 20 Hz, indépendamment de l'état d'activité du WebSocket. Les versions de micrologiciel antérieures à la v7.5 ignoraient cette interrogation et n'émettaient qu'un seul avertissement. - Le passage du mode « force » au mode « position » ne produit plus de sifflement.
set_cursor_force↔set_cursor_positionLa commutation utilise un mécanisme d'exclusion mutuelle par emplacement : entre deux ticks, chaque appareil ne conserve que la dernière instruction. La solution de contournement temporaire consistant en un intervalle d'inactivité de 200 ms dans «HARP » n'est plus valable. - Planificateur de ticks auto-adaptatif. La boucle principale ajuste automatiquement la fréquence de distribution en fonction de la charge, afin qu’un seul tick lent n’entraîne pas une croissance infinie de la file d’attente des commandes.
- Récupération en mode flux continu « 1 entrée, 1 sortie » sous forte charge. Le nombre de réponses en continu pour chaque message WS est limité à 1/ms par session ; lorsque cette limite est atteinte, le contenu du tampon précédent est rejoué, de sorte que la boucle de simulation ne se bloque jamais sur
recv()Haut.
Améliorations internes
Équipements
- Tableau d'enregistrement des appariements Inverse3 ↔ VerseGrip, classé par appareil.
GET|POST|DELETE /devices/{sel}/paired_withIl s'agit d'une correspondance biunivoque établie en fonction des équipements.POSTsupprimera les paires conflictuelles des deux parties ;DELETESupprimer les éléments sélectionnés ; le sélecteur doit correspondre à un identifiant unique. - Interrogation de l'état de mouvement à 20 Hz sur le micrologiciel v7.5+.
GET /devices/{id}Renvoie les dernières données toutes les 50 ms.cursor_position,cursor_velocity,angular_position,angular_velocity; ne détecte pas les sessions actives. - VerseGrip sans fil
set_extension_dataContrôle de la vitesse. On utilise un pipeline de type « suppression des anciennes données / réémission pendant les temps morts », avec une purge effectuée à chaque tick de service : un nombre excessif d'envois ne sature plus la liaison sans fil, tandis qu'un nombre insuffisant ne laisse plus de valeurs périmées en mémoire.
Conversation
- Un chemin rapide de réception WS a été ajouté pour les lots ne contenant que des instructions de commande (force/position) ; ce chemin permet de contourner le pipeline de traitement de la configuration de perception ;
configure/set_profile/ Les commandes personnalisées sont toujours soumises à la logique de résolution des conflits.
observabilité
- La fréquence de génération des journaux de contrôle varie selon le port et tient compte de la durée. Chaque port figurant sur la liste noire fait l'objet d'un contrôle individuel ; les événements qui se produisent périodiquement
"...blacklisted: skipping"Les lignes de journal comportent désormais(×N), indique le nombre de ticks ignorés entre deux déclenchements. - Lorsqu'un appareil non compatible avec WVG est détecté, la détection sans fil de VerseGrip ne génère plus un nombre excessif d'entrées dans le journal.
Correction de problèmes
- Utilisation
POST /device.config.presetet de préciserdefaultsouarm_frontHeure, la configuration de montage des périphériques sera désormais réinitialisée aux paramètres d'usine (alors qu'auparavant, aucune opération n'était effectuée).basisseront conservées ; ainsi, les paramètres de base configurés dans l'application resteront valides même après la modification des préréglages de montage. - Lorsque le `configure` correspondant arrive dans le même message WS,
force_render_full_stateNe plus afficher les éléments manquantsconfigInstantanés de blocs——Le traitement du chemin de configuration sera terminé avant la création de l'instantané. - inter-sessions
force_render_full_stateLe système renvoie désormais un instantané complet de la session cible. A et B peuvent désormais recevoir des charges complètes (auparavant, A ne recevait que des données en flux continu). - Lorsque
target_session_idLorsque cette valeur est inconnue, les commandes inter-sessions ne bloquent plus le cycle requête-réponse. Le demandeur recevra son propre instantané, ainsi qu'unsession-command-droppedÉvénement (cross-session-unknown-target). - Minverse L'étalonnage multi-appareils ne provoque plus d'erreurs de routage. L'étalonnage de Minverse A ne déverrouille plus Minverse B ; la même correction a été apportée à la diffusion d'en-tête d'inkwell-success.
- Sélecteur de périphériques HTTP Accepter
#1234et1234En tant qu'identifiant d'appareil ; classe de sélecteur (inverse3,verse_grip) Peut être utilisé avec des index ; les messages 404 conservent l'expression de sélecteur d'origine. - VerseGrip sans fil
readyLe marquage repose désormais sur une procédure d'établissement de connexion basée sur les informations initiales de l'appareil.——Auparavant, sur certains chemins de reconnexion, cet indicateur pouvait être activé avant même que l'appareil n'ait entièrement transmis ses informations. - Les modifications apportées en cours d'exécution aux paramètres pris en charge par « keyed-rate-gate » prennent désormais effet dès le prochain accès(auparavant, elles étaient figées dès le premier « emplace » et n'étaient appliquées que lors d'une nouvelle session).
Modifications potentiellement perturbatrices
- Les chaînes de caractères 404 du protocole HTTP ont été harmonisées, couvrant
basis,preset,mount,transform,force_gate:"{type} device #{id} not found"→"no device matches selector '{expr}'"。Il en va de même pour les erreurs 404 liées à la session. - Caractères génériques pour les paramètres
devices/inverse*/...→devices/*inverse/..., applicable au gain de mise à l'échelle de la force, au gain de seuil de force, au délai de contrôle ainsi qu'àsafeties/expose_in_snapshotLes fichiers de configuration de la version 3.5.0 utilisant l'ancien chemin d'accès littéral ne pourront pas être associés. - Configuration : la sérialisation des éléments globaux a été déplacée vers
session/serialization/*(explicit_fields,force_complete_transforms,preview/*). Ancienserialization/*Le chemin d'accès peut toujours être résolu via un alias obsolète ; il sera supprimé dans la version 4.0. - Modification du comportement: les clients utilisant la réponse WS de chaque message pour la poignée de main de synchronisation « tick » ne recevront désormais qu'une seule réponse par milliseconde et par session, dans le cadre d'un trafic continu. Les instantanés complets effectués lors des modifications de configuration ne sont pas affectés.
Éléments obsolètes
La version 3.5.1 ne contient aucun élément obsolète. Le commutateur général « Aperçu » fait partie de l'infrastructure obsolète du pipeline « Du mode silencieux au mode d'avertissement » de la prochaine version 3.6 ; la première vague d'obsolescence est prévue pour la version 3.5.2.