Architecture générale ===================== Le robot en bref ---------------- Le RatBot est un robot mobile à entraînement différentiel conçu au laboratoire. Quatre exemplaires sont prévus dans un premier temps, d'autres pourront suivre. Chaque robot est autonome : il embarque sa propre intelligence et communique avec le reste du monde par WiFi. Le RatBot est pensé comme un **robot indépendant** : il ne dépend d'aucun projet hôte. Il expose son matériel sous forme de topics ROS 2 standards (``cmd_vel``, ``odom``, TF), et c'est au projet qui l'utilise de construire sa propre couche au-dessus. Il peut ainsi recevoir une carte d'un système extérieur, partager la sienne, ou intégrer de nouveaux capteurs sans remettre en cause son architecture. Les deux étages --------------- :: ┌──────────────────────────────────────────────────────────┐ │ RatBot │ │ │ │ ┌────────────────────┐ série ┌────────────────────┐ │ │ │ Carte STM32H750 │ 1 Mbaud │ Raspberry Pi 4 │ │ WiFi │ │ (conception labo) │◄────────►│ ROS 2 Humble │◄─┼──────────► │ │ FreeRTOS │ │ agent micro-ROS │ │ réseau │ │ micro-ROS │ │ haut niveau │ │ global │ └─────────┬──────────┘ └────────────────────┘ │ │ │ │ │ moteurs dynamixel │ │ (encodeurs → odométrie) │ └──────────────────────────────────────────────────────────┘ Répartition des rôles : - **Carte STM32H750** — le temps réel. Elle pilote les moteurs dynamixel, lit les encodeurs et calcule l'odométrie. Elle exécute FreeRTOS et un client micro-ROS : les données remontent nativement sous forme de topics ROS 2 (voir :doc:`../ros2/stm32_communication`). - **Raspberry Pi 4** — le haut niveau. Elle exécute ROS 2 Humble, fait tourner l'agent micro-ROS (pont vers la carte), publie la description du robot, et accueille les briques de plus haut niveau (navigation, carte, capteurs additionnels, couche d'intégration d'un projet hôte). Organisation du dépôt --------------------- :: ratbot/ ├── conception/ conception matérielle │ ├── kicad/ électronique (voir chapitre dédié) │ ├── 2d/ plans 2D : châssis, découpe laser, logo (DXF) │ └── 3d/ modèles 3D (à venir) ├── firmware/ firmware STM32 (FreeRTOS + micro-ROS) ├── ros2/ workspace ROS 2 de la Raspberry Pi │ └── src/ │ ├── ratbot_description/ URDF du robot │ └── ratbot_bringup/ fichiers de lancement ├── docs/ cette documentation (Sphinx) └── scripts/ scripts utilitaires Exemple d'intégration : Ubimap ------------------------------ Dans le projet *Ubimap* (perception distribuée multi-robots), les RatBots évoluent sous des caméras fixes : leur pose dérive à l'odométrie et n'est recalée que lorsqu'une caméra aperçoit le **marqueur ArUco** fixé sur leur sommet (dictionnaire ``DICT_4X4_50``, 150 × 150 mm, convention ``ratbot_N`` porte l'identifiant ``N``). Aucun paquet spécifique à Ubimap ne vit dans ce dépôt : l'intégration se fait entièrement côté Ubimap, au-dessus des topics standards du robot.