Dans ce tutoriel, nous allons voir comment installer ROS2 sur une machine Linux et notamment un Raspberry Pi 4 avec une distribution Ubuntu. ROS2 est un framework intéressant à abordé lorsqu’on travaille sur des systèmes embarqués comme les robots.
Matériel
- Ordinateur avec accès internet
- Carte SD 32Go
- Raspberry Pi+écran HDMI+clavier/souris
Ce tutoriel peut être suivit pour d’autres machines Linux
Téléchargement Ubuntu et configuration de la carte SD
Nous allons voir comment configurer la carte SD pour installer ROS2 (Iron Irwini) sur Raspberry Pi. Cette version de ROS2 est compatible avec Ubuntu Jammy.
Pour cela télécharger l’image d’Ubuntu (Jammy jellyfish) ou sélectionnez l’OS sous Raspberry Pi Imager > General OS > Ubuntu > Ubuntu Desktop 22.04.3 LTS (64bits)
N.B.: vous pouvez retrouver la compatibilité des versions entre ROS et OS et les noms des versions Ubuntu pour vérifier que vous installez les bonnes versions. Sélectionnez la version 64bits pour un meilleur support (tier1)
Installer l’image de l’OS à l’aide de Raspberry Pi Imager sur la carte SD
Une fois l’image écrite sur la carte SD vous pouvez l’insérer dans le Raspberry Pi puis le mettre sous tension.
Vous pouvez ensuite suivre les instructions de configuration sur l’écran du Raspberry Pi.
Configurer la connexion à distance
Vous pouvez, si vous le désirez, configurer la connexion à distance sur Raspberry Pi. Cette étape est optionnelle mais peut vous simplifier la vie lorsque vous développerez sur ROS2 sous Raspberry Pi.
N.B.: sur Ubuntu, pour vous connecter à distance sans moniteur, vous devez modifier le fichier /boot/firmware/config.txt
#dtoverlay=vc4-kms-v3d
hdmi_force_hotplug=1
hdmi_group=1
hdmi_mode=16
Installation de ROS2
Pour l’installation de ROS2, vous devez tout d’abord vérifier que le téléchargement de dépôt Universe est activé. Dans Software & Updates > Ubuntu Software
Ajouter ensuite la clé GPG pour ROS2
sudo apt install curl -y
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
Puis ajouter le dépôt à la liste des sources (/etc/source.list.d)
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
Pour le développement, vous pouvez installer les outils de dev
sudo apt update && sudo apt install ros-dev-tools
Vous pouvez enfin installer ROS2 en fonction de la version choisi (desktop ou base)
sudo apt install ros-iron-desktop
ou
sudo apt install ros-iron-ros-base
Pour désinstaller ROS2
Pour la désinstallation, il faut supprimer le paquet ainsi que le dépôt
sudo apt remove ~nros-iron-* && sudo apt autoremove
sudo rm /etc/apt/sources.list.d/ros2.list
sudo apt update
Premier pas avec ROS2
Une fois ROS2 installé, vous pouvez charger l’environnement avec
source /opt/ros/iron/setup.bash
Vous pouvez tester l’installation à l’aide de l’exemple talker/listener
Dans un terminal, lancer le talker
source /opt/ros/iron/setup.bash
ros2 run demo_nodes_cpp talker
Dans un second terminal lancer le listener
source /opt/ros/iron/setup.bash
ros2 run demo_nodes_py listener
Pour vérifier la liste des variables d’environnement
printenv | grep -i ROS
Pour avoir la liste des objets en exécution, vous pouvez utiliser les commandes
ros2 node list
ros2 topic list
ros2 service list
ros2 action list
Installation de TurtleSim
Un bel outil pour apprendre et bien comprendre le fonctionnement de ROS2 est TurtleSim
Vérifier son installation à l’aide de la commande
ros2 pkg executables turtlesim
Si ce n’est pas le cas, vous pouvez installer turtlesim à l’aide de la commande
sudo apt install ros-iron-turtlesim
Dans un terminal lancer turtle sim
ros2 run turtlesim turtlesim_node
Dans une autre terminal, lancer le contrôle par clavier
ros2 run turtlesim turtle_teleop_key
Pour observer ce qu’il se passe, dans un troisième terminal, espionner le topic avec la commande
ros2 topic echo /turtle1/pose
Vous pouvez retrouver la liste des topic disponible à l’aide de la commande
ros2 topic list