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

Conditions préalables

Tout d’abord, vous devez installer ROS 2 et Gazebo. Vous avez deux options :

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
../../../_images/gazebo_diff_drive.png

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_vel

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

../../../_images/fixed_frame.png

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

../../../_images/add_lidar.png

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

../../../_images/rviz2.png

Résumé

Dans ce didacticiel, vous avez lancé une simulation de robot avec Gazebo, lancé des ponts avec des actionneurs et des capteurs, visualisé les données d’un capteur et déplacé un robot à entraînement différentiel.