RatBot — Guide utilisateur Logo

Découvrir

  • Introduction
  • Les principes
  • Où sont les choses
  • Noms et réseau
  • Travailler sur RatBot

Installer le poste de travail

  • Installer le PC
  • Environnement Docker

Prise en main

  • Démarrer
  • Visualiser dans RViz
  • Piloter le robot
  • Arrêter et relancer le robot

Cartographier et naviguer

  • Faire une carte
  • Navigation autonome
    • Cartographie et navigation
    • Composants
    • Prérequis
    • Étape 1 — lancer la navigation
    • Étape 2 — pose initiale
    • Étape 3 — envoi d’un but
    • Priorité et sécurité
    • Diagnostic
    • Voir aussi
  • Apprendre et refaire un trajet
  • Le capteur de distance avant
  • Explorer automatiquement
  • Travailler à plusieurs robots

Mettre en service un robot

  • Mettre en service un nouveau robot
  • Installer le Raspberry Pi
  • Le lidar
  • Calibrer l’odométrie
  • Calibrer le gyroscope
  • Les paramètres du robot
  • L’heure du robot

Surveiller et diagnostiquer

  • Voyant et sons
  • Écran, boutons et LEDs
  • Diagnostics
  • Journal de bord
  • Dépannage

Référence

  • La commande ratbot
  • Interface ROS 2
  • La simulation en détail
  • État du robot
  • Les paquets du RatBot
  • Glossaire
RatBot — Guide utilisateur
  • Navigation autonome
  • Afficher la source de la page

Navigation autonome

S’applique à : Simulation Robot réel

Déplacement autonome vers une pose de but sur une carte connue, avec évitement d’obstacles. La pile utilisée est Nav2.

Cartographie et navigation

Cartographie (SLAM)

Navigation (Nav2)

Carte

construite en ligne

chargée depuis un fichier

Pose

estimée conjointement à la carte

estimée par AMCL dans la carte

Objectif

couvrir l’environnement

atteindre une pose donnée

Commande

téléopération

autonome

Une carte préalable est donc nécessaire : voir Faire une carte. En simulation, les exemples ci-dessous utilisent le décor rooms et sa carte, fournis avec le dépôt.

Composants

Localisation (AMCL) — filtre particulaire. Un ensemble d’hypothèses de pose est propagé par l’odométrie, puis pondéré par la vraisemblance des mesures lidar au regard de la carte ; les hypothèses improbables sont éliminées par rééchantillonnage. AMCL publie la transformation map → odom ; RViz affiche la pose qui en résulte. Les particules elles-mêmes ne sont pas affichées par la configuration fournie : pour les voir, ajouter dans RViz un affichage ParticleCloud (Nav2) sur le topic /ratbot_1/particle_cloud.

AMCL doit savoir à quel point se fier à l’odométrie. En simulation, elle est presque exacte et AMCL s’y fie beaucoup ; sur le robot réel, il reste prudent. Le choix est automatique. En simulation, la position estimée est à 1 ou 2 cm près en moyenne, 5 cm au plus.

Cartes de coûts — la carte statique est augmentée de deux couches d’obstacles, alimentées en direct par le lidar et par le capteur de distance avant (Le capteur de distance avant), qui voit les obstacles trop bas pour le lidar ; puis d’une couche d’inflation qui étend le coût autour des obstacles, afin de tenir compte de l’encombrement du robot. La carte de coûts globale couvre la carte entière et sert à la planification ; la carte de coûts locale, fenêtre glissante de 3 × 3 m, permet la réaction aux obstacles non cartographiés.

Note

Jusqu’au 2026-10-14, les cartes de coûts ne recevaient pas le lidar : elles écoutaient un topic que personne ne publie, et Nav2 ne connaissait que la carte statique. Une navigation antérieure à cette date n’évitait donc aucun obstacle absent de la carte.

