Aller au contenu principal

v3.5.3

La version 3.5.3 est une version corrective. Les principaux changements sont un appairage automatique plus intelligent, qui réapparie les appareils lorsque vous remplacez une moitié d'un ensemble Inverse3 + poignée appairé ; la fin des fausses alertes de batterie sur les Verse Grip filaires ; des vérifications fiables des capacités du micrologiciel, qui ne suppriment plus silencieusement les commandes non prises en charge ; un voyant d'état plus stable à la connexion ; et un arrêt et un redémarrage du service sans plantage. Elle intègre aussi plusieurs correctifs touchant les appareils et la sérialisation, ainsi que quelques notes sur les données transmises au niveau des octets.

Points saillants​

  • L'appairage automatique réapparie lorsque vous remplacez une moitié d'ensemble. Lorsqu'un appareil d'un ensemble Inverse3 + Verse Grip appairé automatiquement est remplacé, le SDK supprime désormais l'appairage obsolète et réapparie l'ensemble avec l'appareil nouvellement connecté. Les appairages manuels ne sont pas modifiés.
  • Fin des fausses alertes de batterie sur les Verse Grip filaires. Les alertes de batterie faible et critique ne se déclenchent désormais que pour les Verse Grip connectés sans fil ; un Verse Grip filaire ne génère plus d'avertissement erroné de batterie faible ou critique.
  • Vérifications fiables des capacités du micrologiciel. Lorsqu'on demande à un appareil une fonction haptique que son micrologiciel est trop ancien pour exécuter -- amortissement uniforme ou directionnel sur un micrologiciel antérieur à la version 7.5, retour à la position d'origine sur un micrologiciel antérieur à la version 7.4 --, la requête renvoie désormais HTTP 422 accompagné d'un événement device-protocol-unsupported, au lieu d'un 200 trompeur qui ignorait la requête silencieusement.
  • Voyant d'état plus stable à la connexion. Le voyant d'état Inverse3 ne clignote plus en rouge à chaque connexion ou reconnexion : la connexion est maintenue pendant la fenêtre de stabilisation d'environ 5 secondes suivant la sortie de veille, de sorte que le chien de garde de connexion du micrologiciel ne se déclenche plus.
  • Arrêt et redémarrage du service sans plantage. L'arrêt et le redémarrage du service ne provoquent plus de plantage ni de blocage ; le chemin d'arrêt et de redémarrage a été repensé pour éliminer les paniques et les blocages observés lors de l'activation et de la désactivation du service.

Améliorations internes​

  • Mode de navigation à embrayage (expérimental, désactivé par défaut). Nouveau mode de navigation qui permet à un opérateur de réduire ou de figer complètement le mouvement que le service transmet à la scène pendant que l'appareil physique continue de bouger -- un mode « précis » à demi-vitesse pour le positionnement fin et un gel complet pour repositionner l'espace de travail --, puis d'intégrer le décalage accumulé à l'espace de travail au relâchement, afin que le curseur de la scène ne saute jamais. Le retour de force se poursuit à tous les ratios. À activer explicitement pour ce cycle ; le format de transmission par défaut reste inchangé.
  • Mise à l'échelle des forces limitée à la session (préversion). Un client peut réduire vers zéro la sortie haptique d'une session de simulation -- par exemple pendant l'ouverture d'un menu radial -- et céder l'appareil au Hub, afin que les retours haptiques du menu passent par le chemin de contrôle normal ; la restauration est automatique lorsque la session se ferme ou que le menu est refermé. Accessible uniquement en préversion pour ce cycle ; le format de transmission par défaut reste inchangé.
  • Zoom de l'espace de travail autour d'un pivot (expérimental). Transmettez un point de pivot (par exemple le curseur en temps réel) lors de la mise à jour de la transformation de l'espace de travail : la vue est alors mise à l'échelle autour de ce point, de sorte que sa position à l'écran reste fixe -- un zoom instantané vers le curseur. Disponible uniquement pour Inverse3 ; expérimental pour ce cycle, le format de transmission par défaut reste donc inchangé.
  • Mise à niveau du moteur de sérialisation JSON (glaze) vers la version 7.8.4. Infrastructure seulement -- aucune modification de l'API publique ni du comportement. Un reformatage du texte des nombres à virgule flottante, sans effet sur les valeurs, est également inclus ; voir Changements potentiellement incompatibles ci-dessous.

