Aller au contenu principal

Référence des paramètres

Ce document énumère tous les paramètres renvoyés par le point de terminaison /settings/, avec leur clé, leur type (tiré de type_hint) et leurs contraintes (tirées de metadata.constraint.range et de locked, le cas échéant).

Un paramètre locked est en lecture seule à l'exécution. Il peut être modifié au moyen du fichier de configuration ou depuis la page des paramètres de Haply Hub, mais un redémarrage complet du service est requis pour que les modifications prennent effet. Ces paramètres sont marqués boot dans les tableaux ci-dessous.

Configuration​

Le fichier de configuration permettant de remplacer les paramètres lors du démarrage du service se trouve ici :

PlateformeEmplacement
WindowsC:\ProgramData\Haply\Inverse\haply-inverse-service-config.json
MacOS/Library/Application Support/Haply/Inverse/haply-inverse-service-config.json
Linux/etc/haply-inverse-service/haply-inverse-service-config.json

Le fichier de configuration est un objet JSON plat qui associe des clés de paramètres à des valeurs de remplacement. Les clés doivent être des clés de paramètres valides renvoyées par la route /settings/ HTTP (voir la référence de l'API). Toute clé non précisée utilise la valeur par défaut du service.

Par exemple, un remplacement de la configuration réseau :

{
"communication/http/port": 8400,
"communication/websocket/port": 8500,
"communication/events/port": 9000,
"communication/bind_all_interfaces": true
}

Visibilité et filtrage​

Les points de terminaison de listage /settings (GET /settings, GET /settings/) ne renvoient que les paramètres de base par défaut. Transmettez ?advanced=true pour inclure les paramètres signalés comme avancés, et ?deprecated=true pour inclure les alias obsolètes. Les paramètres masqués sont réservés à un usage interne; ils n'apparaissent que lorsque misc/hidden_settings est défini au moyen de POST /settings/misc/hidden_settings (il n'existe aucun équivalent sous forme de paramètre de requête). Les indicateurs de filtre se combinent par un ET logique : une clé à la fois signalée advanced et hidden exige que les deux filtres soient levés. Les requêtes POST et DELETE sur une clé connue ne sont pas soumises à ces filtres.

Les lectures d'une clé unique (GET /settings/<key>) contournent le filtre advanced/deprecated lorsque vous utilisez la clé canonique exacte, ce qui est pratique pour les clients qui connaissent déjà la clé. Les clés masquées demeurent soumises au filtre.

Trois bascules d'exécution alimentent les filtres; leurs valeurs persistent pendant toute la durée de vie du service :

CléTypeContraintesDescription
misc/advanced_settingsbool—Inclut les paramètres signalés advanced dans les listages GET /settings (valeur par défaut : false). Équivalent à transmettre ?advanced=true à chaque requête.
misc/deprecated_settingsbool—Inclut les paramètres signalés deprecated dans les listages GET /settings (valeur par défaut : false). Équivalent à transmettre ?deprecated=true à chaque requête.

Correspondance des types​

Les indications de type renvoyées par l'API correspondent aux structures JSON suivantes :

  • STRING → string
  • BOOL → bool
  • INT → int
  • FLOAT → float
  • ARR_STRING → string[]
  • VEC3 → vec3 (objet avec {x, y, z})
  • GENERIC → json (valeur structurée arbitraire)

communication/…​

Ports réseau et adresses de liaison pour les serveurs HTTP, WebSocket et de flux d'événements. La plupart des entrées ne sont modifiables qu'au boot.

CléTypeContraintesDescription
communication/serial/enabledbool—Activer ou désactiver la communication avec les appareils série.
communication/bind_addressstringbootAdresse IP à laquelle les serveurs HTTP et WebSocket se lient.
communication/bind_all_interfacesboolbootLier les serveurs à 0.0.0.0 plutôt qu'à localhost.
communication/http/portintbootPort HTTP de l'API REST (valeur par défaut : 10000).
communication/websocket/portintbootPort WebSocket principal de la v3.1 (valeur par défaut : 10001).
communication/websocket/legacy_portintbootPort WebSocket hérité de la v3.0 (valeur par défaut : 10000).
communication/events/portintbootPort WebSocket du flux d'événements (valeur par défaut : 10020).

devices/…​

devices/detection/…​

Politique de balayage des ports série. Toutes les entrées sont avancées.

