Ce projet consiste à concevoir, modéliser et simuler un robot mobile à quatre roues motorisées sous ROS2. Le robot utilise une cinématique de type "Skid-Steer" (direction par glissement), où les deux roues de chaque côté sont synchronisées pour diriger le châssis.
- Châssis : Plateforme rectangulaire de 1370 x 1050 mm.
- Propulsion : 4 roues cylindriques (diamètre 150 mm) motorisées.
- Environnement : Ubuntu 24.04 (WSL) & ROS2 Jazzy.
- Outils :
- URDF/Xacro : Description du modèle physique et visuel.
- RViz2 : Visualisation des capteurs et de la structure.
- Gazebo : Simulation physique.
Ce projet est conçu pour fonctionner avec Ubuntu 24.04 et ROS2 Jazzy.
Vérifiez que ROS2 Jazzy est installé. Sinon, utilisez les commandes suivantes :
sudo apt update && sudo apt upgrade -y
sudo apt install ros-jazzy-desktop -y- Installer les paquets nécessaires
Installez les outils requis pour la simulation et le contrôle :
sudo apt install -y \
ros-jazzy-xacro \
ros-jazzy-joint-state-publisher-gui \
ros-jazzy-robot-state-publisher \
ros-jazzy-ros-gz \
ros-jazzy-ros-gz-sim \
ros-jazzy-ros-gz-bridge \
ros-jazzy-gz-ros2-control \
ros-jazzy-teleop-twist-keyboard \
python3-colcon-common-extensions \
build-essential
(Optionnel)
sudo apt install -y ros-jazzy-urdf-tutorial
Ajoutez ensuite ROS2 à votre environnement :
echo "source /opt/ros/jazzy/setup.bash" >> ~/.bashrc
Créer le workspace et cloner le projet
mkdir -p ~/robot_ws
cd ~/robot_ws
git clone https://github.com/amedabou/Simulation_Robot_Mobile.git .
# Compiler le package
cd ~/robot_ws
colcon build --packages-select mon_robot_simu
# Charger automatiquement l’environnement
echo "source ~/robot_ws/install/setup.bash" >> ~/.bashrc
source ~/.bashrc
# Compiler le package
cd ~/robot_ws
colcon build --packages-select mon_robot_simu
# Charger l’environnement
source ~/.bashrc
Pour afficher le robot en 3D et tester les articulations des roues :
ros2 launch mon_robot_simu display.launch.py
ou
ros2 launch mon_robot_simu display.launch.xml
Cette commande exécute automatiquement plusieurs actions :
- Robot State Publisher : Transforme le fichier robot.urdf.xacro en modèle URDF compréhensible par ROS 2.
- Joint State Publisher GUI : Ouvre une interface de contrôle pour faire pivoter les 4 roues manuellement.
- RViz2 : Ouvre la fenêtre de visualisation 3D avec la configuration mon_robot.rviz préchargée (grille, couleurs et repères TF)
Pour tester le comportement dynamique du robot (masse, friction, moteur), utilisez le lanceur Gazebo :
ros2 launch mon_robot_simu gazebo.launch.pyou
ros2 launch mon_robot_simu gazebo.launch.xmlCette commande lance une simulation complète incluant :
-
GZ Sim : Démarre le simulateur Gazebo avec un monde (game1.sdf).
-
Robot State Publisher : Publie la structure du robot à partir du fichier Xacro.
-
Spawn Entity : Insère automatiquement le robot dans le monde à une hauteur de sécurité de 0.1m.
-
ROS GZ Bridge : Établit le pont de communication entre ROS 2 et Gazebo pour les données suivantes :
-
/cmd_vel : Commandes de mouvement (du clavier vers le robot).
-
/odom et /tf : Position du robot dans l'espace.
-
/joint_states : Rotation réelle des roues.
-
-
RViz2 : Ouvre une fenêtre de visualisation synchronisée avec la simulation physique.
Une fois la simulation lancée, ouvrez un nouveau terminal pour piloter le robot :
ros2 run teleop_twist_keyboard teleop_twist_keyboardUtilisez les touches indiquées dans le terminal pour avancer, reculer ou pivoter. Le robot utilise une logique skid-steer où les deux roues de chaque côté sont couplées.