Créer des applications ROS2 en C++
Développez des applications robotiques modernes avec ROS2 et C++ en maîtrisant les concepts clés de communication distribuée, DDS et architecture robotique.
Durée
4 jours
32 heures
Niveau
Intermédiaire / Avancé
Modalité
Présentiel / Distanciel
Référence
ROS01
Présentation
Cette formation permet aux développeurs C++ de concevoir des applications robotiques modernes avec ROS2. Elle couvre l'architecture distribuée, le middleware DDS, les communications ROS2, les politiques QoS ainsi que les bonnes pratiques de développement en C++.
Public concerné
- Développeurs C++ souhaitant créer des applications robotiques avec ROS2.
- Ingénieurs robotique migrant de ROS1 vers ROS2 ou démarrant avec ROS2.
- Chercheurs et ingénieurs R&D travaillant sur des robots autonomes ou industriels.
Prérequis
- Bonne maîtrise du C++ moderne.
- Expérience en programmation Linux.
- Notions de robotique souhaitées mais non obligatoires.
Objectifs de la formation
- Comprendre l'architecture distribuée de ROS2 et le rôle du middleware DDS dans la communication inter-processus.
- Sélectionner et configurer les politiques QoS adaptées aux contraintes du projet.
- Concevoir et structurer une application robotique C++ avec ROS2.
- Exploiter les simulateurs et outils de débogage ROS2.
- Utiliser les fonctionnalités avancées : composants, composition de nœuds, exécuteurs, callback groups et plugins.
Programme détaillé
- Historique de ROS : genèse, limites de ROS1 et naissance de ROS2.
- Contraintes et besoins ayant conduit à ROS2.
- Licence et communauté ROS.
- Comparaison technique ROS1 vs ROS2.
- Tour d'horizon des robots compatibles avec ROS2.
- Installation et configuration de l'environnement ROS2.
Travaux pratiques
- Installation et configuration de l'environnement ROS2.
- Architecture middleware basée sur DDS.
- QoS (Quality of Service) : introduction et concepts clés.
- Éléments fondamentaux d’une application ROS2.
- Principe du graphe de calcul ROS2.
- Architecture d’une application ROS2.
- Organisation des fichiers : workspaces, packages, sources, builds et installs.
- Structure d’un package ROS2.
- Présentation des packages disponibles.
Travaux pratiques
- Mise en place d’un workspace ROS2.
- Présentation de l’interface en ligne de commande ROS2.
- ROS2 CLI : philosophie et cohérence des commandes.
- Gestion des packages.
- Gestion des nœuds.
- Gestion des topics et des services.
- Gestion des actions.
Travaux pratiques
- Création de packages ROS2.
- Création de nœuds, topics, services et actions.
- Aperçu de CMake et ament.
- Compilation avec colcon : commandes essentielles.
- Gestion de l’espace de travail avec colcon.
- Création d’un nouveau package.
- Organisation du code d’un package ROS2.
- Implémentation d’un nœud.
- Cycle de vie des nœuds.
Travaux pratiques
- Création d’un nœud ROS2 minimal.
- Publishers et Subscribers
- Développement d’un éditeur (publisher).
- Développement d’un abonné (subscriber).
- Messages de journalisation (logging).
- QoS (Quality of Service)
- Politiques QoS.
- Profils QoS prédéfinis.
- Compatibilité QoS publisher/subscriber.
- Interfaces personnalisées
- Définition de messages.
- Génération de code C++ pour une interface personnalisée.
Travaux pratiques
- Contrôler et déplacer un robot.
- Expérimentation des politiques QoS.
- Services ROS2
- Communication synchrone avec les services.
- Implémentation d’un serveur et d’un client de service.
- Actions ROS2
- Différences entre actions et services.
- Implémentation d’un serveur et d’un client d’action.
- Annulation d’une action en cours.
Travaux pratiques
- Implémentation d’un serveur de service et d’action.
- Système de paramètres ROS2.
- Lecture et écriture de paramètres.
- Validation et application dynamique des changements.
- Fichiers de paramètres YAML.
- Présentation des fichiers de lancement (launch files).
- Lancement de plusieurs nœuds.
- Configuration d’applications ROS2.
Travaux pratiques
- Configuration d’une application ROS2 avec launch files et paramètres.
- Composants ROS2 (Components) et composition de nœuds.
- Les exécuteurs ROS2.
- Gestion des callback groups.
- Création et utilisation de plugins avec pluginlib.
Travaux pratiques
- Conversion d’un nœud ROS2 classique en composant.
- Traitement parallèle de topics haute fréquence.
- Compilation croisée d’applications ROS2.
- Débogage des applications ROS2.
- Utilisation de rosbag2 pour stocker et rejouer des messages.
- Analyse et supervision des échanges entre nœuds ROS2.
Travaux pratiques
- Compilation croisée d’une application ROS2 pour une cible Raspberry Pi.
- Débogage d’une application ROS2.
- Supervision et rejeu du déplacement d’un robot dans un espace virtuel.
- Simulation avec Gazebo.
- Les fichiers SDF.
- Plugins Gazebo.
- ros2_control : interface entre la simulation et les contrôleurs ROS2.
- Lancement d’une simulation depuis un fichier launch.
- Fichiers URDF.
- Fichiers Xacro.
Travaux pratiques
- Création et simulation d’un objet 3D.
- Interfaçage de la simulation avec ROS2.
- Communication ROS2 sur un réseau.
- Architecture distribuée et découverte des nœuds.
- Communication avec les applications ROS1.
- Configuration sécurisée des communications ROS2.
Travaux pratiques
- Faire communiquer un nœud ROS1 avec un nœud ROS2.
- Mise en place d’une configuration sécurisée pour communiquer entre les nœuds.