Les paquets du RatBot

Cette page décrit l’organisation du logiciel du robot. Elle n’est pas nécessaire pour l’utiliser : elle sert à comprendre ce que lancent les commandes, et où chercher pour aller plus loin.

Le workspace ROS 2 (ros2_ws/src/) est découpé en paquets à responsabilité unique, ce qui permet de ne lancer que les couches nécessaires à un usage donné : un robot téléopéré ne fait pas tourner la cartographie.

On ne lance pas ces paquets un par un : sur le robot, la pile démarre seule à la mise sous tension, et les commandes de La commande ratbot lancent le reste.

Organisation en couches

digraph couches { rankdir=TB; bgcolor="transparent"; node [shape=box, style="rounded,filled", fontname="sans-serif", fontsize=10, margin="0.2,0.12"]; edge [arrowhead=none, color="#999999"]; subgraph cluster_haut { label="couches optionnelles"; fontname="sans-serif"; fontsize=10; color="#cccccc"; style=dashed; slam [label="ratbot_slam", fillcolor="#e1d5e7", color="#9673a6"]; nav [label="ratbot_nav", fillcolor="#e1d5e7", color="#9673a6"]; statut [label="ratbot_status", fillcolor="#e1d5e7", color="#9673a6"]; mission [label="ratbot_mission", fillcolor="#e1d5e7", color="#9673a6"]; } bringup [label="ratbot_bringup\nbase : contrat et commande", fillcolor="#dae8fc", color="#6c8ebf"]; subgraph cluster_bas { label="source du mouvement — interchangeable"; fontname="sans-serif"; fontsize=10; color="#cccccc"; style=dashed; gazebo [label="ratbot_gazebo", fillcolor="#f5f5f5", color="#999999"]; reel [label="robot réel", fillcolor="#ffe6cc", color="#d79b00"]; sim [label="ratbot_sim", fillcolor="#f5f5f5", color="#999999"]; } calib [label="ratbot_calibration\noutil, hors chaîne", fillcolor="#fff2cc", color="#d6b656"]; slam -> bringup; nav -> bringup; statut -> bringup; mission -> bringup; bringup -> reel; bringup -> gazebo; bringup -> sim; calib -> reel [style=dashed, label=" ponctuel", fontsize=9, fontname="sans-serif"]; }

Les couches. Celle du bas est interchangeable ; les autres ne voient pas la différence.

La couche inférieure est interchangeable : simulation Gazebo, robot réel ou simulateur cinématique léger. Les couches supérieures s’abonnent aux mêmes topics dans les trois cas et ne font pas la différence : les mêmes procédures s’appliquent en simulation et sur le robot.

Note

Une exception, à corriger : ratbot_slam dépend aujourd’hui de ratbot_gazebo. La cartographie ne peut donc pas être compilée sur le Raspberry Pi du robot, où la simulation n’est pas installée ; elle s’exécute sur le PC.

ratbot_bringup — la base

Toujours lancé, en simulation comme sur le robot. Il publie la description du robot et les transformations associées, fusionne l’odométrie des roues avec la centrale inertielle (EKF), assure la liaison micro-ROS avec la carte du robot, gère le lidar, et arbitre les commandes de vitesse. Sur le robot, c’est lui que lance le service ratbot à la mise sous tension.

Cet arbitrage est nécessaire dès que plusieurs sources peuvent commander le robot — téléopération, navigation autonome, programme. Les commandes sont départagées par priorité, plafonnées en vitesse, puis soumises à l’arrêt d’urgence. La chaîne est détaillée dans Interface ROS 2.

Couches optionnelles

ratbot_slam produit des cartes (SLAM, exploration autonome) ; ratbot_nav les consomme (localisation, planification). Les deux communiquent par ratbot_maps, paquet de données sans code contenant les cartes enregistrées.

ratbot_status assure l’interface homme-machine : voyant, écran, sons et diagnostics. Il démarre avec le robot.

ratbot_mission exécute les commandes choisies dans le menu de l’écran : relancer l’exploration, sauvegarder la carte, retourner à la base, mettre en pause. Il ne démarre pas avec le robot : il se lance à part, avec la navigation ou l’exploration dont il pilote les actions, et ignore une commande dont la pile n’est pas lancée.

Inventaire

Paquet

Rôle

ratbot_description

Modèle du robot (URDF/xacro, maillages) : dimensions, articulations, position des capteurs. Utilisé par RViz, la simulation et le robot réel.

ratbot_bringup

Base commune : arbitrage twist_mux, limiteur de vitesse, garde-barrière d’arrêt d’urgence, robot_state_publisher, EKF (robot_localization), agent micro-ROS, lidar, téléopération à la manette.

ratbot_gazebo

Simulation physique : décors, spawn du robot, capteurs simulés (lidar, IMU, batterie).

ratbot_sim

Simulateurs légers sans moteur physique : base cinématique et émulateur de l’écran OLED et de ses boutons.

ratbot_slam

Cartographie (slam_toolbox) et exploration autonome (explore_lite).

ratbot_nav

Navigation (nav2) : localisation AMCL, planification, suivi de trajectoire.

ratbot_maps

Cartes enregistrées (.pgm / .yaml). Aucun code.

ratbot_status

État du robot : voyant, batterie, températures, sons, diagnostics, écran et menu.

ratbot_mission

Coordinateur de missions : exploration, sauvegarde de carte, retour à la base, pause. Lancé à part.

ratbot_msgs

Messages spécifiques au RatBot (actuellement : commande d’écran).

ratbot_calibration

Outils de calibration et de vérification : odométrie (méthode UMBmark, Calibrer l’odométrie), échelle du gyroscope (Calibrer le gyroscope), montage du lidar (Le lidar). Ce sont des outils et non une couche : ils ne servent qu’à la mise en service d’un robot ou après une intervention, et ne tournent pas pendant que le robot travaille.

Paquets externes

Trois dépendances, absentes des paquets de Humble, sont intégrées au workspace à partir de leurs sources (fichier ros2_ws/ratbot.repos) :

Paquet

Rôle

micro_ros_agent

Pont entre la carte du robot et ROS 2, sur le Raspberry Pi.

micro_ros_msgs

Messages internes de l’agent micro-ROS.

explore_lite

Exploration autonome par frontières. Il vient de la copie de RatBot (fork) du dépôt m-explore-ros2, qui corrige l’arrêt de l’exploration (voir Explorer automatiquement).

Ils sont récupérés automatiquement : sur le PC par ratbot build, à la première compilation (voir Installer le PC), sur le robot par ratbot install (voir Installer le Raspberry Pi).

Note

Workspace installé avant le 2026-10-27. Il contient encore le dépôt d’origine d”explore_lite, sans la correction : une source déjà présente n’est jamais remplacée. ratbot build le signale par un avertissement. Pour récupérer la bonne version, depuis la racine du dépôt :

rm -rf ros2_ws/src/m-explore-ros2
./scripts/ratbot build

La commande retélécharge le dépôt (accès à Internet requis), puis compile.

Lancement

Sur le robot réel, la pile de base démarre seule à la mise sous tension ; la cartographie et la navigation se lancent depuis le PC (Faire une carte, Navigation autonome). En simulation, l’ordre de lancement est décrit dans Démarrer.