Anleitung
Jedes Tutorial ist ein eigenständiges Programm, das eine Funktion von Inverse Service veranschaulicht. Es werden drei Sprachvarianten nebeneinander bereitgestellt, damit Sie die jeweiligen Konventionen 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) – Portierbares C++11 zur Laufzeit-Analyse von JSON
- C++ (Glaze) – Basiert auf modernem C++20, nutzt Reflection zur Kompilierungszeit und Zero-Allocation-Parsing; empfohlen für Echtzeit-Haptik-Schleifen
Der Quellcode wurde in zwei öffentlichen Beispiel-Repositories veröffentlicht:
- haply — Für jedes Tutorial gibt es ein Verzeichnis, das sowohl die Variante nlohmann/json (C++11) als auch die Variante Glaze (C++20) enthält. In den Build-Zielen ist die Glaze-Variante mit
-glzEndung. - haply-inverse-python-samples – Ein Verzeichnis pro Tutorial.
Jede Version von „Inverse Service“ wird in zwei Repositories mit einem entsprechenden Tag versehen: Bitte folgen Sie release/<version> Zweig, um die Version mit diesem Dokument abzustimmen.
Voraussetzungen
- Inverser Dienst Wird ausgeführt (über Haply Hub oder Standalone-Installationsprogramm (Starten), der Überwachungsport lautet
10001。 - Es wurde mindestens ein Gerät vom Typ „ Haply “ erkannt. Die einzelnen Anleitungen beziehen sich jeweils auf bestimmte Geräteserien; siehe dazu die folgende Tabelle.
- Python-Tutorial:
pip install websockets(Die Tutorials 04, 05, 06, 07, 08 und 09 fehlen noch)keyboard, unter Linux sind Administratorrechte erforderlich; für die Tutorials 08 und 09 sind außerdemrequests). - C++-Tutorial: Für die nlohmann-Variante sind CMake 3.15+ sowie ein C++11-kompatibler Compiler erforderlich; Glaze (
-glz) Für diese Variante ist ein C++20-kompatibler Compiler erforderlich. Im obersten Verzeichnis des Beispiel-Repositorys befindet sich die DateiCMakeLists.txtwird über FetchContent abgerufenlibhv、nlohmann/jsonundglaze, ohne dass Abhängigkeiten manuell konfiguriert werden müssen.
Liste der Tutorials
| # | Bezeichnung | Ausrüstung | Varianten | Lerninhalte |
|---|---|---|---|---|
| 00 | Geräteliste | beliebig | Py · C++ · C++ Glaze | HTTP-Geräteerkennung, Abfrage auf Sitzungsebene |
| 01 | Drucken Inverse3 | Inverse3 | Py · C++ · C++ Glaze | WebSocket-Zustands-Streaming, Zero-Effort-Keep-Alive, Handshake bei der ersten Nachricht |
| 02 | VerseGrip drucken | Kabel-VG | Py · C++ · C++ Glaze | Streaming von Körperhaltungen,probe_orientation Kinderbetreuungssuche, Quaternionen → Eulersche Winkel |
| 03 | Drucken – drahtlos VG | WVG | Py · C++ · C++ Glaze | Tasten, Batterien, Hall-Sensoren |
| 04 | Hallo Floor | Inverse3 | Py · C++ · C++ Glaze | Der erste taktile Effekt — set_cursor_force Straf-Feder |
| 05 | Positionssteuerung | Inverse3 | Py · C++ · C++ Glaze | set_cursor_position Steuerung: Zufällige Ziele (C++) oder Bewegung durch Gedrückthalten der WASD-Tasten (Python) |
| 06 | Kombination | Inverse3 WVG | Py · C++ · C++ Glaze | Mehrgeräte-Zyklus, Cursorsteuerung von Quaternionen zu Richtungen |
| 07 | Basis und Halterung | Inverse3 | Py · C++ · C++ Glaze | configure.basis、configure.presetsowie zur Laufzeit configure.mount Überschreiben; „preset“ und „mount“ schließen sich gegenseitig aus |
| 08 | HTTP-Fernkonfiguration | Inverse3 | Py · C++ · C++ Glaze | Nur für HTTP geltender sitzungsübergreifender Konfigurator: Erkennung von Sitzungen anhand von Konfigurationsprofilen (Profile) über interaktive REST-POST-Anrufe an „basis/preset/mount“ |
| 09 | WS-Fernsteuerung | Inverse3 | Py · C++ · C++ Glaze | Echtzeit-Arbeitsbereichs-Navigator: Zunächst erfolgt die Erkennung von HTTP-Sitzungen und Geräten, anschließend wird die Datenübertragung pro Tick über WebSocket gestreamt. set_transform |
| 10 | Vorfall | — | Py · C++ · C++ Glaze | Überwacht den Ereignisstrom auf Port 10020 und unterstützt die Filterung nach Ebene/Name |
Hinweis – Haptic Loop-Benchmark
Tutorial 10 (Ereignisse) ist so konzipiert, dass es parallel zu jedem anderen Tutorial durchgeführt werden kann. Aktivieren --no-hide-rate 后,它会输出服务的 system-rate-report Ein Beispiel, das eine gültige Geräte-Tick-Rate enthält. Vergleicht man die Raten der verschiedenen Varianten desselben Tutorials in Python / C++ (nlohmann) bzw. C++ (Glaze), lässt sich der Einfluss des Serialisierungsaufwands auf den Regelkreis bei etwa 4 kHz 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