Anleitungen
Jedes Tutorial ist ein eigenständiges Programm, das eine Funktion des Inverse Service veranschaulicht. Es werden drei Sprachvarianten parallel bereitgestellt, sodass Sie die jeweiligen Programmierkonventionen vergleichen und den für Ihr Projekt geeigneten Stack auswählen können:
- Python — der kürzeste und einfachste Einstieg (
websockets+json) - C++ (nlohmann/json) – portables C++11, zur Laufzeit geparstes JSON
- C++ (Glaze) – modernes C++20 mit Reflection zur Kompilierungszeit und Zero-Allocation-Parsing, empfohlen für haptische Echtzeit-Schleifen
Der Quellcode wird in zwei öffentlichen Beispiel-Repositorys veröffentlicht:
- haply — ein Verzeichnis pro Tutorial mit Varianten sowohl für nlohmann/json (C++11) als auch für Glaze (C++20). Die Build-Ziele verfügen über ein
-glzSuffix für die Glaze-Variante. - haply – ein Verzeichnis pro Tutorial.
Bei jeder Veröffentlichung des Inverse Service wird in beiden Repositories ein entsprechendes Tag gesetzt: Folgen Sie den release/<version> Wechseln Sie in den Zweig, um bei der Version zu bleiben, die dieser Dokumentation entspricht.
Voraussetzungen
- Die Inverser Dienst läuft (entweder über die Haply Hub oder die Einzelinstallationsprogramm) am Anschluss
10001. - Es wurde mindestens ein Haply erkannt. Die Tutorials beziehen sich jeweils auf eine bestimmte Gerätefamilie – siehe die Tabelle unten.
- Python-Tutorials:
pip install websockets(Die Tutorials 04, 05, 06 und 07 benötigen zusätzlichkeyboard(was unter Linux erweiterte Rechte erfordert). - C++-Tutorials: CMake 3.15+ und ein C++11-Compiler für die nlohmann-Varianten, C++20 für Glaze (
-glz) Varianten. Die oberste Ebene des Beispiel-ReposCMakeLists.txtAbrufelibhv,nlohmann/jsonundglazeüber FetchContent – keine manuelle Einrichtung von Abhängigkeiten.
Liste der Tutorials
| # | Name | Geräte | Varianten | Was Sie lernen werden |
|---|---|---|---|---|
| 00 | Geräteliste | Beliebig | Py · C++ · C++ Glaze | HTTP-Geräteerkennung, Abfragen im Rahmen einer Sitzung |
| 01 | Drucken Inverse3 | Inverse3 | Py · C++ · C++ Glaze | WebSocket-Status-Streaming, Zero-Force-Keepalive, Handshake bei der ersten Nachricht |
| 02 | VerseGrip drucken | Wired VG | Py · C++ · C++ Glaze | Streaming zur Orientierung, probe_orientation Keepalive, Quaternion → Euler |
| 03 | Drucken – Wireless VG | WVG | Py · C++ · C++ Glaze | Tasten, Batterie, Hall-Sensor |
| 04 | Hallo Floor | Inverse3 | Py · C++ · C++ Glaze | Erster haptischer Effekt — set_cursor_force Straf-Feder |
| 05 | Positionskontrolle | Inverse3 | Py · C++ · C++ Glaze | set_cursor_position Steuerung: zufällige Ziele (C++) oder WASD-Steuerung (Python) |
| 06 | Kombiniert | Inverse3 WVG | Py · C++ · C++ Glaze | Mehrgeräte-Schleife, Cursorsteuerung von Quaternionen zu Richtungen |
| 07 | Sockel & Halterung | Inverse3 | Py · C++ · C++ Glaze | configure.basis, configure.presetund Laufzeit configure.mount Überschreibungen; gegenseitiger Ausschluss zwischen Voreinstellung und Einbindung |
| 08 | Remote-Konfiguration (in Kürze verfügbar) | Beliebig | Py | Fernkonfiguration von Geräten über HTTP; Erkennung von Sitzungen anhand von Profilen |
| 10 | Veranstaltungen | — | Py · C++ · C++ Glaze | Ereignisstrom-Listener auf Port 10020, Filterung nach Ebene/Name |
Tipp – Messen Sie die haptische Rückkopplungsschleife
Tutorial 10 (Ereignisse) ist so konzipiert, dass es parallel zu jedem anderen Tutorial durchgeführt werden kann. Mit --no-hide-rate Wenn diese Option aktiviert ist, gibt sie die system-rate-report Ereignis, das die effektive Taktfrequenz des Geräts enthält. Vergleichen Sie die Frequenz in den Varianten Python / C++ (nlohmann) / C++ (Glaze) desselben Tutorials, um die Auswirkungen des Serialisierungs-Overheads auf einen Regelkreis mit ca. 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