Mise en place d’une simulation de robot (Gazebo)
Objectif : Lancer une simulation avec Gazebo et ROS 2
Niveau du didacticiel : Avancé
Durée : 20 minutes
Contenu
Conditions préalables
Tout d’abord, vous devez installer ROS 2 et Gazebo. Vous avez deux options :
Installer à partir des packages deb. Pour vérifier quelles versions sont disponibles à partir des packages deb, veuillez consulter ce tableau.
Compiler à partir des sources :
Tâches
1 Lancer la simulation
Dans cette démo, vous allez simuler un simple robot à entraînement différentiel dans Gazebo. Vous allez utiliser l’un des mondes définis dans les exemples Gazebo appelé visualize_lidar.sdf. Pour exécuter cet exemple, vous devez exécuter la commande suivante dans un terminal :
ign gazebo -v 4 -r visualize_lidar.sdf

Lorsque la simulation est en cours d’exécution, vous pouvez vérifier les sujets fournis par Gazebo avec l’outil de ligne de commande ign
:
ign topic -l
Qui doit afficher :
/clock
/gazebo/resource_paths
/gui/camera/pose
/gui/record_video/stats
/model/vehicle_blue/odometry
/model/vehicle_blue/tf
/stats
/world/visualize_lidar_world/clock
/world/visualize_lidar_world/dynamic_pose/info
/world/visualize_lidar_world/pose/info
/world/visualize_lidar_world/scene/deletion
/world/visualize_lidar_world/scene/info
/world/visualize_lidar_world/state
/world/visualize_lidar_world/stats
Puisque vous n’avez pas encore lancé de nœuds ROS 2, la sortie de ros2 topic list
devrait être exempte de tout robot topic :
ros2 topic list
Qui doit afficher :
/parameter_events
/rosout
2 Configuration du ROS 2
Pour pouvoir communiquer notre simulation avec ROS 2, vous devez utiliser un package appelé ros_gz_bridge
. Ce package fournit un pont réseau qui permet l’échange de messages entre ROS 2 et Gazebo Transport. Vous pouvez installer ce package en tapant :
sudo apt-get install ros-rolling-ros-ign-bridge
À ce stade, vous êtes prêt à lancer un pont de ROS à Gazebo. En particulier, vous allez créer un pont pour le sujet /model/vehicle_blue/cmd_vel
:
source /opt/ros/rolling/setup.bash
ros2 run ros_gz_bridge parameter_bridge /model/vehicle_blue/cmd_vel@geometry_msgs/msg/Twist]ignition.msgs.Twist
Pour plus de détails sur le ros_gz_bridge
, veuillez consulter ce README .
Une fois que le pont est en marche, le robot est capable de suivre vos commandes motrices. Il y a deux options :
Envoyez une commande au sujet en utilisant
ros2 topic pub
ros2 topic pub /model/vehicle_blue/cmd_vel geometry_msgs/Twist "linear: { x: 0.1 }"
paquet
teleop_twist_keyboard
. Ce nœud prend les touches du clavier et les publie sous forme de messages Twist. Vous pouvez l’installer en tapant :
sudo apt-get install ros-rolling-teleop-twist-keyboard
Le sujet par défaut où
teleop_twist_keyboard
publie les messages Twist est/cmd_vel
mais vous pouvez remapper ce sujet pour utiliser le sujet utilisé dans le pont :source /opt/ros/rolling/setup.bash ros2 run teleop_twist_keyboard teleop_twist_keyboard --ros-args -r /cmd_vel:=/model/vehicle_blue/cmd_velQui affichera :
This node takes keypresses from the keyboard and publishes them as Twist messages. It works best with a US keyboard layout. --------------------------- Moving around: u i o j k l m , . For Holonomic mode (strafing), hold down the shift key: --------------------------- U I O J K L M < > t : up (+z) b : down (-z) anything else : stop q/z : increase/decrease max speeds by 10% w/x : increase/decrease only linear speed by 10% e/c : increase/decrease only angular speed by 10% CTRL-C to quit currently: speed 0.5 turn 1.0
3 Visualisation des données lidar dans ROS 2
Le robot d’entraînement diff a un lidar. Pour envoyer les données générées par Gazebo vers ROS 2, vous devez lancer un autre pont. Dans le cas où les données du lidar sont fournies dans la rubrique Gazebo Transport /lidar2
, que vous allez remapper dans le pont. Ce sujet sera disponible sous le sujet /lidar_scan
:
source /opt/ros/rolling/setup.bash
ros2 run ros_gz_bridge parameter_bridge /lidar2@sensor_msgs/msg/LaserScan[ignition.msgs.LaserScan --ros-args -r /lidar2:=/laser_scan
Pour visualiser les données du lidar dans ROS 2, vous pouvez utiliser Rviz2 :
source /opt/ros/rolling/setup.bash
rviz2
Ensuite, vous devez configurer le cadre fixe
:

Et puis cliquez dans le bouton « Ajouter » pour inclure un affichage pour visualiser le lidar :

Vous devriez maintenant voir les données du lidar dans Rviz2 :
