Anleitungen
Jedes Tutorial ist ein eigenständiges Programm, das eine Funktion von Inverse Service veranschaulicht. Es werden drei Sprachvarianten nebeneinander vorgestellt, damit Sie die Programmierstile vergleichen und den für Ihr Projekt geeigneten Technologie-Stack auswählen können:
- Python — der kürzeste und einfachste Einstieg (
websockets+json) - C++ (nlohmann/json) – C++11-portabel, JSON-Analyse zur Laufzeit
- C++ (Glaze) – Modernes C++20 mit Kompilierungsreflexion und Analyse ohne Speicherzuweisung, empfohlen für haptische Echtzeit-Schleifen
Der Quellcode wird in zwei öffentlichen Beispiel-Repositories veröffentlicht:
- haply — ein Verzeichnis pro Tutorial, mit den Varianten nlohmann/json (C++11) und Glaze (C++20). Die Kompilierungsziele tragen das Suffix
-glzfür die Variante „Glaze“. - haply-inverse-python-samples – ein Verzeichnis pro Tutorial.
Jede Version von Inverse Service wird in beiden Repositories mit einem entsprechenden Tag versehen: Folgen Sie dem Branch release/<version> um die Version zu verwenden, die dieser Dokumentation entspricht.
Voraussetzungen
- Inverser Dienst wird gerade ausgeführt (über Haply Hub ou via le Standalone-Installationsprogramm) am Hafen
10001. - Es wurde mindestens ein Gerät vom Typ „ Haply “ erkannt. Jedes Tutorial ist auf eine bestimmte Gerätefamilie ausgerichtet; siehe die folgende Tabelle.
- Python-Tutorials :
pip install websockets(Für die Tutorials 04, 05, 06, 07, 08 und 09 ist zusätzlich erforderlich,keyboard, wofür unter Linux erweiterte Berechtigungen erforderlich sind; die Tutorials 08 und 09 erfordern ebenfallsrequests). - C++-Tutorials : CMake 3.15+ und ein C++11-Compiler für die nlohmann-Varianten, C++20 für die Glaze-Varianten (
-glz). LeCMakeLists.txtaus der ersten Ebene des Beispielarchivs abrufenlibhv,nlohmann/jsonetglazeüber FetchContent: Es ist keine manuelle Konfiguration der Abhängigkeiten erforderlich.
Liste der Tutorials
| # | Nom | Geräte | Varianten | Was Sie lernen werden |
|---|---|---|---|---|
| 00 | Geräteliste | Alle | Py · C++ · C++ Glaze | Erkennung von HTTP-Geräten, auf die Sitzung beschränkte Anfragen |
| 01 | Anzeige Inverse3 | Inverse3 | Py · C++ · C++ Glaze | Übertragung des WebSocket-Status, Aufrechterhaltung der Verbindung ohne Aufwand, erster Datenaustausch bei der ersten Nachricht |
| 02 | VerseGrip-Anzeige | VG mit Kabelanschluss | Py · C++ · C++ Glaze | Verbreitung der Ausrichtung, Aufrechterhaltung der Verbindung mit probe_orientation, Quaternion nach Euler |
| 03 | Drahtlose VG-Anzeige | WVG | Py · C++ · C++ Glaze | Tasten, Batterie, Hall-Sensor |
| 04 | Hallo Floor | Inverse3 | Py · C++ · C++ Glaze | Erster haptischer Effekt: Strafstoß set_cursor_force |
| 05 | Positionskontrolle | Inverse3 | Py · C++ · C++ Glaze | Kontrolle set_cursor_position, zufällige Ziele (C++) oder gedrückte WASD-Tasten (Python) |
| 06 | Kombiniert | Inverse3 WVG | Py · C++ · C++ Glaze | Mehrgeräteschleife, Steuerung des Cursors anhand der aus dem Quaternion abgeleiteten Richtung |
| 07 | Sockel und Montage | Inverse3 | Py · C++ · C++ Glaze | Ersetzungen während der Ausführung configure.basis, configure.preset et configure.mount ; gegenseitiger Ausschluss zwischen Voreinstellung und Montage |
| 08 | HTTP-Fernkonfiguration | Inverse3 | Py · C++ · C++ Glaze | HTTP-spezifischer Konfigurator zwischen Sitzungen: Erkennung einer Sitzung pro Profil, anschließend interaktives Senden von Basisdaten / Voreinstellungen / Konfiguration per POST über REST |
| 09 | Fernbedienung WS | Inverse3 | Py · C++ · C++ Glaze | Echtzeit-Arbeitsbereichs-Browser: Erkennung von HTTP-Sitzungen und -Geräten, gefolgt von der Übertragung von set_transform bei jedem Zyklus über WebSocket |
| 10 | Veranstaltungen | — | Py · C++ · C++ Glaze | Event-Stream-Listener auf Port 10020, Filterung nach Level und Name |
Tipp – Messung der Leistung der haptischen Schleife
Das 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, wird das Ereignis angezeigt system-rate-report des Dienstes, der die tatsächliche Taktfrequenz des Geräts umfasst. Vergleichen Sie diese Frequenz zwischen den Varianten Python / C++ (nlohmann) / C++ (Glaze) desselben Tutorials, um die Auswirkungen des Serialisierungsaufwands auf eine Regelschleife 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