Aller directement au corps du texte

Montage et conversion d'espaces de travail

Deux transformations permettent de déterminer la position d'un appareil dans l'espace de l'application. La compréhension du pipeline aide à choisir la bonne transformation.

Pipeline de coordonnées​

étapeRôleComment configurerStockage permanent ou non
Système de coordonnées de référenceRemappage des axes (par exemple : Z vers le haut → Y vers le haut)session.configure.basis — Tutoriel n° 08 (Configuration à distance via HTTP)Oui
Conversion des monturesDécalage physique de montage de l'appareil (position du bras, rotation, échelle)configure.mount ou bien configure.preset — Tutoriel n° 08 (Configuration à distance via HTTP)Oui
Conversion d'espaces de travailDérive liée à la caméra / à la navigation dans les scènescommands.set_transform — Tutoriel n° 09 (Diffusion en continu par tick via WebSocket)Oui (conservation de la valeur)

Conversion des montures​

Le « mount » désigne l'emplacement physique où se trouve le périphérique. Il inclut donc le décalage du bras, l'orientation et l'échelle. Une fois défini (ou lorsque l'utilisateur modifie la configuration physique de l'installation), il n'est pratiquement jamais mis à jour pendant l'exécution.

Préréglages (configuration d'usine)​

Au lieu de calculer vous-même le montage, sélectionnez un préréglage nommé :

PréréglagesPositionnement au point d'origineDirection du cancer
defaultsSocle de l'appareilFace avant (face avant du bras)
arm_frontSocle de l'appareilavant
arm_front_centeredAxé sur l'espace de travailavant
led_frontSocle de l'appareilLED latérale avant
led_front_centeredAxé sur l'espace de travailLED latérale avant
customMode manuel — Configuration manuelle du montage—

Les préréglages permettent de définir simultanément la monture, le système de coordonnées de référence et l'origine de l'espace de travail.

Configuration manuelle du montage​

{
"inverse3": [{
"device_id": "049D",
"configure": {
"mount": {
"transform": {
"position": { "x": 0.0, "y": 0.0, "z": 0.0 },
"rotation": { "x": 0.0, "y": 0.0, "z": 0.0, "w": 1.0 },
"scale": { "x": 1.0, "y": 1.0, "z": 1.0 }
}
}
}
}]
}
mountWa presetsont mutuellement exclusives

Si vous envoyez les deux éléments dans un même message, cela peut prêter à confusion ; le service refuse donc cette opération. Veuillez choisir l'un des deux : le nom spécifié preset(configuration automatique du montage) ou explicite mount Conversion.

Différences de structure entre les commandes et les instantanés

le support envoyer Les dates doivent être mises entre guillemets : { "mount": { "transform": { … } } }. Monter à partir d'un instantané À lire Il s'agit d'une structure plate non recouverte : { "mount": { "position": …, "rotation": …, "scale": … } }. Il s'agit d'une conception délibérée. La commande est intégrée à command_data Utiliser un wrapper, et les instantanés sont core::transformcar il le sérialise directement.

Conversion d'espaces de travail​

La transformation de l'espace de travail est une dérive d'exécutionappliquée au montage. Un cas d'utilisation courant est la navigation dans une scène. Il s'agit de faire un panoramique, de faire pivoter ou de zoomer/dézoomer la vue de l'application tout en laissant l'appareil physiquement immobile.

La conversion des montages et des espaces de travail est définitive. Le service mémorise la dernière valeur envoyée. La différence réside dans l'utilisation et les performances :

  • Un montageest conçu pour être configuré une seule fois et rester inchangé. Ilreprésente la configuration physique de l'installation et est optimisé pour ne faire l'objet que de rares mises à jour.
  • La conversion de l'espace de travailest conçue pour être diffusée en continu à une fréquence élevée (par exemple, à chaque image lors de la navigation avec la caméra). Le pipeline interne est optimisé pour s'adapter à ce cycle de mise à jour.
{
"inverse3": [{
"device_id": "049D",
"commands": {
"set_transform": {
"transform": {
"position": { "x": 1.0, "y": 0.0, "z": 0.0 },
"rotation": { "x": 0.0, "y": 0.0, "z": 0.0, "w": 1.0 },
"scale": { "x": 1.0, "y": 1.0, "z": 1.0 }
}
}
}
}]
}
La mise à l'échelle influe sur la puissance développée — généralement dans le sens souhaité.

Lorsque vous modifiez l'échelle d'un support ou d'un espace de travail, la force de rendu de l'appareil change. En effet, cette modification influe sur la **profondeur de pénétration** utilisée pour le calcul des forces de contact. Par exemple, 2x La mise à l'échelle réduit approximativement de moitié la profondeur de pénétration (car la scène virtuelle devient deux fois plus grande par rapport à la plage de déplacement de l'appareil). Par conséquent, la force résultante est 1xUne idée de la puissance que l'on ressent là-bas la moitiéC'est ainsi. À l'inverse, 0.5x L'effet d'échelle permet de doubler approximativement la force.

C'est généralement le comportement souhaité. Lorsque l'on réduit l'échelled'une scène haptique, le contact s'affaiblit naturellement (l'objet est alors « plus éloigné ») ; à l'inverse, lorsqu'on l'agrandit, le contact devient plus intense. Si ce n'est pas le comportement souhaité (par exemple, si la rigidité doit rester constante pendant que l'utilisateur zoome ou dézoome), corrigez-le en ajustant le gain de force dans le sens inverse.

Pour la dérive automatique, utilisez le module Navigation.

Si un déplacement continu (navigation par bulles, dérive avec contrôle de vitesse) est nécessaire, à chaque tick set_transformau lieu de le diffuser manuellement Module de navigationVeuillez l'utiliser. Ce module se charge des calculs physiques, du retour haptique et du traitement des limites de l'espace de travail.