🛠️ TP : Navigation avec TurtleBot3
Partie 1 — Mise en route du TurtleBot3 et téléopération
Avant toute manipulation, assurez-vous que votre PC (Remote PC) et votre TurtleBot3 est connecté au même réseau.
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)
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.
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

🚶♂️ 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.
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.pgmcontenant l'image de la carte - Un fichier
map_workshop.yamlcontenant 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
💡 À 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
🕒 N'oubliez pas d’ajouter use_sim_time:=true lors du lancement des commandes la navigation pour synchroniser le temps simulé.