Expérimenter avec un robot factice

Dans cette démo, nous présentons un robot de démonstration simple avec tous les composants, de la publication d’états communs à la publication de fausses données laser jusqu’à la visualisation du modèle de robot sur une carte dans RViz.

Lancement de la démo

Nous supposons que votre répertoire d’installation ROS 2 est ~/ros2_ws. Veuillez modifier les répertoires en fonction de votre plate-forme.

Pour démarrer la démo, nous exécutons le fichier de lancement de démo bringup, que nous allons expliquer plus en détail dans la section suivante.

source ~/ros2_ws/install/setup.bash
ros2 launch dummy_robot_bringup dummy_robot_bringup.launch.py

Vous devriez voir quelques impressions à l’intérieur de votre terminal dans le sens de ce qui suit :

[INFO] [launch]: process[dummy_map_server-1]: started with pid [25812]
[INFO] [launch]: process[robot_state_publisher-2]: started with pid [25813]
[INFO] [launch]: process[dummy_joint_states-3]: started with pid [25814]
[INFO] [launch]: process[dummy_laser-4]: started with pid [25815]
Initialize urdf model from file: /home/mikael/work/ros2/bouncy_ws/install_debug_isolated/dummy_robot_bringup/share/dummy_robot_bringup/launch/single_rrbot.urdf
Parsing robot urdf xml string.
Link single_rrbot_link1 had 1 children
Link single_rrbot_link2 had 1 children
Link single_rrbot_link3 had 2 children
Link single_rrbot_camera_link had 0 children
Link single_rrbot_hokuyo_link had 0 children
got segment single_rrbot_camera_link
got segment single_rrbot_hokuyo_link
got segment single_rrbot_link1
got segment single_rrbot_link2
got segment single_rrbot_link3
got segment world
Adding fixed segment from world to single_rrbot_link1
Adding moving segment from single_rrbot_link1 to single_rrbot_link2
[INFO] [dummy_laser]: angle inc:    0.004363
[INFO] [dummy_laser]: scan size:    1081
[INFO] [dummy_laser]: scan time increment:  0.000028
Adding moving segment from single_rrbot_link2 to single_rrbot_link3
Adding fixed segment from single_rrbot_link3 to single_rrbot_camera_link
Adding fixed segment from single_rrbot_link3 to single_rrbot_hokuyo_link

Si vous ouvrez maintenant dans un prochain terminal votre RViz, vous verrez votre robot. 🎉

$ source <ROS2_INSTALL_FOLDER>/setup.bash
$ rviz2

Cela ouvre RViz2. En supposant que votre dummy_robot_bringup soit toujours lancé, vous pouvez maintenant ajouter le plugin d’affichage TF et configurer votre cadre global sur world. Une fois que vous avez fait cela, vous devriez voir une image similaire :

../../_images/rviz-dummy-robot.png

Ce qui se passe?

Si vous regardez de plus près le fichier de lancement, nous démarrons quelques nœuds en même temps.

  • dummy_map_server

  • mannequin_laser

  • dummy_joint_states

  • robot_state_publisher

Les deux premiers packages sont relativement simples. Le dummy_map_server publie constamment une carte vide avec une mise à jour périodique. Le dummy_laser fait fondamentalement la même chose ; publication de faux scans laser factices.

Le nœud dummy_joint_states publie de fausses données d’état commun. Comme nous publions un RRbot simple avec seulement deux articulations, ce nœud publie des valeurs d’états conjoints pour ces deux articulations.

Le robot_state_publisher fait le vrai travail intéressant. Il analyse le fichier URDF donné, extrait le modèle de robot et écoute les états conjoints entrants. Avec ces informations, il publie les valeurs TF pour notre robot que nous visualisons dans RViz.

Hourra !