Aller au contenu principal

Tutoriels

Chaque tutoriel est un programme autonome qui illustre une fonctionnalité d'Inverse Service. Trois versions linguistiques sont proposées côte à côte afin que vous puissiez comparer les expressions idiomatiques et choisir la pile la mieux adaptée à votre projet :

  • Python — la manière la plus rapide et la plus simple de commencer (websockets + json)
  • C++ (nlohmann/json) — compatible avec C++11, le JSON est analysé à l'exécution
  • C++ (Glaze) — langage moderne conforme à C++20, 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 d'exemples :

Chaque version du service Inverse associe une balise correspondante dans les deux dépôts. Suivez la branche release/<version>, afin de conserver la version correspondant à cette documentation.

Conditions préalables​

  • Der Service Inverse
    fonctionne (soit via le Hub Haply ou le programme d'installation autonome) sur le port 10001.
  • Au moins un appareil « Haply » est détecté. Les tutoriels s'adressent chacun à une famille d'appareils spécifique — voir le tableau ci-dessous.
  • Tutoriels Python: pip install websockets (les tutoriels 04, 05, 06, 07, 08 et 09 nécessitent en outre keyboard, ce qui nécessite des droits étendus sous Linux ; les tutoriels 08 et 09 nécessitent en outre requests).
  • Tutoriels C++: CMake 3.15 ou version ultérieure et un compilateur C++11 pour les variantes nlohmann, ou C++20 pour les variantes Glaze (-glz). Die CMakeLists.txt se charge au niveau supérieur du dépôt d'exemple libhv, nlohmann/json et glaze À propos de FetchContent : il n'est pas nécessaire de configurer manuellement les dépendances.

Liste des tutoriels​

#NomAppareilsVariantesCe que vous apprendrez
00Liste des appareilsAu choixPy · C++ · C++ GlazeDétection des appareils HTTP, requêtes liées à une session
01Numéro Inverse3Inverse3Py · C++ · C++ GlazeDiffusion d'état WebSocket, Keepalive sans effort, handshake avec le premier message
02Édition VerseGripVG (avec câble)Py · C++ · C++ GlazeStreaming d'orientation, Keepalive via probe_orientation, Quaternion → Euler
03Édition Wireless VGWVGPy · C++ · C++ GlazeTouches, batterie, capteur à effet Hall
04Bonjour BodenInverse3Py · C++ · C++ GlazePremier effet tactile — ressort de tension au-dessus de set_cursor_force
05Commande de positionInverse3Py · C++ · C++ GlazeCommande via set_cursor_position, cibles aléatoires (C++) ou déplacement avec les touches WASD lorsque la touche est enfoncée (Python)
06CombinéInverse3 WVGPy · C++ · C++ GlazeBoucle pour plusieurs appareils, commande du curseur via la conversion « quaternion-direction »
07Socle et supportInverse3Py · C++ · C++ Glazeconfigure.basis, configure.preset ainsi que les remplacements de durée via configure.mount; incompatibilité entre « Preset » et « Mount »
08Configuration à distance via HTTPInverse3Py · C++ · C++ GlazeUniquement pour HTTP : configurateur inter-sessions — Rechercher une session à partir du profil et définir de manière interactive les paramètres « Base », « Preset » et « Mount » via REST (POST)
09Télécommande WSInverse3Py · C++ · C++ GlazeNavigateur d'espace de travail en temps réel : détection des sessions HTTP et des appareils, puis diffusion en continu de set_transform pro Takt via WebSocket
10Événements—Py · C++ · C++ GlazeÉcouteur pour le flux d'événements sur le port 10020, filtrage par niveau/nom

Conseil — Test de référence de la boucle haptique​

Le tutoriel n° 10 (Événements) est conçu pour être suivi en parallèle de n'importe quel autre tutoriel. Si --no-hide-rate est activée, l'événement system-rate-report du service qui contient la fréquence d'horloge effective de l'appareil. Comparez les fréquences des variantes Python / C++ (nlohmann) / C++ (Glaze) du même tutoriel afin d'observer l'impact de la surcharge liée à la sérialisation sur une boucle de régulation fonctionnant à 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