Présentation
Le driver ROS 2 pour les systèmes NDI est une pile logicielle complète qui relie les systèmes de suivi optiques et électromagnétiques de Northern Digital Inc. (NDI) à Robot Operating System 2 (ROS 2). Cette intégration de niveau professionnel sert les applications de robotique médicale qui exigent un suivi submillimétrique : navigation chirurgicale, robotique de rééducation et analyse biomécanique.
Architecture technique
Couche d'interface matérielle
- Interface matérielle NDI : implémentation C++ sur mesure gérant la communication directe avec les systèmes NDI Polaris et Aurora
- API combinée : une interface unique pour le suivi optique (Polaris) et électromagnétique (Aurora)
- Gestion des outils : chargement et initialisation dynamiques des outils suivis à partir de fichiers de définition ROM
- Acquisition en temps réel : estimation continue de la pose à une fréquence configurable jusqu'à 60 Hz
Intégration ros2_control
- Interface capteur : implémentation conforme de
hardware_interface::SensorInterface - Diffusion d'état : publication en temps réel de poses 6 DDL (position + orientation en quaternion)
- Gestion du cycle de vie : activation et désactivation complètes, adaptées au déroulé clinique
- Paramétrage : paramètres de suivi et repères reconfigurables à l'exécution
Contrôleurs
- Rigid Pose Broadcaster : contrôleur dédié à la publication des poses des corps rigides suivis
- Multi-outils : suivi simultané de plusieurs instruments chirurgicaux ou marqueurs anatomiques
- Gestion des repères : transformations et calibration automatiques
- Gestion des erreurs : détection et reprise sur erreur complètes
Fonctionnalités clés
Suivi de précision
- Précision submillimétrique : adaptée à la navigation chirurgicale
- Pose 6 DDL : position (X, Y, Z) et orientation (quaternion) complètes
- Identification des outils : reconnaissance automatique des instruments suivis
- Rejet des valeurs aberrantes : filtrage robuste des artefacts de suivi
Fiabilité de niveau médical
- Cycle de vie sûr : activation et désactivation structurées qui évitent les transitions d'état dangereuses
- Surveillance de la connexion : contrôle continu de la liaison avec le système de suivi
- Validation des données : vérification en temps réel de la qualité du suivi
- Tolérance aux pannes : dégradation progressive et reprise après une perte de suivi temporaire
Intégration clinique
- URDF/Xacro : description complète du robot pour les systèmes chirurgicaux
- Fichiers de lancement : modèles préconfigurés pour un déploiement rapide
- Outils de calibration : procédures intégrées pour l'environnement clinique
- Documentation : guides d'utilisation clinique et protocoles de sécurité
Détails d'implémentation
Composants principaux
NdiSensorHardwareInterface
class NdiSensorHardwareInterface : public hardware_interface::SensorInterface
{
// Real-time tracking data acquisition
hardware_interface::return_type read(const rclcpp::Time & time,
const rclcpp::Duration & period) override;
// Tool initialization and management
void initializeAndEnableTools();
void loadTool(const char *toolDefinitionFilePath);
};
Contrôleur RigidPoseBroadcaster
class RigidPoseBroadcaster : public controller_interface::ControllerInterface
{
// Real-time pose publishing
controller_interface::return_type update(const rclcpp::Time & time,
const rclcpp::Duration & period) override;
};
Flux de données
- Couche matérielle : l'API NDI communique avec le matériel de suivi
- Couche d'interface : l'interface matérielle masque les spécificités du système de suivi
- Couche contrôleur : des contrôleurs dédiés traitent et publient les données
- Couche applicative : les applications cliniques consomment des messages de pose standardisés
Applications médicales
Navigation chirurgicale
- Suivi des instruments : position des outils chirurgicaux en temps réel
- Recalage patient : positionnement dynamique du patient et suivi de l'anatomie
- Surveillance de l'espace de travail : limites du champ opératoire et évitement des collisions
- Traçabilité : enregistrement complet des mouvements pour l'analyse postopératoire
Robotique de rééducation
- Analyse du mouvement : évaluation quantitative des progrès du patient
- Assistance robotique : contrôle précis des robots de rééducation
- Études biomécaniques : capture de mouvement de niveau recherche pour les études cliniques
- Suivi des progrès : indicateurs de récupération suivis dans le temps
Applications de recherche
- Test de dispositifs médicaux : validation et caractérisation
- Interaction humain-robot : étude des dynamiques d'interaction en milieu clinique
- Évaluation du geste chirurgical : mesure objective de la maîtrise
- Analyse ergonomique : optimisation de l'espace de travail chirurgical
Caractéristiques techniques
Matériel pris en charge
- NDI Polaris : suivi optique avec marqueurs passifs
- NDI Aurora : suivi électromagnétique pour la navigation interne
- Environnements mixtes : suivi optique et électromagnétique simultané
Performances
- Fréquence : jusqu'à 60 Hz en temps réel
- Latence : < 50 ms de bout en bout
- Précision : submillimétrique en position, < 0,5° en orientation
- Volume de suivi : jusqu'à 1,4 m³ pour Polaris, illimité pour Aurora (dans la portée du générateur de champ)
Prérequis logiciels
- ROS 2 Humble : plateforme principale de développement et de test
- Ubuntu 22.04 LTS : système recommandé
- Noyau temps réel : optionnel pour le temps réel strict
- API NDI : bibliothèque propriétaire de communication avec le système de suivi
Impact clinique
Ce driver permet d'intégrer des systèmes de suivi médicaux professionnels dans des applications robotiques de recherche et cliniques, au service de la chirurgie mini-invasive, de la rééducation de précision et de la collaboration humain-robot en milieu médical. Il a été validé en recherche au laboratoire ICube (Université de Strasbourg) et a contribué à plusieurs publications en robotique médicale.
Développement et collaboration
Développé en collaboration avec le laboratoire ICube de l'Université de Strasbourg, ce projet offre à la communauté de la robotique médicale un accès open source à l'intégration de systèmes de suivi professionnels. Son architecture modulaire permet de l'étendre à d'autres systèmes NDI et de l'intégrer à des plateformes robotiques médicales sur mesure.