Tutoriels
Chaque tutoriel est un programme autonome qui illustre l'une des fonctionnalités d'Inverse Service. Trois variantes de langage sont fournies simultanément afin que vous puissiez comparer les syntaxes et choisir la pile la mieux adaptée à votre projet :
- Python — le point d'entrée le plus court et le plus simple (
websockets+json) - C++ (nlohmann/json) — C++11 portable, JSON analysé à l'exécution
- C++ (Glaze) — C++20 moderne avec réflexion à la compilation et analyse syntaxique sans allocation de mémoire, recommandé pour les boucles haptiques en temps réel
Le code source est publié dans deux dépôts publics contenant des exemples :
- Exemples de code C++ pour l'inversion haply — un répertoire par tutoriel, contenant à la fois les variantes nlohmann/json (C++11) et Glaze (C++20). Les cibles de compilation ont un
-glzsuffixe pour la variante Glaze. - haply — un répertoire par tutoriel.
À chaque nouvelle version du service Inverse, une balise correspondante est ajoutée aux deux dépôts : suivez les release/<version> branche afin de rester sur la version correspondant à cette documentation.
Conditions préalables
- Les Service Inverse
est en cours d'exécution (soit via le Hub Haply ou le programme d'installation autonome) sur le port10001. - Au moins un Haply a été détecté. Chaque tutoriel est destiné à une gamme d'appareils spécifique — voir le tableau ci-dessous.
- Tutoriels Python:
pip install websockets(les tutoriels 04, 05, 06 et 07 nécessitent en outrekeyboard(ce qui nécessite des privilèges élevés sous Linux). - Tutoriels C++: CMake 3.15 ou une version ultérieure et un compilateur C++11 pour les variantes nlohmann, C++20 pour Glaze (
-glz) variantes. Le répertoire de niveau supérieur du dépôt d'exempleCMakeLists.txtrécupèrelibhv,nlohmann/jsonetglazevia FetchContent — aucune configuration manuelle des dépendances.
Liste des tutoriels
| # | Nom | Dispositifs | Variantes | Ce que vous apprendrez |
|---|---|---|---|---|
| 00 | Liste des appareils | N'importe quel | Py · C++ · C++ Glaze | Détection des périphériques via HTTP, requêtes limitées à la session |
| 01 | Imprimer Inverse3 | Inverse3 | Py · C++ · C++ Glaze | Diffusion en continu de l'état WebSocket, maintien de connexion sans effort, établissement de la connexion au premier message |
| 02 | Imprimer VerseGrip | Wired VG | Py · C++ · C++ Glaze | Répartition par niveau, probe_orientation keepalive, quaternion → Euler |
| 03 | Imprimer sans fil VG | WVG | Py · C++ · C++ Glaze | Boutons, pile, capteur à effet Hall |
| 04 | Bonjour Floor | Inverse3 | Py · C++ · C++ Glaze | Premier effet haptique — set_cursor_force ressort de pénalité |
| 05 | Contrôle de position | Inverse3 | Py · C++ · C++ Glaze | set_cursor_position commandes, cibles aléatoires (C++) ou déplacement par maintien des touches WASD (Python) |
| 06 | Combiné | Inverse3 WVG | Py · C++ · C++ Glaze | Boucle multi-appareils, pilotage du curseur par conversion de quaternion en direction |
| 07 | Socle et support | Inverse3 | Py · C++ · C++ Glaze | configure.basis, configure.preset, et le temps d'exécution configure.mount Remplacements ; exclusion mutuelle entre le préréglage et le montage |
| 08 | Configuration à distance (bientôt disponible) | N'importe quel | Py | Configuration à distance des appareils via HTTP ; détection des sessions par profil |
| 10 | Evénements | — | Py · C++ · C++ Glaze | Écouteur de flux d'événements sur le port 10020, filtrage par niveau/nom |
Conseil — Évaluez la boucle haptique
Le tutoriel 10 (Événements) est conçu pour être suivi en parallèle de n'importe quel autre tutoriel. Avec --no-hide-rate s'il est activé, il affiche le system-rate-report événement, qui inclut la fréquence de tick effective du dispositif. Comparez cette fréquence entre les versions Python, C++ (nlohmann) et C++ (Glaze) du même tutoriel afin d'observer l'impact de la surcharge liée à la sérialisation sur une boucle de contrôle d'environ 4 kHz.
# 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