Zum Hauptinhalt springen

Anleitungen

Jedes Tutorial ist ein eigenständiges Programm, das eine Funktion des Inverse Service veranschaulicht. Es werden drei Sprachvarianten nebeneinander bereitgestellt, damit Sie die jeweiligen Sprachgewohnheiten vergleichen und die für Ihr Projekt geeignete Plattform auswählen können:

  • Python — der kürzeste und einfachste Einstieg (websockets + json)
  • C++ (nlohmann/json) – portabel für C++11, JSON wird zur Laufzeit geparst
  • C++ (Glaze) – modern dank C++20, Reflection zur Kompilierungszeit und Parsing ohne Speicherzuweisung, empfohlen für Echtzeit-Haptikschleifen

Der Quellcode wird in zwei öffentlichen Beispiel-Repositorys veröffentlicht:

  • haply — ein Verzeichnis pro Tutorial mit Varianten für nlohmann/json (C++11) und Glaze (C++20). Die Build-Ziele der Glaze-Variante haben das Suffix -glz.
  • haply-inverse-python-samples – ein Verzeichnis pro Tutorial.

Jede Version des Inverse Service legt in beiden Repositories ein entsprechendes Tag fest. Folgen Sie dem Branch release/<version>, um bei der Version zu bleiben, die zu dieser Dokumentation passt.

Voraussetzungen​

  • Der Inverser Dienst läuft (entweder über den Haply Hub oder den eigenständiges Installationsprogramm) auf Port 10001.
  • Es wird mindestens ein Gerät der „ Haply “-Reihe erkannt. Die Tutorials richten sich jeweils an eine bestimmte Gerätefamilie – siehe die Tabelle unten.
  • Python-Tutorials: pip install websockets (Für die Tutorials 04, 05, 06, 07, 08 und 09 wird zusätzlich benötigt keyboard, was unter Linux erweiterte Rechte erfordert; die Tutorials 08 und 09 erfordern außerdem requests).
  • C++-Tutorials: CMake 3.15+ und ein C++11-Compiler für die nlohmann-Varianten bzw. C++20 für die Glaze-Varianten (-glz). Die CMakeLists.txt auf der obersten Ebene des Beispiel-Repositorys lädt libhv, nlohmann/json und glaze über FetchContent – eine manuelle Einrichtung der Abhängigkeiten ist nicht erforderlich.

Tutorial-Liste​

#NameGeräteVariantenWas Sie lernen
00GerätelisteBeliebigPy · C++ · C++ GlazeErkennung von HTTP-Geräten, sitzungsbezogene Abfragen
01Ausgabe Inverse3Inverse3Py · C++ · C++ GlazeWebSocket-Zustandsstreaming, Keepalive ohne Kraft, Handshake mit der ersten Nachricht
02Ausgabe VerseGripVG (kabelgebunden)Py · C++ · C++ GlazeOrientierungs-Streaming, Keepalive über probe_orientation, Quaternion → Euler
03Ausgabe „Wireless VG“WVGPy · C++ · C++ GlazeTasten, Akku, Hall-Sensor
04Hallo BodenInverse3Py · C++ · C++ GlazeErster haptischer Effekt – Feder über set_cursor_force
05PositionssteuerungInverse3Py · C++ · C++ GlazeSteuerung über set_cursor_position, zufällige Ziele (C++) oder WASD-Bewegung bei gedrückter Taste (Python)
06KombiniertInverse3 WVGPy · C++ · C++ GlazeSchleife für mehrere Geräte, Cursorsteuerung über Quaternion-zu-Richtung
07Sockel & HalterungInverse3Py · C++ · C++ Glazeconfigure.basis, configure.preset sowie Laufzeit-Überschreibungen über configure.mount; gegenseitiger Ausschluss von Preset und Mount
08HTTP-FernkonfigurationInverse3Py · C++ · C++ GlazeNur für HTTP: sitzungsübergreifender Konfigurator – Sitzung anhand des Profils finden und Basis / Preset / Mount interaktiv per REST (POST) festlegen
09WS-FernsteuerungInverse3Py · C++ · C++ GlazeEchtzeit-Workspace-Navigator: Erkennung von HTTP-Sitzungen und -Geräten, anschließend Streaming von set_transform pro Takt über WebSocket
10Ereignisse—Py · C++ · C++ GlazeListener für den Ereignisstrom auf Port 10020, Filterung nach Level/Name

Tipp – Benchmark für die Haptikschleife​

Tutorial 10 (Ereignisse) ist so konzipiert, dass es parallel zu jedem anderen Tutorial durchgeführt werden kann. Wenn --no-hide-rate aktiviert ist, gibt es das Ereignis system-rate-report des Dienstes, das die effektive Gerätetaktfrequenz enthält. Vergleichen Sie die Frequenzen der Varianten Python / C++ (nlohmann) / C++ (Glaze) desselben Tutorials, um den Einfluss des Serialisierungs-Overheads auf einen Regelkreis mit etwa 4 kHz zu beobachten.

# Terminal 1 — pick a tutorial variant
./04-haply-inverse-hello-floor # C++ nlohmann
./04-haply-inverse-hello-floor-glz # C++ Glaze
python 04-haply-inverse-hello-floor.py # Python

# Terminal 2 — watch the rate
./10-haply-inverse-events --no-hide-rate