CléTypeContraintesDescription
devices/detection/scan_period_msintplage 100–10000 ; démarrageIntervalle entre les analyses des ports série (ms).
devices/detection/handshake_timeout_sintplage 1–15Délai d'expiration de la poignée de main par port (s).
devices/detection/max_retriesintplage 1–10Nombre maximal de tentatives de poignée de main par port.
devices/detection/failure_log_delay_sintplage 1–60Délai avant de consigner à nouveau un échec de détection (s).
devices/detection/block_looping_portsbool—Bloquer la disponibilité de l'appareil lorsqu'un port en boucle est détecté.
devices/detection/excluded_portsjson—Chemins des ports série à ignorer pendant la détection.
devices/detection/additional_portsstring[]—Chemins de ports série supplémentaires à analyser systématiquement.
devices/detection/allowed_vendor_id_filterstring[]—Identifiants de fournisseur USB autorisés lors de l'énumération des ports.
devices/detection/port_name_substring_filterstring[]—Sous-chaînes de nom de port propres à la plateforme à rechercher.
devices/detection/wireless_verse_grip_description_filterstring[]—Sous-chaînes de description de port pour la détection sans fil de VerseGrip.
devices/detection/inverse3x_description_filterstring[]—Sous-chaînes de description de port pour la détection d'Inverse3x.
devices/detection/extra_ports (obsolète)string[]—Utilisez plutôt devices/detection/additional_ports. Les lectures et les écritures sont transmises de manière transparente à la clé canonique.

devices/*inverse/…​

Valeurs par défaut globales appliquées à chaque appareil de la famille Inverse3. Les remplacements propres à la session ont priorité.

Renommé dans la 3.5.1

Le glob était devices/inverse*/… dans la 3.5.0 ; le * initial se place désormais devant inverse. Les fichiers de configuration utilisant l'ancienne syntaxe littérale ne seront pas pris en compte sur la 3.5.1 — mettez-les à jour. Les clés elles-mêmes demeurent par ailleurs inchangées.

