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 (Châssis et mécanique).

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.

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 :

<mesh filename="package://ratbot_description/meshes/chassis.dae"/>

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 <mesh>) ;

  • 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 :

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.