Aller au contenu principal

🛠️ TP : Navigation avec TurtleBot3

Partie 1 — Mise en route du TurtleBot3 et téléopération

Configuration réseau

Avant toute manipulation, assurez-vous que votre PC (Remote PC) et votre TurtleBot3 est connecté au même réseau.

Évitez les conflits réseau entre groupes

ROS 2 utilise un système de communication basé sur le multicast.
Si deux groupes utilisent la même configuration réseau (même ROS_DOMAIN_ID, même nom d'hôte, etc.), cela provoque des interférences entre leurs robots : téléopération instable, messages croisés, contrôles partagés...

Pour éviter cela, chaque groupe doit utiliser un ROS_DOMAIN_ID unique et un nom d'hôte différent.

💻 🤖 Ajoutez la ligne suivante dans le fichier ~/.bashrc de votre PC et du TurtleBot3 :

export ROS_DOMAIN_ID=<votre_numéro_de_groupe>

🤖 Pour changer le nom d'hote du robot :

sudo hostnamectl set-hostname burger_<votre_numéro_de_groupe>

🤖 1. Bringup du robot (TB3)

Prérequis à l’installation

Avant de commencer, assurez-vous que le TurtleBot3 est correctement configuré avec l’image système recommandée et que toutes les dépendances nécessaires pour ROS 2 sont bien installées sur les deux machines.

remarque

Le terminal doit rester ouvert pendant toute la session avant de continuer les manipulations suivantes.

🤖 Sur le TurtleBot3 (via SSH), lancez :

ros2 launch turtlebot3_bringup robot.launch.py use_sim_time:=False

🎮 2. Téléopération clavier

💻 Depuis votre PC, ouvrez un nouveau terminal et lancez :

ros2 run turtlebot3_teleop teleop_keyboard

Gardez le terminal sélectionné (focus) pour pouvoir envoyer les commandes. Vous pouvez :

  • Avancer, reculer
  • Tourner à gauche / droite
  • Quittez avec Ctrl+C une fois les tests terminés
✅ À vérifier :
  • Le robot se déplace bien dans les quatre directions
  • Le délai de réaction est faible
  • Aucune perte de connexion

🗺️ Partie 2 — Création de la carte avec Cartographer

Nous allons créer une carte de l’environnement dans lequel votre TurtleBot3 évoluera.
Celle-ci sera utilisée pour la navigation autonome.

🧭 1. Lancer le système de cartographie

💻 Sur votre PC, ouvrez un terminal et lancez :

ros2 launch turtlebot3_cartographer cartographer.launch.py use_sim_time:=False

Cela démarre automatiquement :

  • 🧠 Le système SLAM (Simultaneous Localization and Mapping)
  • 🖥️ RViz pour la visualisation en temps réel
  • 📡 La récupération des données LIDAR

Vous devriez voir (voir image ci-dessous) :

  • ✅ Le repère du robot (en vert et rouge)
  • 📍 Les points du LIDAR (en noir)
  • 🧱 La carte grise qui se construit progressivement

Cartographer dans RViz

🚶‍♂️ 2. Déplacement du robot pour cartographier

💻 Dans un nouveau terminal, lancez la téléopération :

ros2 run turtlebot3_teleop teleop_keyboard

Gardez ce terminal sélectionné (fenêtre active) pour envoyer les commandes clavier.
➡️ Faites circuler doucement le robot pour couvrir toute la pièce.

La carte est générée en temps réel grâce au SLAM.
Plus vous explorez, plus la carte devient précise.

🚫 Ne quittez pas RViz ou le terminal !

La carte n’est pas sauvegardée automatiquement. Tous les processus doivent rester actifs jusqu’à la sauvegarde.

💾 3. Sauvegarder la carte

Une fois satisfait de la cartographie, sauvegardez-la :

💻 Dans un terminal, exécutez :

mkdir ~/map 
ros2 run nav2_map_server map_saver_cli -f ~/map/map_workshop

🗂️ Cela créera :

  • Un fichier map_workshop.pgm contenant l'image de la carte
  • Un fichier map_workshop.yaml contenant les métadonnées de la carte

✅ Vous pouvez maintenant fermer tous les terminaux, sauf celui du bringup du robot, qui doit rester actif.

Partie 3 — Navigation autonome avec Nav2

💻 Lancez le commande suivante pour lancer la localisation et la navigation autonome :

ros2 launch turtlebot3_navigation2 navigation2.launch.py map:=$HOME/map/map_workshop.yaml use_sim_time:=False

👀 Sur RViz vous devez voir le robot, les scans du LIDAR, les particules de AMCL et la carte que vous avez enregistrée.

📍 Si le robot est mal localisé, utilisez l'outil 2D Pose Estimate sur RViz. Cliquez et Glissez avec la souris pour positionner le robot sur la carte.

📍 Pour donner des ordres de navigation, utilisez l'outil Nav2 Goal sur RViz. Cliquez et Glissez avec la souris sur la carte là où le robot doit aller.

🧪 Partie 4 — TP : Exploration autonome

🎯 Objectif : Programmer le robot pour qu’il suive une séquence de 2 à 3 points de passage, comme lors d’une patrouille, avec un retour automatique au point de départ.

📥 Téléchargez le fichier Python du TP ci-dessous, puis modifiez-le pour répondre aux objectifs de la patrouille.

Si vous souhaitez identifier les points de passage à utiliser, vous pouvez vous servir de la fonctionnalité Publish Point dans RViz. Un simple survol dans la scène affichera les coordonnées du point sélectionné, en bas de l'interface.

🖥️ Simulation du TurtleBot3 dans Gazebo

attention

💡 À faire uniquement si vous n'avez pas de TurtleBot3 physique.

1. Installer les dépendances

cd ~/ros_workshop_ws/src
git clone -b jazzy https://github.com/ROBOTIS-GIT/turtlebot3_simulations.git

cd ~/ros_workshop_ws
colcon build --symlink-install

2. Lancer la simulation dans Gazebo

ros2 launch turtlebot3_gazebo turtlebot3_world.launch.py

Une fois la simulation lancée, vous pouvez utiliser :

  • la téléopération
  • la navigation autonome
astuce

🕒 N'oubliez pas d’ajouter use_sim_time:=true lors du lancement des commandes la navigation pour synchroniser le temps simulé.