Zum Hauptinhalt springen
Version: 3.5.x

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 -glz Suffix 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ätzlich keyboard(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-Repos CMakeLists.txt Abrufe libhv, nlohmann/jsonund glaze über FetchContent – keine manuelle Einrichtung von Abhängigkeiten.

Liste der Tutorials

#NameGeräteVariantenWas Sie lernen werden
00GerätelisteBeliebigPy · C++ · C++ GlazeHTTP-Geräteerkennung, Abfragen im Rahmen einer Sitzung
01Drucken Inverse3Inverse3Py · C++ · C++ GlazeWebSocket-Status-Streaming, Zero-Force-Keepalive, Handshake bei der ersten Nachricht
02VerseGrip druckenWired VGPy · C++ · C++ GlazeStreaming zur Orientierung, probe_orientation Keepalive, Quaternion → Euler
03Drucken – Wireless VGWVGPy · C++ · C++ GlazeTasten, Batterie, Hall-Sensor
04Hallo FloorInverse3Py · C++ · C++ GlazeErster haptischer Effekt — set_cursor_force Straf-Feder
05PositionskontrolleInverse3Py · C++ · C++ Glazeset_cursor_position Steuerung: zufällige Ziele (C++) oder WASD-Steuerung (Python)
06KombiniertInverse3 WVGPy · C++ · C++ GlazeMehrgeräte-Schleife, Cursorsteuerung von Quaternionen zu Richtungen
07Sockel & HalterungInverse3Py · C++ · C++ Glazeconfigure.basis, configure.presetund Laufzeit configure.mount Überschreibungen; gegenseitiger Ausschluss zwischen Voreinstellung und Einbindung
08Remote-Konfiguration (in Kürze verfügbar)BeliebigPyFernkonfiguration von Geräten über HTTP; Erkennung von Sitzungen anhand von Profilen
10VeranstaltungenPy · C++ · C++ GlazeEreignisstrom-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