Créer des applications ROS2 en C++

Référence : ROS01

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.