Commandes de contrôle
Il s'agit de commandes par cycle, non persistantes, transmises via le dictionnaire commands de chaque appareil. Elles sont appliquées une seule fois, puis oubliées — si vous cessez de les envoyer, l'appareil revient à l'état de veille.
Toutes les commandes de contrôle sont réservées à WebSocket (il n'existe pas d'équivalent HTTP), sauf indication contraire.
set_cursor_force
Applique 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 | Type | Description |
|---|---|---|
vector | vec3 | Force en newtons, dans le domaine d'application |
Les forces s'additionnent au sein d'un même cycle : plusieurs sources (votre application, SDF HFX, la navigation) s'additionnent avant d'être transmises à l'appareil.
set_cursor_position
Ordre donné au curseur de se déplacer vers une position cible (contrôle en mode position).
{
"inverse3": [{
"device_id": "049D",
"commands": {
"set_cursor_position": {
"position": { "x": 0.0, "y": -0.12, "z": 0.15 }
}
}
}]
}
| Champ | 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 la trajectoire de sécurité (safe-trajectory) est activée, la vitesse du curseur est limitée.
set_angular_torques
Application des couples aux trois articulations (contrôle en mode force angulaire).
{
"inverse3": [{
"device_id": "049D",
"commands": {
"set_angular_torques": {
"torques": { "a0": 0.0, "a1": 0.0, "a2": 0.0 }
}
}
}]
}
| Champ | Type | Description |
|---|---|---|
torques | angles3 | Paires articulaires |
set_angular_position
Commande les articulations pour qu'elles atteignent des angles cibles (contrôle en mode de position angulaire).
{
"inverse3": [{
"device_id": "049D",
"commands": {
"set_angular_position": {
"angles": { "a0": 30.0, "a1": 45.0, "a2": 60.0 }
}
}
}]
}
| Champ | Type | Description |
|---|---|---|
angles | angles3 | Angles articulaires cibles, en degrés |
set_transform
Définit la transformation de l'espace de travail (espace de l'appareil → espace de l'application). Contrairement aux autres
commandes, set_transform est persistante — Le service enregistre la dernière
valeur envoyée. Transmettez-la en continu pendant les déplacements de la caméra, ou envoyez-la une seule fois et laissez-la telle quelle.
- 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 poignées, seul rotation a un effet. position et scale sont acceptés par souci de cohérence
avec le schéma disponible à l'adresse Inverse3, mais n'ont aucun effet sur la poignée.
Si vous avez besoin d'un déplacement continu, utilisez le module Navigation
plutôt que de transmettre set_transform manuellement et en continu — il gère pour vous les aspects physiques, le retour haptique,
et la délimitation de l'espace de travail.
probe_position / probe_orientation
Messages de maintien de connexion (keepalive) destinés uniquement à la surveillance, pour les sessions qui n'envoient pas de commandes de contrôle (par exemple, un Hub d'Haply qui surveille des appareils).
{
"inverse3": [{ "device_id": "049D", "commands": { "probe_position": {} } }]
}
{
"verse_grip": [{ "device_id": "DEF456", "commands": { "probe_orientation": {} } }]
}
Si votre session envoie déjà des commandes de contrôle (set_cursor_force,
set_cursor_position, etc.), l'état de l'appareil est mis à jour automatiquement à chaque
réponse. Les sondes ne sont utiles que pour les sessions de surveillance en lecture seule.