Planification — calcul d’un chemin dans la global costmap (NavFn). Le chemin est recalculé toutes les 10 s, ou plus tôt si le but change ou si un obstacle le rend invalide. Recalculé chaque seconde, il basculait d’un côté à l’autre d’un obstacle quand deux routes se valaient, et le robot faisait demi-tour à chaque bascule ; recalculé seulement quand il devenait invalide, un robot coincé dans l’encadrement d’une porte ne se voyait jamais proposer d’autre chemin.

La marge autour des obstacles est de 25 cm. Le centre du robot, pour la navigation, est sur l’axe des roues, tout près de l’avant ; la coque déborde de 8 cm sur les côtés et de 13 cm à l’arrière, et c’est cette marge qui l’éloigne des obstacles. Une porte de 0,7 m passe.

Suivi de trajectoire — génération des consignes de vitesse suivant ce chemin (Regulated Pure Pursuit), à fréquence élevée et en tenant compte de la local costmap.

Prérequis

Le PC prêt (Installer le PC) et une carte du décor simulé. Le dépôt en fournit trois, dans ros2_ws/src/ratbot_maps/maps/ : rooms.yaml, hampton_signature.yaml et tables.yaml.

Le PC prêt (Installer le PC), le robot allumé, et une carte de la pièce faite avec ce robot (Faire une carte). Reposez le robot sur le marquage de départ de la carte : c’est là que la localisation le suppose au lancement.

Note

Essayée sur le vrai robot : le 2026-10-16 dans un enclos de planches (neuf buts atteints, contournement d’une boîte), et le 2026-10-19 dans un couloir (quatre demi-tours à 20 cm d’un mur, sans contact). Pas encore dans une pièce meublée.

Étape 1 — lancer la navigation

Dans un premier terminal, depuis la racine du dépôt, la simulation avec le décor rooms :

./scripts/ratbot up rooms ground_truth_tf:=false

Important

ground_truth_tf:=false est obligatoire : map → odom doit être publiée par la localisation seule. Voir La simulation en détail. Si elle manque, ./scripts/ratbot nav refuse de démarrer et le rappelle.

Dans un second terminal, la navigation :

./scripts/ratbot nav 1

En simulation, la commande charge d’elle-même la carte du décor en cours, celle qui porte son nom (ici rooms), et se règle sur l’heure de la simulation. Un décor sans carte est signalé, avec la liste des cartes disponibles. Pour en choisir une autre : ./scripts/ratbot nav 1 NOM.

Depuis le PC, robot allumé :

cd ~/ratbot_ws
./scripts/ratbot nav 1 salon

salon est le nom donné à la carte en l’enregistrant (voir Faire une carte) ; ./scripts/ratbot map list liste les cartes. La commande vérifie que le robot est visible, puis lance la localisation, Nav2 et RViz.

Si le Wi-Fi coupe pendant un trajet, le robot s’arrête de lui-même : sa carte coupe les moteurs une demi-seconde après le dernier ordre reçu.

Dans les deux cas, ce lancement démarre le serveur de carte, la localisation (AMCL), la pile Nav2 et RViz préconfiguré. Le robot vise 0,17 m/s en ligne droite, passe au milieu des couloirs quand il y a la place, ne ralentit qu’à moins de 30 cm d’un obstacle, et ne tient compte des obstacles que jusqu’à 5 m : au-delà, les mesures du lidar sont trop rares pour être fiables. Un but est atteint quand le robot en est à 7 cm près (15 cm jusqu’au 2026-10-16 : il s’arrêtait 12 cm avant chaque but).

Note

Le robot se garde toujours la place de tourner. Il pivote sur l’axe de ses roues, près de son avant : en tournant sur place, son arrière décrit un cercle de 15 cm. La navigation le traite donc comme un disque de 16 cm de rayon autour de cet axe. Conséquence : un but placé à moins de 16 cm d’un mur (mesurés depuis l’axe des roues) n’est pas atteint exactement. Le robot s’arrête au point sûr le plus proche, parfois à 15 ou 20 cm du point cliqué, et annonce pourtant le but atteint. Pour arriver au centimètre près, placez le but à plus de 16 cm des obstacles.

