Aller au contenu principal

v3.5.3

La version 3.5.3 est une mise à jour mineure. Les principales modifications concernent un appairage automatique plus intelligent, qui se reconfigure si vous remplacez l'un des deux éléments d'un ensemble Inverse3 + Grip déjà appairé, la suppression des fausses alertes de batterie sur les Verse Grips filaires, des vérifications plus transparentes des fonctions du micrologiciel, qui ne rejettent plus tacitement les commandes non prises en charge, un voyant d'état plus stable lors de la connexion, ainsi qu'une arrêt et un redémarrage du service sans plantage. De plus, cette version contient plusieurs corrections concernant les appareils et la sérialisation, ainsi que quelques remarques sur la transmission au niveau des octets.

Principales nouveautés​

  • La fonction « Auto-Pairing » se reconfigure lorsque vous remplacez l'un des deux éléments d'un ensemble. Si un appareil d'un ensemble « Inverse3 + Verse Grip » couplé automatiquement est remplacé, le SDK supprime désormais l'appairage obsolète et s'appaire avec le nouvel appareil connecté. Les appairages manuels ne sont pas affectés.
  • Finies les fausses alertes de batterie sur les Verse Grips connectés par câble. Les alertes de niveau de batterie faible ou critique ne se déclenchent désormais que pour les Verse Grips connectés sans fil ; un Verse Grip connecté par câble ne génère plus de fausse alerte lorsque le niveau de batterie est faible ou critique.
  • Des tests plus transparents des fonctionnalités du micrologiciel. Si vous demandez à un appareil une fonction haptique pour laquelle son micrologiciel est trop ancien (amortissement uniforme ou directionnel pour les versions antérieures à 7.5, retour à la position initiale pour les versions antérieures à 7.4), le système renvoie désormais un code HTTP 422 et un événement device-protocol-unsupported, au lieu d'un « 200 » trompeur qui a tacitement rejeté la requête.
  • Comportement plus stable de la LED d'état lors de la connexion. La LED d'état de Inverse3 ne clignote plus en rouge à chaque connexion ou reconnexion : la connexion est maintenue pendant la phase de stabilisation d'environ 5 secondes qui suit le réveil, ce qui empêche le chien de garde de connexion du micrologiciel de se déclencher.
  • Arrêt et redémarrage du service sans plantage. L'arrêt et le redémarrage du service ne provoquent plus de plantages ni de blocages. La procédure d'arrêt et de redémarrage a été revue afin d'éliminer les plantages et les blocages qui se produisaient lors de l'activation et de la désactivation du service.

