Description du robot ==================== Le paquet ``ratbot_description`` (dans ``ros2/src/``) contient la description URDF du robot, écrite en **xacro** : ``urdf/ratbot.urdf.xacro``. Contenu du modèle ----------------- Le modèle décrit une base différentielle : - ``base_footprint`` : projection du robot au sol (racine du modèle) ; - ``base_link`` : le châssis ; - ``left_wheel_link`` / ``right_wheel_link`` : les roues motrices (articulations ``continuous``) ; - ``caster_link`` : le point d'appui. Les dimensions (châssis, rayon et entraxe des roues) sont définies comme propriétés xacro en tête de fichier. Ce sont pour l'instant des **valeurs provisoires**, à remplacer par les cotes réelles de la conception mécanique (:doc:`../mechanics/chassis`). TODO : - ajouter la frame du **marqueur ArUco** (surface supérieure du robot), utile à tout système de localisation externe ; - remplacer les formes primitives par les maillages (voir ci-dessous) ; - renseigner les inerties réelles. Maillages 3D : où mettre quoi ----------------------------- Les formats CAO (STEP) ne sont pas lisibles par RViz/Gazebo : il faut distinguer la **source de conception** des **maillages exportés**. .. list-table:: :header-rows: 1 :widths: 30 35 35 * - Fichier - Emplacement - Rôle * - ``*.step`` / ``*.stp`` - ``conception/3d/`` - La source CAO, éditable — jamais référencée par l'URDF. * - ``*.dae`` (Collada) ou ``*.stl`` - ``ros2/src/ratbot_description/meshes/`` - Les exports pour l'URDF : DAE pour le *visuel* (couleurs), STL simplifié pour la *collision*. L'URDF les référence ainsi : .. code-block:: xml Règles d'export (depuis FreeCAD, Fusion 360…) : - **unités : mètres** — les CAO travaillent en millimètres, un maillage exporté en mm apparaîtra 1000 fois trop grand (sinon, ``scale="0.001 0.001 0.001"`` dans la balise ````) ; - origine et orientation du maillage cohérentes avec la frame du link ; - pour la collision, préférer une version **simplifiée** (voire garder les primitives boîte/cylindre actuelles) : Gazebo calcule les contacts dessus, la finesse ne sert à rien. Visualisation ------------- Le launch ``display.launch.py`` permet de visualiser le modèle : .. code-block:: bash source ros2/install/local_setup.bash ros2 launch ratbot_description display.launch.py Il démarre ``robot_state_publisher``, ``joint_state_publisher_gui`` et RViz. L'argument ``gui:=false`` ne lance que ``robot_state_publisher`` (utile sur le robot, sans écran). Dans RViz, ajouter un affichage *RobotModel* (topic ``/robot_description``) et choisir ``base_footprint`` comme *Fixed Frame*. Dépendances : ``xacro``, ``robot_state_publisher``, et pour la visualisation ``joint_state_publisher_gui`` et ``rviz2``.