Zum Hauptinhalt springen

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 -glz fü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 ebenfalls requests).
  • C++-Tutorials : CMake 3.15+ und ein C++11-Compiler für die nlohmann-Varianten, C++20 für die Glaze-Varianten (-glz). Le CMakeLists.txt aus der ersten Ebene des Beispielarchivs abrufen libhv, nlohmann/json et glaze über FetchContent: Es ist keine manuelle Konfiguration der Abhängigkeiten erforderlich.

Liste der Tutorials​

#NomGeräteVariantenWas Sie lernen werden
00GerätelisteAllePy · C++ · C++ GlazeErkennung von HTTP-Geräten, auf die Sitzung beschränkte Anfragen
01Anzeige Inverse3Inverse3Py · C++ · C++ GlazeÜbertragung des WebSocket-Status, Aufrechterhaltung der Verbindung ohne Aufwand, erster Datenaustausch bei der ersten Nachricht
02VerseGrip-AnzeigeVG mit KabelanschlussPy · C++ · C++ GlazeVerbreitung der Ausrichtung, Aufrechterhaltung der Verbindung mit probe_orientation, Quaternion nach Euler
03Drahtlose VG-AnzeigeWVGPy · C++ · C++ GlazeTasten, Batterie, Hall-Sensor
04Hallo FloorInverse3Py · C++ · C++ GlazeErster haptischer Effekt: Strafstoß set_cursor_force
05PositionskontrolleInverse3Py · C++ · C++ GlazeKontrolle set_cursor_position, zufällige Ziele (C++) oder gedrückte WASD-Tasten (Python)
06KombiniertInverse3 WVGPy · C++ · C++ GlazeMehrgeräteschleife, Steuerung des Cursors anhand der aus dem Quaternion abgeleiteten Richtung
07Sockel und MontageInverse3Py · C++ · C++ GlazeErsetzungen während der Ausführung configure.basis, configure.preset et configure.mount ; gegenseitiger Ausschluss zwischen Voreinstellung und Montage
08HTTP-FernkonfigurationInverse3Py · C++ · C++ GlazeHTTP-spezifischer Konfigurator zwischen Sitzungen: Erkennung einer Sitzung pro Profil, anschließend interaktives Senden von Basisdaten / Voreinstellungen / Konfiguration per POST über REST
09Fernbedienung WSInverse3Py · C++ · C++ GlazeEchtzeit-Arbeitsbereichs-Browser: Erkennung von HTTP-Sitzungen und -Geräten, gefolgt von der Übertragung von set_transform bei jedem Zyklus über WebSocket
10Veranstaltungen—Py · C++ · C++ GlazeEvent-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