Passer directement au contenu principal

Transformation du support et de l'espace de travail

Deux transformations permettent de déterminer la position d'un périphérique dans l'espace de l'application. Comprendre le fonctionnement de ce pipeline facilite le choix de la transformation la plus appropriée.

Chaîne de traitement des coordonnées​

ScèneFonctionnalitésProcédure de configurationPermanence
Conversion de baseRemapper les axes (par exemple : Z vers le haut → Y vers le haut)session.configure.basis — Tutoriel 08 Voir (Configuration à distance HTTP)Oui
Adaptateur de fixationDécalage physique de montage de l'appareil (position du bras, rotation, échelle)configure.mount ou bien configure.preset — Tutoriel 08 Voir (Configuration à distance HTTP)Oui
Conversion d'espace de travailDérive due à la navigation entre les caméras et les scènescommands.set_transform — Tutoriel 09 Voir (Diffusion en continu par tick via WebSocket)Oui (conservé)

Adaptateur de fixation​

Lemontageindique l'emplacement physique de l'appareil. Il s'agit du décalage du bras, de son orientation et de son échelle. Une fois configuré (ou reconfiguré lorsque l'utilisateur modifie l'installation physique), il n'est pratiquement jamais mis à jour lors de l'exécution.

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

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

PréréglagesDisposition du point d'origineOrientation du bras
defaultsBase de l'appareilÀ l'avant (face avant du bras)
arm_frontBase de l'appareilDevant
arm_front_centeredAu centre de l'espace de travailDevant
led_frontBase de l'appareilCôté LED vers l'avant
led_front_centeredAu centre de l'espace de travailCôté LED vers l'avant
customManuel — Configurer soi-même le montage—

Lorsque vous sélectionnez un préréglage, le montage, la transformation de base et l'origine de l'espace de travail sont définis simultanément.

Configurer directement le 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 }
}
}
}
}]
}
mount et preset Il n'est pas possible de les spécifier simultanément.

Le service refuse cette opération, car l'envoi des deux avec le même message rendrait le sens ambigu. Veuillez choisir l'une des deux options : le nom preset(configuration automatique du montage), ou explicite mount Conversion.

Asymétrie entre les commandes et les instantanés

Le supportEnvoyerDans ce cas, encapsulez la conversion comme suit :{ "mount": { "transform": { … } } }。 Monter à partir d'un instantanéLireDans ce cas, le format sera plat :{ "mount": { "position": …, "rotation": …, "scale": … } }。 Il s'agit d'une conception voulue. Les commandes sont uniformisées command_data En utilisant un wrapper, la capture d'écran est core::transform C'est pour le sérialiser directement.

Conversion d'espace de travail​

La transformation de l'espace de travailest une dérive d'exécutionappliquée au montage. Un cas d'utilisation typique est la navigation dans une scène. Cela consiste à effectuer des mouvements de panoramique, de rotation et de zoom dans la vue de l'application tout en laissant l'appareil physiquement au même endroit.

Les conversions de montage et les conversions d'espace de travailsonttoutes deuxpersistantes. Le service conserve la dernière valeur envoyée. La différence réside dans leur objectif et leurs performances :

  • Les montagessont conçus en partant du principe qu'ils ne seront pas modifiés une fois configurés. Ils représentent une configuration physique et sont optimisés pour des mises à jour peu fréquentes.
  • La conversion de l'espace de travailest conçue pour une diffusion en continu à haute fréquence (par exemple : à chaque image pendant la navigation de la caméra). Le pipeline interne est optimisé pour cette fréquence 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 a une incidence sur la puissance de sortie (ce qui, dans la plupart des cas, correspond au comportement escompté).

Lorsque vous modifiez l'échelle d'un support ou d'un espace de travail, la force de dessin exercée par l'appareil change. Cette mise à l'échelle est utilisée pour calculer la force de contact.Profondeur de pénétrationC'est parce que cela a une incidence. Par exemple, 2x À cette échelle, la profondeur de pénétration est réduite de moitié environ (car la scène virtuelle fait deux fois la taille de la plage de mouvement de l'appareil). Par conséquent, la force perçue est 1x environ à ce moment-làla moitiéCela donne. À l'inverse, 0.5x À cette échelle, la force est environ deux fois plus grande.

Il s'agit généralement d'un comportement souhaitable.Lorsque l'on réduit l'échelled'une scène haptique, le contact s'affaiblit naturellement (car les objets sont « plus éloignés ») ; à l'inverse,lorsqu'on l'agrandit, le contact s'intensifie. Si ce comportement n'est pas souhaité (par exemple, lorsqu'il est nécessaire de maintenir une rigidité constante même lorsque l'utilisateur effectue un zoom), veuillez corriger le gain de force en l'inversant proportionnellement à l'échelle.

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

Si un déplacement continu (navigation par bulles, dérive par contrôle de la vitesse) est nécessaire, manuellement set_transform Au lieu de diffuser en continu à chaque tick,Module de navigation Veuillez l'utiliser. Il gère à la fois la simulation physique, le retour haptique et le traitement des limites de l'espace de travail.