Zum Hauptinhalt springen

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 -glz Endung.
  • 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ßerdem requests).
  • 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 Datei CMakeLists.txt wird über FetchContent abgerufen libhv、nlohmann/json und glaze, ohne dass Abhängigkeiten manuell konfiguriert werden müssen.

Liste der Tutorials​

#BezeichnungAusrüstungVariantenLerninhalte
00GerätelistebeliebigPy · C++ · C++ GlazeHTTP-Geräteerkennung, Abfrage auf Sitzungsebene
01Drucken Inverse3Inverse3Py · C++ · C++ GlazeWebSocket-Zustands-Streaming, Zero-Effort-Keep-Alive, Handshake bei der ersten Nachricht
02VerseGrip druckenKabel-VGPy · C++ · C++ GlazeStreaming von Körperhaltungen,probe_orientation Kinderbetreuungssuche, Quaternionen → Eulersche Winkel
03Drucken – drahtlos VGWVGPy · C++ · C++ GlazeTasten, Batterien, Hall-Sensoren
04Hallo FloorInverse3Py · C++ · C++ GlazeDer erste taktile Effekt — set_cursor_force Straf-Feder
05PositionssteuerungInverse3Py · C++ · C++ Glazeset_cursor_position Steuerung: Zufällige Ziele (C++) oder Bewegung durch Gedrückthalten der WASD-Tasten (Python)
06KombinationInverse3 WVGPy · C++ · C++ GlazeMehrgeräte-Zyklus, Cursorsteuerung von Quaternionen zu Richtungen
07Basis und HalterungInverse3Py · C++ · C++ Glazeconfigure.basis、configure.presetsowie zur Laufzeit configure.mount Überschreiben; „preset“ und „mount“ schließen sich gegenseitig aus
08HTTP-FernkonfigurationInverse3Py · C++ · C++ GlazeNur für HTTP geltender sitzungsübergreifender Konfigurator: Erkennung von Sitzungen anhand von Konfigurationsprofilen (Profile) über interaktive REST-POST-Anrufe an „basis/preset/mount“
09WS-FernsteuerungInverse3Py · C++ · C++ GlazeEchtzeit-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
10Vorfall—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