Aller au contenu principal

Haply Inverse SDK

Le Haply Inverse SDK est une interface indépendante du langage WebSocket + HTTP pour les appareils haptiques Haply — les Inverse3, Inverse3x, Minverse, VerseGrip et Wireless VerseGrip. Il s'exécute en tant que service local qui gère la détection des appareils, la communication série, la surveillance de la sécurité et la diffusion de l'état, de sorte que votre application n'a qu'à communiquer avec JSON via un socket.

Ses fonctionnalités comprennent :

  • Détection et gestion des appareils — répertorie et configure automatiquement les appareils Haply s connectés via une API REST HTTP.
  • Diffusion de l'état en temps réel — transmet l'état des appareils aux fréquences de contrôle haptique (plusieurs kHz) via WebSockets.
  • Traitement des commandes — exécute les commandes de force et de position avec une grande précision pour un retour haptique précis.
  • Fonctionnement en arrière-plan — s'exécute en tant que service local et assure la disponibilité des appareils, sans intervention de l'utilisateur.

Installation à l'aide du concentrateur Haply​

La manière la plus simple de commencer est d'utiliser le Haply Hub, une application de bureau permettant d'installer, d'exécuter, de configurer, de tester et de surveiller vos appareils Haply. Elle assure la mise à jour du micrologiciel, intègre le service Inverse et propose des démonstrations qui vous permettent de vérifier votre matériel avant d'écrire la moindre ligne de code.

Hub Haply

Hub Haply

Télécharger la dernière version de l'Haply Hub

Téléchargez et installez le Hub, connectez votre appareil, et le Hub vous guidera tout au long des mises à jour du micrologiciel. Une fois installé, le service Inverse s'exécute automatiquement en arrière-plan chaque fois que le Hub est ouvert.

Vous préférez une installation autonome ?

Vous pouvez également installer une version spécifique d'Inverse Service en tant que service système (Windows) ou démon (Linux / macOS), sans passer par le Hub. Consultez la section « Exécution du service » pour obtenir le lien vers le programme d'installation et les instructions.

Exemple rapide​

Connectez-vous au service, lisez la position du curseur du premier Inverse3, puis envoyez un message de maintien à force nulle pour que le service continue à diffuser les trames d'état :

import asyncio, json, websockets

async def main():
# Connect to the Haply Inverse service WebSocket
async with websockets.connect("ws://localhost:10001") as ws:
# Read the first state frame to discover the device id
first_state = json.loads(await ws.recv())
device_id = first_state["inverse3"][0]["device_id"]

# Build a zero-force keepalive command targeting that device
keepalive = {"inverse3": [{
"device_id": device_id,
"commands": {"set_cursor_force": {"vector": {"x": 0, "y": 0, "z": 0}}}
}]}

# Realtime loop: one send per tick, then read the resulting state
while True:
await ws.send(json.dumps(keepalive))
state = json.loads(await ws.recv())
pos = state["inverse3"][0]["state"]["cursor_position"]
print(f"pos: {pos}")

asyncio.run(main())
attention

Modifiez les valeurs de force avec prudence. Des valeurs de force élevées et soudaines peuvent endommager l'appareil ou entraîner un comportement inattendu.

info

Consultez la page « Conventions JSON » pour en savoir plus sur l'enveloppe des messages, les ports et les règles relatives au type de contenu.

Plus d'exemples​

Pour des tutoriels complets sur Python, C++ (nlohmann) et C++ (Glaze) — traitant du retour de force, du contrôle de position, des configurations multi-appareils, de la configuration du montage et du repère de base, ainsi que du flux d'événements — consultez la page Tutoriels.