Aller au contenu

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.

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.

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.

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.

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.

Un nœud expose des publishers, subscribers, serveurs et clients de services, et échange des messages via topics et services

Pratique : Understanding nodes (ros2 node list, ros2 node info).

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 …).

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 …).

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 …).

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).

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 …).

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.

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