Zum Hauptinhalt springen

Haply Inverse SDK

Die Haply Inverse SDK ist eine sprachunabhängige Schnittstelle aus WebSocket + HTTP zu Haply-Haptikgeräten – darunter Inverse3, Inverse3x, Minverse, VerseGrip und Wireless VerseGrip. Die Schnittstelle läuft als lokaler Dienst, der Geräteerkennung, serielle Kommunikation, Sicherheitsüberwachung und Zustandsstreaming übernimmt – sodass Ihre Anwendung nur über einen Socket mit JSON kommunizieren muss.

Zu den Funktionen gehören:

  • Geräteerkennung und -verwaltung – listet verbundene Haply-Geräte auf und konfiguriert sie automatisch über eine HTTP-REST-API.
  • Echtzeit-Zustandsstreaming – liefert den Gerätezustand mit den für die haptische Steuerung nötigen Raten (im Multi-kHz-Bereich) über WebSockets.
  • Befehlsverarbeitung – führt Kraft- und Positionsbefehle mit hoher Genauigkeit für präzises haptisches Feedback aus.
  • Hintergrundbetrieb – läuft als lokaler Dienst und hält die Geräte ohne Benutzereingriff betriebsbereit.

Installation mit Haply Hub​

Der einfachste Einstieg ist der Haply Hub – eine Desktop-Anwendung zum Installieren, Ausführen, Konfigurieren, Testen und Überwachen Ihrer Haply-Geräte. Die Anwendung hält die Firmware auf dem neuesten Stand, bündelt Inverse Service und enthält Demos, mit denen Sie Ihre Hardware überprüfen können, bevor Sie auch nur eine Zeile Code schreiben.

Haply Hub

Haply Hub

Laden Sie die neueste Version von Haply Hub herunter

Laden Sie den Hub herunter und installieren Sie ihn, schließen Sie Ihr Gerät an, und der Hub führt Sie durch etwaige Firmware-Updates. Nach der Installation läuft Inverse Service automatisch im Hintergrund, sobald der Hub geöffnet ist.

Bevorzugen Sie eine eigenständige Installation?

Sie können auch eine bestimmte Version von Inverse Service ohne den Hub als Systemdienst (Windows) oder Daemon (Linux / macOS) installieren. Den Link zum Installationsprogramm und die Anleitung finden Sie unter Ausführen des Dienstes.

Kurzbeispiel​

Stellen Sie eine Verbindung zum Dienst her, lesen Sie die Cursorposition des ersten Inverse3 aus und senden Sie ein Keepalive mit null Kraft, damit der Dienst weiterhin Zustandsframes streamt:

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())
warnung

Ändern Sie die Kraftwerte mit Vorsicht. Plötzlich auftretende hohe Kraftwerte können das Gerät beschädigen oder zu unerwartetem Verhalten führen.

Info

Siehe die Seite JSON-Konventionen für den Nachrichten-Envelope, die Ports und die Content-Type-Regeln.

Weitere Beispiele​

Vollständige Tutorials zu Python, C++ (nlohmann) und C++ (Glaze) – mit Kraftrückmeldung, Positionsregelung, Setups mit mehreren Geräten, Mount-/Basis-Konfiguration und Event-Streaming – finden Sie auf der Seite Tutorials.