Commandes de contrôle
Il s'agit de commandes par tick, non persistantes, envoyées à chaque commands
carte. Elles sont appliquées une fois et oubliés — si vous cessez de les envoyer, l'
appareil revient en mode veille.
Sauf indication contraire, toutes les commandes de contrôle s'effectuent exclusivement via WebSocket (il n'existe pas d'équivalent HTTP).
set_cursor_force
Appliquez une force cartésienne au curseur (effecteur terminal).
{
"inverse3": [{
"device_id": "049D",
"commands": {
"set_cursor_force": {
"vector": { "x": 0.0, "y": 0.0, "z": 1.5 }
}
}
}]
}
| Champ d'application | Type | Description |
|---|---|---|
vector | vec3 | Force en newtons, dans l'espace d'application |
Les forces s'additionnent au cours d'un tick : les différentes sources (votre application, SDF HFX, la navigation) sont additionnées avant d'être transmises à l'appareil.
set_cursor_position
Placez le curseur à l'emplacement souhaité (commande en mode position).
{
"inverse3": [{
"device_id": "049D",
"commands": {
"set_cursor_position": {
"position": { "x": 0.0, "y": -0.12, "z": 0.15 }
}
}
}]
}
| Champ d'application | Type | Description |
|---|---|---|
position | vec3 | Position cible en mètres, dans l'espace d'application |
Le service calcule la force nécessaire pour déplacer le curseur vers la cible. Si l'option « safe-trajectory » est activée, la vitesse du curseur est limitée.
set_angular_torques
Appliquer des couples aux trois articulations (régulation en mode force angulaire).
{
"inverse3": [{
"device_id": "049D",
"commands": {
"set_angular_torques": {
"torques": { "a0": 0.0, "a1": 0.0, "a2": 0.0 }
}
}
}]
}
| Champ d'application | Type | Description |
|---|---|---|
torques | angles3 | Couples articulaires |
set_angular_position
Régler les articulations sur des angles cibles (régulation en mode de position angulaire).
{
"inverse3": [{
"device_id": "049D",
"commands": {
"set_angular_position": {
"angles": { "a0": 30.0, "a1": 45.0, "a2": 60.0 }
}
}
}]
}
| Champ d'application | Type | Description |
|---|---|---|
angles | angles3 | Angles articulaires cibles en degrés |
set_transform
Définissez la transformation de l'espace de travail (espace matériel → espace application). Contrairement aux autres
commandes, set_transform est persistant — le service mémorise la dernière
valeur que vous avez envoyée. Vous pouvez la transmettre en continu pendant le déplacement de la caméra, ou l'envoyer une seule fois et ne plus y toucher.
- 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}}}'
Pour les dispositifs de préhension, uniquement rotation a un effet. position et scale sont
acceptées pour assurer la cohérence du schéma avec Inverse3 n'ont aucun effet sur la prise.
Si vous avez besoin d'un déplacement continu, utilisez le Module de navigation
au lieu de diffuser manuellement set_transform — il gère pour vous la physique, le
retour haptique et les limites de l'espace de travail.
probe_position / probe_orientation
Messages de maintien de connexion à des fins de surveillance uniquement pour les sessions qui n'envoient pas de commandes de contrôle (par exemple, les appareils de surveillance Haply ).
{
"inverse3": [{ "device_id": "049D", "commands": { "probe_position": {} } }]
}
{
"verse_grip": [{ "device_id": "DEF456", "commands": { "probe_orientation": {} } }]
}
Si votre session envoie déjà une commande de contrôle (set_cursor_force,
set_cursor_position, etc.), l'état de l'appareil est actualisé automatiquement à
chaque réponse. Les sondes ne sont utiles que pour les sessions de surveillance en lecture seule.