CléTypeContraintesDescription
devices/*inverse/filters/force_scale/gainfloatplage 0.0–2.0Multiplicateur global de la force de sortie appliqué à tous les appareils.
devices/*inverse/filters/force_gate/gainfloatplage 0.0–1.0Gain par défaut du filtre de seuil de force pour les nouvelles sessions.
devices/*inverse/control_timeout_msintplage 50–10000Délai d'expiration avant la libération du verrou de contrôle de l'appareil (ms).
devices/*inverse/query_orientation_on_idlebool—Demander au micrologiciel l'orientation du corps lorsque l'appareil est inactif.
devices/*inverse/safeties/expose_in_snapshotbool—Inclure les indicateurs de sécurité propres à chaque appareil dans les instantanés GET /devices/{id}.

devices/presets​

CléTypeContraintesDescription
devices/presetsjson—Préréglages de configuration par défaut pour chaque type d'appareil (transformation de montage, base, etc. pour inverse_arm_front_*, inverse_led_front_*, minverse_*, verse_grip_default, wireless_verse_grip_default, custom_verse_grip_default).

devices/wireless_verse_grip/…​

CléTypeContraintesDescription
devices/wireless_verse_grip/battery/low_thresholdint—Pourcentage de batterie sous lequel un avertissement de batterie faible est déclenché.
devices/wireless_verse_grip/battery/critical_thresholdint—Pourcentage de batterie sous lequel une alerte de batterie critique est déclenchée.
devices/wireless_verse_grip/battery/reset_marginint—Marge d'hystérésis avant l'effacement d'un avertissement de batterie.
devices/wireless_verse_grip/filters/orientation_filterjsondémarrageConfiguration du filtre One Euro pour l'orientation sans fil de VerseGrip.

features/…​

features/calibration/…​

CléTypeContraintesDescription
features/calibration/hall_thresholdintplage 1–32Niveau du capteur à effet Hall à partir duquel le stylet est considéré comme fixé pendant l'étalonnage.

features/grip_hook/…​

Comportement automatique de l'accroche de préhension — verrouille le curseur tant que la poignée est tenue à la verticale.

CléTypeContraintesDescription
features/grip_hook/enabledbool—Activer le verrouillage automatique de l'accroche lorsque la poignée est tenue à la verticale.
features/grip_hook/use_hallbool—Utiliser le seuil du capteur à effet Hall plutôt que l'orientation pour détecter la préhension.
features/grip_hook/hallintplage 1–32Valeur de seuil du capteur à effet Hall déclenchant le verrouillage de l'accroche.
features/grip_hook/hold_durationintplage 10–1000Durée de maintien du verrouillage après le déclenchement (ms).

features/navigation/bubble/…​

Valeurs par défaut du module de navigation Bubble — transmises à la session lorsque le comportement bubble est activé pour la première fois. Consultez la page Module de navigation pour la sémantique d'exécution de chaque champ.

CléTypeContraintesDescription
features/navigation/bubble/centervec3—Position par défaut du centre de la bulle.
features/navigation/bubble/center_enabledbool—Appliquer le center configuré lors de la première activation d'un comportement de bulle.
features/navigation/bubble/rotation_enabledbool—Appliquer la rotation de l'espace de travail à la direction de navigation.
features/navigation/bubble/scale_enabledbool—Appliquer l'échelle de l'espace de travail à la vitesse de navigation.
features/navigation/bubble/center_drift_speedfloat≥ 0Vitesse de dérive (m/s) en mode de centre auto_follow.
features/navigation/bubble/max_velocityfloat—Vitesse de navigation maximale dans la zone de vitesse (m/s).
features/navigation/bubble/velocity_zone_widthfloat—Largeur de la zone de vitesse à l'extérieur de la surface de la bulle (m).
features/navigation/bubble/reset_velocity_on_entrybool—Réinitialiser la vitesse à zéro lorsque le curseur entre dans la bulle.
features/navigation/bubble/spring_innerfloat—Coefficient de raideur au centre de la bulle (N/m).
features/navigation/bubble/spring_surfacefloat—Coefficient de raideur à la surface de la bulle (N/m).
features/navigation/bubble/spring_outerfloat—Coefficient de raideur à la limite extérieure (N/m).
features/navigation/bubble/damping_innerfloat—Coefficient d'amortissement au centre de la bulle (Ns/m).
features/navigation/bubble/damping_surfacefloat—Coefficient d'amortissement à la surface de la bulle (Ns/m).
features/navigation/bubble/damping_outerfloat—Coefficient d'amortissement à la limite extérieure (Ns/m).
features/navigation/bubble/wall_stiffnessfloat—Rigidité de la paroi rigide à la limite extérieure (N/m).
features/navigation/bubble/bump_widthfloat—Largeur de la bosse tactile à la surface de la bulle (m).
features/navigation/bubble/bump_stiffnessfloat—Rigidité de la bosse tactile à la surface de la bulle (N/m).
features/navigation/bubble/stop_at_collisionbool—Empêcher le centre de la bulle de dériver dans la direction de la collision lorsqu'une collision est active.
features/navigation/bubble/collision_thresholdfloat> 0Intensité de la force externe (N) à partir de laquelle une collision est détectée.
features/navigation/bubble/collision_inflate_scalefloat≥ 1Multiplicateur appliqué à velocity_zone_width pendant qu'une collision est active.
features/navigation/bubble/collision_exit_ratiofloatplage (0,1]Rapport d'hystérésis : la collision prend fin lorsque |ext_force| descend sous collision_threshold × this. 1.0 désactive l'hystérésis.
features/navigation/bubble/avatar_boundary_enabledbool—Limiter la position mondiale de l'avatar à la forme SDF avatar_boundary configurée.

features/safe_trajectory/…​

Limiteur de vitesse pour le mouvement de l'effecteur terminal.

CléTypeContraintesDescription
features/safe_trajectory/enabledbool—Activer le limiteur de vitesse de trajectoire sécuritaire.
features/safe_trajectory/max_velfloatplage 0.01–2.0Vitesse maximale autorisée de l'effecteur terminal (m/s).

features/screensaver/…​

Animation de veille de l'économiseur d'écran jouée sur les appareils Inverse3 lorsqu'aucune session ne les pilote.

CléTypeContraintesDescription
features/screensaver/enabledbool—Activer l'animation de veille de l'économiseur d'écran sur les appareils Inverse3.
features/screensaver/speedfloatplage 0.001–0.2Vitesse de l'animation de l'économiseur d'écran.
features/screensaver/distracted_speedfloatplage 0.001–0.2Vitesse de l'animation lorsque l'utilisateur est à proximité sans interagir.

features/sdf/…​

Module d'effets haptiques à champ de distance signée (SDF HFX).

CléTypeContraintesDescription
features/sdf/enabledbool—Activer ou désactiver le module d'effets haptiques SDF.
features/sdf/state_outputbool—Inclure l'état SDF dans les charges utiles de sortie de l'appareil par défaut.
features/sdf/max_countintplage 0–128Nombre maximal d'effets SDF actifs (0 = illimité).
features/sdf/events/createdbool—Émettre un événement lorsqu'un nouvel effet SDF est créé.
features/sdf/events/deletedbool—Émettre un événement lorsqu'un effet SDF est supprimé.
features/sdf/events/updatedbool—Émettre un événement lorsqu'un effet SDF est mis à jour.
features/sdf/probe_on_zero_force/enabledbool—Sonder automatiquement les champs SDF lorsque la force appliquée est proche de zéro.
features/sdf/probe_on_zero_force/delayfloatplage 0.001–60.0Délai avant le sondage automatique après que la force est tombée à zéro (s).

features/verse_grip_pairing/…​

Suivi de la fixation et du retrait entre Inverse3 et un Verse Grip (filaire ou sans fil). Alimente l'interface de jumelage de Haply Hub.

CléTypeContraintesDescription
features/verse_grip_pairing/enabledbool—Activer le jumelage et le suivi de fixation et de retrait.
features/verse_grip_pairing/hall_threshold_vgintplage 1–32Niveau à effet Hall à partir duquel un VerseGrip filaire est considéré comme fixé.
features/verse_grip_pairing/hall_threshold_wvgintplage 1–32Niveau à effet Hall à partir duquel un VerseGrip sans fil est considéré comme fixé.
features/verse_grip_pairing/detach_debounce_msintplage 0–1000Fenêtre d'anti-rebond avant de valider un retrait (ms).
features/verse_grip_pairing/heartbeat_msintplage 100–10000Intervalle entre les renotifications forcées (ms).
features/verse_grip_pairing/force_attachedbool—Forcer en permanence l'état fixé à true, en contournant le capteur à effet Hall (solution de contournement en cas de panne matérielle).

session/serialization/…​

Mise en forme de la sortie de transformation — affecte les charges utiles WebSocket et HTTP JSON. Ces clés ont été déplacées de serialization/* vers session/serialization/* dans la version 3.5.1 afin de refléter leur portée par session. Les anciens chemins fonctionnent toujours grâce à des alias dépréciés.

CléTypeContraintesDescription
session/serialization/explicit_fieldsbool—Inclure dans la sortie sérialisée les champs de transformation égaux à leur valeur d'identité par défaut (p. ex. position: {0,0,0}, rotation: {w:1,…}). Utile lorsque votre client exige que chaque champ soit explicitement présent. Par défaut : false.
session/serialization/force_complete_transformsbool—Toujours émettre position, rotation et scale dans chaque sortie de transformation, y compris pour les appareils à orientation seule (Verse Grip, Wireless Verse Grip), qui n'émettent autrement que rotation. Inclut session/serialization/explicit_fields. Par défaut : false.
serialization/explicit_fields (déprécié)bool—Utilisez plutôt session/serialization/explicit_fields. Les lectures et les écritures sont redirigées de façon transparente vers la clé canonique.
serialization/force_complete_transforms (déprécié)bool—Utilisez plutôt session/serialization/force_complete_transforms. Les lectures et les écritures sont redirigées de façon transparente vers la clé canonique.

session/…​

Ordonnanceur de session.

CléTypeContraintesDescription
session/min_simulation_rate_hzintplage 20–500Fréquence minimale acceptable de simulation de l'appareil (Hz) avant le déclenchement d'un avertissement.

rate/…​

Cadencement du service. Introduit dans la version 3.5.1 — les quatre clés rate/websocket/* ci-dessous se trouvaient auparavant sous session/commands/*; les anciens chemins fonctionnent toujours grâce à des alias dépréciés.

CléTypeContraintesDescription
rate/websocket/zoh_window_msint—Fenêtre de maintien d'ordre zéro — supprime les sondes reçues dans cette fenêtre (ms).
rate/websocket/drop_warning_thresholdint—Nombre de commandes perdues dans la fenêtre avant l'émission d'un avertissement.
rate/websocket/drop_warning_window_msint—Taille de la fenêtre glissante utilisée pour compter les commandes perdues (ms).
rate/websocket/tick_on_empty_batchboolavancéPlanifier un tick de main_loop même lorsqu'un lot WebSocket entier a été perdu.
session/commands/zoh_window_ms (déprécié)int—Utilisez plutôt rate/websocket/zoh_window_ms. Les lectures et les écritures sont redirigées de façon transparente.
session/commands/drop_warning_threshold (déprécié)int—Utilisez plutôt rate/websocket/drop_warning_threshold. Les lectures et les écritures sont redirigées de façon transparente.
session/commands/drop_warning_window_ms (déprécié)int—Utilisez plutôt rate/websocket/drop_warning_window_ms. Les lectures et les écritures sont redirigées de façon transparente.
session/commands/tick_on_empty_batch (déprécié)bool—Utilisez plutôt rate/websocket/tick_on_empty_batch. Les lectures et les écritures sont redirigées de façon transparente.

Paramètres réservés à un usage interne​

Plusieurs familles de paramètres sont marquées hidden dans la version 3.5.1 et sont réservées à un usage interne — rate/dispatch/* (plafond de débit d'envoi AIMD et seuils de contre-pression), session/freeform/* (empreinte comportementale) et session/serialization/preview/* (expérimentations de sérialisation en préversion, comme la sortie en quaternions d'Euler et le routage Wireless VerseGrip). Elles sont accessibles via misc/hidden_settings à des fins de débogage, mais attendez-vous à ce qu'elles soient promues, renommées ou supprimées dans une future version mineure — ne liez pas le comportement de votre client à ces paramètres.