Le problème
Connecter du matériel sur mesure (une pince, une carte capteurs, un projet à microcontrôleur) à ROS 2 impose en général d'écrire et de maintenir un plugin C++ d'interface matérielle pour chaque appareil.
Ce que j'ai construit
hid_ros2 est une interface matérielle ros2_control unique et réutilisable pour tout périphérique qui parle le protocole USB-HID standard :
- La configuration plutôt que le code : un fichier YAML décrit les identifiants du périphérique, quels octets de chaque rapport HID correspondent à quelles articulations ou quels capteurs, et les facteurs d'échelle.
- Plug and play : les périphériques sont trouvés par identifiant et peuvent être débranchés et rebranchés en fonctionnement.
- Adapté au temps réel : accès USB-HID au niveau du noyau via
hidapi, mémoire préallouée, et jusqu'à 1 kHz sur du matériel compatible (environ 1,2 ms de latence typique dans mes mesures). - ROS 2 standard : compatible avec les contrôleurs
ros2_controlhabituels.
Résultats
- Présenté à la ROSCon FR 2025, où trois périphériques sur mesure ont été intégrés en direct pendant la session.
- Open source (Apache 2.0) : github.com/adnan-saood/hid_ros2. Le récit complet est sur le blog.
Stack : C++, ROS 2, ros2_control, hidapi, USB-HID, firmware embarqué (Teensy, ESP32, STM32).