Correctifs​

  • Modifier ou réinitialiser la transformation de montage d'un appareil ne risque plus de provoquer un plantage. Un chemin de code prototype résiduel poussait une boîte de délimitation de l'espace de travail du micrologiciel à chaque changement de montage ; ce chemin a été supprimé.
  • L'orientation du corps est actualisée après un recalibrage sur la station inkwell. Après une remise en place sur la station inkwell et un recalibrage, l'orientation du corps diffusée est désormais actualisée à partir de l'appareil, au lieu d'afficher des valeurs antérieures au calibrage jusqu'à la prochaine reconnexion. Nécessite un micrologiciel d'appareil à jour ; le format de transmission est inchangé.
  • Minverse signale toujours un calibrage bloqué. Minverse émet désormais un événement device-calibration-failed chaque fois que le micrologiciel signale un calibrage bloqué -- y compris dans le cas limite d'un capteur à effet Hall oscillant, qui masquait auparavant l'échec en silence -- de sorte que le Device Manager affiche toujours un message « Calibration failed ».
  • Les préréglages centrés placent l'origine au véritable centre atteignable 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 l'enveloppe atteignable ; ainsi, set_cursor_position à l'origine {0, 0, 0} tombait hors centre. L'origine centrée de Minverse était en outre située à environ 10 mm trop à droite. Chaque décalage correspond désormais à la moitié de la plage atteignable sur chaque axe, mesurée en excluant les zones limites des ressorts de sécurité du micrologiciel plutôt que la plage mécaniquement possible. (Voir la note sur le déplacement de l'origine sous Changements potentiellement incompatibles.)

Changements potentiellement incompatibles​

  • POST/DELETE /config/filters/damping sur un micrologiciel antérieur à la version 7.5 renvoie désormais HTTP 422 avec un événement device-protocol-unsupported, au lieu d'un 200 qui ignorait silencieusement l'écriture. Le micrologiciel 7.5 et les versions plus récentes ne sont pas touchés (réponse toujours 200). Migration : mettez à niveau le micrologiciel de l'appareil vers la version 7.5 ou plus récente, ou gérez le code 422.
  • POST/DELETE /home_return sur un micrologiciel qui ne prend pas en charge cette commande (antérieur à la version 7.4) renvoie désormais HTTP 422 au lieu d'un 200 inconditionnel. Seuls les appareils dotés d'un micrologiciel ancien sont concernés. Migration : mettez à niveau le micrologiciel vers la version 7.4 ou plus récente, ou gérez le code 422.
  • Les échos de commande sur config/mount et state/transform (GET/POST/PATCH/DELETE) sérialisent désormais transform.rotation dans l'ordre de clés {w,x,y,z} au lieu de {x,y,z,w}, pour correspondre à l'ordre de rotation de l'instantané state diffusé en continu. Au niveau des octets seulement -- mêmes valeurs, mêmes noms de clés ; seul l'ordre des clés change, et les trois composantes sont toujours renvoyées. Les clients JSON indexés par nom n'ont aucune action à entreprendre ; les comparaisons strictes d'octets ou d'ordre doivent mettre à jour leurs références.
  • Noms de portée des notifications de changement pour les applications de configuration à un seul appareil. L'événement de notification de changement de session signale désormais des noms de portée de configuration (config.mount, config.basis, config.preset) au lieu des noms simples (mount, basis, preset) lorsque la configuration d'un seul appareil est appliquée. Les clients qui filtrent ces chaînes de portée d'événement doivent mettre à jour leur correspondance.
  • Reformatage du texte des nombres à virgule flottante par glaze pour toutes les valeurs numériques transmises, v3.0 et v3.1 (par exemple 1.0E-7 -> 1E-7, 16777216 -> 1.6777216E7, -1.0E-37 -> -1E-37). Au niveau des octets seulement -- les analyseurs numériques lisent les mêmes valeurs ; seule la forme textuelle a changé. Les consommateurs qui comparent des chaînes de caractères doivent mettre à jour leurs jeux de test de référence.
  • Déplacement de l'origine des préréglages centrés. Comme les préréglages centrés visent désormais le véritable centre atteignable, l'origine qu'ils installent 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é de Minverse se déplace de 10 mm en X, 20 mm en Y et 20 mm en Z, et minverse_zup se déplace de 20 mm en X et 30 mm en Y. Cette fonctionnalité est activée par défaut, et minverse_zup est appliqué automatiquement pour les sessions Freeform détectées. Portée de l'impact : le contenu placé à l'origine, ou la géométrie positionnée par rapport à celle-ci, pendant qu'un préréglage centré est actif -- il se déplace avec l'origine. Migration : revérifiez la géométrie ancrée à l'origine, ou inscrivez explicitement le décalage précédent comme transformation de montage personnalisée. Les préréglages non centrés (device_defaults, arm_front, led_front) sont des transformations identité et ne sont pas touchés.

Fonctionnalités dépréciées​

  • L'entrée héritée values des commandes de contrôle inverse3 est désormais une dépréciation signalée. L'envoi du tableau values à set_cursor_force, set_cursor_position, set_angular_position ou set_angular_torques, au lieu du champ nommé de la commande (vector / position / angles / torques), fonctionne toujours, mais déclenche maintenant un événement command-deprecated (limité à un par 30 secondes et par commande) au lieu d'être accepté silencieusement. Migrez values vers le champ nommé ; l'entrée héritée sera retirée dans la version 4.0.
  • Sinon, aucun changement ne touche le protocole public pour ce cycle.