Découverte de ROS 2
Dans cette première partie, vous découvrez ce qu’est ROS 2 et ses concepts
fondamentaux, en les manipulant tout de suite avec turtlesim — un petit simulateur
qui sert de bac à sable. La partie suivante réutilisera ces concepts pour construire la
première brique du projet final.
1. Qu’est-ce que ROS 2 ?
Section intitulée « 1. Qu’est-ce que ROS 2 ? »ROS 2 (Robot Operating System 2) n’est pas un système d’exploitation, mais un framework (un middleware + des outils) pour écrire des logiciels de robotique. Il fournit :
- un modèle de communication standard entre programmes (le graphe de nœuds) ;
- des outils (visualisation, simulation, enregistrement, débogage) ;
- un immense écosystème de paquets réutilisables (Nav2, MoveIt 2, ros2_control…).
Plutôt que de tout réécrire, on assemble des nœuds qui communiquent — exactement ce que vous ferez toute la semaine.
2. L’architecture : le graphe ROS 2
Section intitulée « 2. L’architecture : le graphe ROS 2 »Un système ROS 2 est un graphe : des nœuds (processus) qui s’échangent des données via des topics, services et actions. La couche réseau (RMW → DDS) gère la découverte automatique : un nœud qui démarre trouve seul les autres.
3. Bac à sable : turtlesim
Section intitulée « 3. Bac à sable : turtlesim »turtlesim est un mini-simulateur (une tortue dans une fenêtre) qui sert de bac à sable
pour voir les concepts en action. Plutôt que de réécrire les commandes ici, vous suivez
les tutoriels officiels ROS 2 (à jour, distribution Kilted) : chaque brique ci-dessous
renvoie au tutoriel correspondant, à faire en pratique.
➜ Pratique : Using turtlesim, ros2, and rqt — installer, lancer la tortue et la déplacer au clavier.
4. Les nœuds
Section intitulée « 4. Les nœuds »Un nœud est un programme ROS 2 qui fait une tâche (lire un capteur, piloter un
moteur…). Un système ROS 2 est un assemblage de nœuds qui communiquent ; turtlesim_node
et turtle_teleop_key en sont deux.

➜ Pratique : Understanding nodes
(ros2 node list, ros2 node info).
5. Les topics & messages
Section intitulée « 5. Les topics & messages »Un topic est un canal nommé en publication / abonnement (pub/sub) : un nœud publie des messages typés, d’autres s’y abonnent. C’est anonyme et asynchrone — idéal pour des flux continus (positions, images, vitesses).
➜ Pratique : Understanding topics
(ros2 topic echo /turtle1/pose, ros2 topic pub /turtle1/cmd_vel …).
6. Les services
Section intitulée « 6. Les services »Un service est un appel requête / réponse (comme une fonction distante) : synchrone, ponctuel. Utile pour une action brève qui renvoie un résultat (« remets la tortue à zéro », « calcule X », « fais apparaître une 2e tortue »).
➜ Pratique : Understanding services
(ros2 service call /clear …, /spawn …).
7. Les actions
Section intitulée « 7. Les actions »Une action est faite pour les tâches longues : requête + feedback continu + résultat final, et annulable. C’est la brique que Nav2 utilise pour « aller à une pose » (Jour 2).
➜ Pratique : Understanding actions
(ros2 action send_goal /turtle1/rotate_absolute …).
8. Les paramètres
Section intitulée « 8. Les paramètres »Les paramètres configurent un nœud au lancement (sans recompiler) : couleurs,
fréquences, seuils… Sur turtlesim, la couleur de fond est un paramètre.
➜ Pratique : Understanding parameters
(ros2 param get/set /turtlesim background_b).
9. Les launch files
Section intitulée « 9. Les launch files »Lancer chaque nœud à la main devient vite pénible. Un launch file démarre plusieurs nœuds (avec leurs paramètres) d’une seule commande — vous en avez déjà utilisé pour le SO-101 et le LeKiwi, et vous en écrirez un dans la partie suivante.
➜ Pratique : Launching nodes
(ros2 launch …).
10. Inspecter le graphe
Section intitulée « 10. Inspecter le graphe »rqt_graph affiche le graphe nœuds / topics en direct — votre meilleur outil pour
comprendre « qui parle à qui ». Il est présenté dans le tutoriel topics ci-dessus,
section rqt_graph.
Prochaine étape
Section intitulée « Prochaine étape »Vous connaissez les briques de communication. Place à la pratique sur notre projet : Première brique du projet.
Cours conçu et animé par Etienne Schmitz