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ötigtkeyboard, was unter Linux erweiterte Rechte erfordert; die Tutorials 08 und 09 erfordern außerdemrequests). - C++-Tutorials: CMake 3.15+ und ein C++11-Compiler für die nlohmann-Varianten bzw. C++20 für die Glaze-Varianten (
-glz). DieCMakeLists.txtauf der obersten Ebene des Beispiel-Repositorys lädtlibhv,nlohmann/jsonundglazeüber FetchContent – eine manuelle Einrichtung der Abhängigkeiten ist nicht erforderlich.
Tutorial-Liste
| # | Name | Geräte | Varianten | Was Sie lernen |
|---|---|---|---|---|
| 00 | Geräteliste | Beliebig | Py · C++ · C++ Glaze | Erkennung von HTTP-Geräten, sitzungsbezogene Abfragen |
| 01 | Ausgabe Inverse3 | Inverse3 | Py · C++ · C++ Glaze | WebSocket-Zustandsstreaming, Keepalive ohne Kraft, Handshake mit der ersten Nachricht |
| 02 | Ausgabe VerseGrip | VG (kabelgebunden) | Py · C++ · C++ Glaze | Orientierungs-Streaming, Keepalive über probe_orientation, Quaternion → Euler |
| 03 | Ausgabe „Wireless VG“ | WVG | Py · C++ · C++ Glaze | Tasten, Akku, Hall-Sensor |
| 04 | Hallo Boden | Inverse3 | Py · C++ · C++ Glaze | Erster haptischer Effekt – Feder über set_cursor_force |
| 05 | Positionssteuerung | Inverse3 | Py · C++ · C++ Glaze | Steuerung über set_cursor_position, zufällige Ziele (C++) oder WASD-Bewegung bei gedrückter Taste (Python) |
| 06 | Kombiniert | Inverse3 WVG | Py · C++ · C++ Glaze | Schleife für mehrere Geräte, Cursorsteuerung über Quaternion-zu-Richtung |
| 07 | Sockel & Halterung | Inverse3 | Py · C++ · C++ Glaze | configure.basis, configure.preset sowie Laufzeit-Überschreibungen über configure.mount; gegenseitiger Ausschluss von Preset und Mount |
| 08 | HTTP-Fernkonfiguration | Inverse3 | Py · C++ · C++ Glaze | Nur für HTTP: sitzungsübergreifender Konfigurator – Sitzung anhand des Profils finden und Basis / Preset / Mount interaktiv per REST (POST) festlegen |
| 09 | WS-Fernsteuerung | Inverse3 | Py · C++ · C++ Glaze | Echtzeit-Workspace-Navigator: Erkennung von HTTP-Sitzungen und -Geräten, anschließend Streaming von set_transform pro Takt über WebSocket |
| 10 | Ereignisse | — | Py · C++ · C++ Glaze | Listener 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