Améliorations internes​

  • Mode de navigation « Clutch » (expérimental, désactivé par défaut). Un nouveau mode de navigation qui vous permet de réduire ou de geler complètement le mouvement exporté par le service vers la scène, tandis que l'appareil physique continue de se déplacer – un mode à demi-vitesse (« precise ») pour le positionnement fin et un gel complet pour repositionner l'espace de travail. Lorsque vous relâchez la commande, le décalage accumulé est ensuite transféré dans la zone de travail, de sorte que le curseur de la scène ne fait jamais de saut. Le retour de force est conservé quel que soit le rapport. Dans ce cycle, le mode n’est disponible que s’il est expressément activé ; le protocole par défaut reste inchangé.
  • Mise à l'échelle de la force liée à la session (aperçu). Un client peut réduire à zéro la sortie haptique d'une session de simulation – par exemple lorsqu'un menu circulaire est ouvert – et transférer le périphérique au concentrateur, de sorte que le retour haptique du menu soit émis via le chemin de contrôle normal. La sortie est automatiquement rétablie dès que la session prend fin ou que le menu est fermé. Cette fonctionnalité est activée dans ce cycle via un indicateur de prévisualisation ; le protocole par défaut reste inchangé.
  • Zoom de l'espace de travail autour d'un point de pivot (en phase d'expérimentation). Lors de la mise à jour de la transformation de l'espace de travail, transmettez un point de pivot (par exemple, le curseur actif). La vue est alors mise à l'échelle autour de ce point, de sorte que sa position à l'écran reste inchangée : un zoom instantané vers le curseur. Uniquement pour Inverse3; cette fonctionnalité est en phase d'expérimentation pour ce cycle, le protocole par défaut reste donc inchangé.
  • Mise à jour du moteur de sérialisation JSON (glaze) vers la version 7.8.4. Concernant uniquement l'infrastructure : aucune modification de l'API publique ni du comportement. Un reformatage des nombres à virgule flottante dans le journal texte, préservant la valeur des données, a également été ajouté ; voir ci-dessous sous « Modifications susceptibles d'entraîner des incompatibilités ».

Corrections de bogues​

  • La modification ou la réinitialisation de la transformation de montage d'un appareil ne provoque plus de plantage. Un chemin de code prototype résiduel déplaçait la boîte de délimitation de l'espace de travail du micrologiciel à chaque modification du montage ; ce chemin de code a été supprimé.
  • L'orientation de l'appareil est mise à jour après un recalibrage sur la station d'accueil Inkwell. Une fois l'appareil reconnecté à la station d'accueil Inkwell et recalibré, l'orientation transmise en continu est désormais mise à jour par l'appareil, au lieu de transmettre les valeurs datant d'avant le calibrage jusqu'à la prochaine reconnexion. Nécessite la dernière version du micrologiciel de l'appareil ; le format de transmission reste inchangé.
  • Minverse signale systématiquement les étalonnages bloqués. Minverse envoie désormais un événement device-calibration-failed, dès que le micrologiciel signale un problème d'étalonnage — y compris un cas limite impliquant un signal Hall oscillant, que le système ignorait jusqu'à présent sans le signaler —, de sorte que le Gestionnaire de périphériques affiche systématiquement le message « Calibration failed ».
  • Les préréglages « centrés » placent l'origine au centre effectivement accessible de l'espace de travail. arm_front_centered et led_front_centered (Inverse3 / Inverse3x) étaient alignés sur l'axe de l'articulation du bras, qui n'est pas centré dans la zone d'action. C'est pourquoi set_cursor_position à l'origine {0, 0, 0} en dehors du centre. L'origine centrée de Minverse était également décalée d'environ 10 mm vers la droite. Chaque décalage correspond désormais à la moitié de la plage accessible sur chaque axe, mesurée en excluant les zones limites du marges de sécurité du micrologiciel et non la plage mécaniquement possible. (Voir la remarque concernant le décalage de l'origine dans la section « Modifications potentiellement incompatibles ».)

Modifications potentiellement incompatibles​

  • POST/DELETE /config/filters/damping Sur les versions de firmware antérieures à la 7.5, le code d'erreur HTTP 422 est désormais renvoyé, accompagné d'un événement device-protocol-unsupported, au lieu d'un 200, qui a tacitement rejeté l'opération d'écriture. Les versions de micrologiciel à partir de la 7.5 ne sont pas concernées (le code reste 200). Solution : mettre à jour le micrologiciel de l'appareil vers la version 7.5 ou une version plus récente, ou traiter la réponse 422.
  • POST/DELETE /home_return Sur les versions de firmware ne disposant pas de cette commande (antérieures à la version 7.4), le code d'erreur HTTP 422 est désormais renvoyé., au lieu d'un 200 inconditionnel. Seuls les appareils équipés d'une ancienne version du micrologiciel sont concernés. Solution : mettre à jour le micrologiciel vers la version 7.4 ou une version plus récente, ou gérer la réponse 422.
  • Échos de commande lors de config/mount et state/transform Sérialisation des requêtes (GET/POST/PATCH/DELETE) transform.rotation en si mineur dans la gamme de référence {w,x,y,z} au lieu de {x,y,z,w}, en fonction de l'ordre de rotation du contenu diffusé en streaming state-Instantanés. Uniquement au niveau des octets : les valeurs et les noms de clés restent identiques, seul l'ordre des clés change ; les trois composants continuent d'être renvoyés. Les clients qui analysent le JSON à partir des noms de clés n'ont aucune modification à apporter ; les comparaisons strictes au niveau des octets ou de l'ordre devraient toutefois les amener à régénérer leurs données de référence.
  • Nom du périmètre d'application dans les notifications de modification concernant l'application d'une configuration à un seul appareil. L'événement de modification « session-updated » signale désormais les noms des domaines de la configuration (config.mount, config.basis, config.preset) plutôt que de simples noms (mount, basis, preset), lorsque la configuration d'un appareil individuel est appliquée. Les clients qui filtrent ces chaînes de portée des événements doivent adapter leur mappage.
  • Reformatage de l'affichage des nombres à virgule flottante dans Glaze pour toutes les valeurs numériques des « wires », versions 3.0 et 3.1 (par exemple 1.0E-7 -> 1E-7, 16777216 -> 1.6777216E7, -1.0E-37 -> -1E-37). Uniquement au niveau des octets : les analyseurs numériques lisent des valeurs identiques ; seule la forme textuelle a changé. Les clients utilisant des comparaisons de chaînes de caractères doivent régénérer leurs fixtures.
  • Décalage de l'origine pour les préréglages centrés. Étant donné que les préréglages centrés visent désormais le centre effectivement atteignable, l'origine qu'ils définissent se déplace par rapport à la version 3.5.2 : arm_front_centered / led_front_centered se déplacent de 25 mm le long de l'axe de profondeur de l'appareil ; le préréglage centré « Minverse » se déplace de 10 mm en X, 20 mm en Y et 20 mm en Z, et minverse_zup se décale de 20 mm dans l'axe X et de 30 mm dans l'axe Y. Cela concerne une interface activée par défaut, et minverse_zup est automatiquement appliquée aux sessions Freeform détectées. Portée : les contenus placés au niveau de l'origine ou la géométrie positionnée par rapport à celle-ci, lorsqu'un préréglage centré est actif — ils se déplacent avec l'origine. Migration : revérifier la géométrie alignée sur l’origine ou définir explicitement le décalage existant en tant que transformation de montage personnalisée. Les préréglages non centrés (device_defaults, arm_front, led_front) sont des transformations d'identité et ne sont pas concernées.

Fonctionnalités obsolètes​

  • La saisie « Legacy » values Les commandes de contrôle « inverse3 » déclenchent désormais un avertissement. L'envoi du tableau values un set_cursor_force, set_cursor_position, set_angular_position ou set_angular_torques au lieu du champ spécifié de la commande (vector / position / angles / torques) continue de fonctionner, mais déclenche un événement command-deprecated (limité à une fois toutes les 30 secondes et par commande), au lieu d'être tacitement accepté. Migrez vers values dans le champ indiqué ; cette entrée héritée est destinée à être supprimée dans la version 4.0.
  • Par ailleurs, aucune interface de communication publique n'est concernée dans ce cycle.