Commandes de contrôle
Voici les informations relatives à chaque appareil : commands Il s'agit d'une commande non permanente transmise à la carte à chaque tick. La commande est Juste une fois Elle est appliquée, puis oubliée. Si l'envoi de commandes est interrompu, l'appareil revient à l'état de veille.
Sauf indication contraire, toutes les commandes de contrôle sont réservées à WebSocket(il n'existe aucune commande correspondante en HTTP).
set_cursor_force
On applique une force dans le système de coordonnées cartésiennes 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 exprimée en newtons par rapport à l'espace de l'application |
Les forces sont **additives** au sein d'un même pas. Les forces provenant de différentes sources (applications, SDF HFX, navigation) sont additionnées avant d'être transmises à l'appareil.
set_cursor_position
Ordonne au curseur de se déplacer vers la position souhaitée (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 exprimée en mètres, selon l'espace de l'application |
Le service calcule la force nécessaire pour déplacer le curseur vers la cible. Lorsque la fonction « safe-trajectory » est activée, la vitesse du curseur est limitée.
set_angular_torques
On applique un couple aux trois articulations (commande 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 | Couple articulaire |
set_angular_position
Ordonne à l'articulation de se déplacer jusqu'à l'angle cible (commande en mode 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 | Angle articulaire cible exprimé en degrés |
set_transform
Configure la conversion de l'espace de travail (espace de l'appareil → espace de l'application). Contrairement à d'autres commandes, set_transformIl est **persistant**. Le service mémorise la dernière valeur transmise. Vous pouvez diffuser en continu pendant que la caméra est en mouvement, ou vous pouvez vous contenter de l'envoyer une seule fois.
- 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}}}'
En ce qui concerne les dispositifs de préhension rotationC'est la seule solution efficace. positionet scaleCela est autorisé pour garantir la cohérence du schéma avec Inverse3, mais n'a aucune incidence sur la prise.
Si vous devez vous déplacer régulièrement, set_transformau lieu de le diffuser manuellement Module de navigationUtilisez-le. Il se charge automatiquement du calcul physique, du retour haptique et du traitement des limites de l'espace de travail.
probe_position / probe_orientation
Il s'agit d'un keepalive dédié à la surveillance, destiné aux sessions qui n'envoient pas de commandes de contrôle (par exemple, lorsque l'on surveille un appareil via Haply Hub).
{
"inverse3": [{ "device_id": "049D", "commands": { "probe_position": {} } }]
}
{
"verse_grip": [{ "device_id": "DEF456", "commands": { "probe_orientation": {} } }]
}
Si la session a déjà reçu une commande de contrôle (set_cursor_force, set_cursor_position etc.), l'état de l'appareil est automatiquement mis à jour à chaque réponse. Les sondes ne sont utiles que dans le cadre de sessions de surveillance en lecture seule.