Étape 2 — pose initiale

AMCL initialise la pose à l’origine de la carte. Si le robot démarre ailleurs, les mesures lidar ne coïncident pas avec les murs de la carte.

Utiliser l’outil 2D Pose Estimate : cliquer sur la position réelle du robot et faire glisser dans la direction de son orientation. Le robot se replace sur la carte, et les mesures lidar retombent sur les murs.

Une carte faite par ratbot slam a pour origine la place du robot au lancement de la cartographie : si on l’a déplacé depuis, la pose initiale est fausse. Dans un petit espace dont le lidar voit tout le contour (un enclos), AMCL peut se recaler de lui-même ; dans une pièce, donner la pose. Attention aux lieux symétriques (un rectangle) : vérifier que le robot regarde dans la bonne direction sur la carte.

Étape 3 — envoi d’un but

Outil 2D Goal Pose : cliquer le point d’arrivée et faire glisser pour définir l’orientation finale. Le chemin planifié s’affiche, et le robot le suit.

Équivalent en ligne de commande :

ros2 topic pub -w 1 -1 /ratbot_1/goal_pose geometry_msgs/msg/PoseStamped \
   "{header: {frame_id: map}, pose: {position: {x: 1.0, y: 0.0}, orientation: {w: 1.0}}}"

-w 1 attend que la navigation écoute avant d’envoyer le but : sans lui, le message part avant d’être entendu, et il est perdu sans erreur.

Astuce

Le but doit se situer dans une zone libre. Un but dans un obstacle ou en zone inconnue est rejeté. Une pose trop proche d’un mur peut également être inatteignable du fait du rayon d’inflation.

Priorité et sécurité

La sortie de Nav2 est publiée sur base/cmd_vel_nav, entrée de priorité la plus basse de l’arbitre (voir Interface ROS 2) :

téléopération       (priorité haute) ─┐
navigation autonome (priorité basse) ─┴─► twist_mux ─► limiteur ─► garde-barrière

La téléopération reprend donc la main sans qu’il soit nécessaire d’arrêter la navigation. L’arrêt d’urgence global s’applique également à la navigation :

ros2 topic pub --qos-reliability reliable --qos-durability transient_local \
   /ratbot_fleet/emergency_stop std_msgs/msg/Bool "data: true"

Diagnostic

Aucune réaction au clic sur un but

Vérifier l’outil utilisé (2D Goal Pose, non 2D Pose Estimate), la validité du but (zone libre), puis la réception : ros2 topic echo /ratbot_1/goal_pose.

Trajectoire aberrante, robot désorienté

Pose initiale erronée : recaler avec 2D Pose Estimate. Sur le robot réel, vérifier qu’il est parti de son marquage de départ ; en simulation, que ground_truth_tf:=false a bien été passé.

Chemin planifié mais robot immobile

Sur le robot réel : voyant orange ou rouge, le robot est arrêté — voir Arrêter et relancer le robot. En simulation : batterie simulée vide, ou incohérence d’horloge (voir Dépannage).

Mesures lidar décalées, affichage en retard

En simulation : accès à la carte graphique manquant dans le conteneur, voir Environnement Docker. Sur le robot réel : montage du lidar, voir Le lidar.

Voir aussi

  • Travailler à plusieurs robots — la navigation de plusieurs robots dans une carte commune, et ses limites actuelles ;

  • Explorer automatiquement — l’exploration autonome, qui combine la navigation et la cartographie.

Précédent Suivant

© Droits d'auteur 2026, Halim Djerroud. Mis à jour le 26/10/2026.

Compilé avec Sphinx en utilisant un thème fourni par Read the Docs.