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ène | Fonctionnalités | Procédure de configuration | Permanence |
|---|---|---|---|
| Conversion de base | Remapper les axes (par exemple : Z vers le haut → Y vers le haut) | session.configure.basis — Tutoriel 08 Voir (Configuration à distance HTTP) | Oui |
| Adaptateur de fixation | Dé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 travail | Dérive due à la navigation entre les caméras et les scènes | commands.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églages | Disposition du point d'origine | Orientation du bras |
|---|---|---|
defaults | Base de l'appareil | À l'avant (face avant du bras) |
arm_front | Base de l'appareil | Devant |
arm_front_centered | Au centre de l'espace de travail | Devant |
led_front | Base de l'appareil | Côté LED vers l'avant |
led_front_centered | Au centre de l'espace de travail | Côté LED vers l'avant |
custom | Manuel — 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
- WebSocket
- HTTP
{
"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 }
}
}
}
}]
}
curl -X POST "http://localhost:10001/inverse3/049D/config/mount?session=:0" \
-H "Content-Type: application/json" \
-d '{"transform":{"position":{"x":0,"y":0,"z":0},"rotation":{"w":1,"x":0,"y":0,"z":0},"scale":{"x":1,"y":1,"z":1}}}'
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.
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.
- WebSocket
- HTTP
{
"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 }
}
}
}
}]
}
curl -X POST "http://localhost:10001/inverse3/049D/state/transform?session=:0" \
-H "Content-Type: application/json" \
-d '{"transform":{"position":{"x":1,"y":0,"z":0},"rotation":{"w":1,"x":0,"y":0,"z":0},"scale":{"x":1,"y":1,"z":1}}}'
GET renvoie la conversion actuelle, etDELETE Il effectue une réinitialisation à la transformation identique.
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.
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.