Les bases de ROS2
ROS est un Middleware Open Source pour développer des applications robotiques. Originellement développé sous Linux (Ubuntu), il est maintenant disponible sur plusieurs systèmes d'exploitation dont Debian et Windows.
Installation des prérequis et liens importants
Pour des raisons de stabilité et légèreté du système, il y a tout à penser que les déploiements de ROS dans des milieux industriels se font (robotique autonome et mobile) et se feront à l'avenir sur Ubuntu et de plus en plus Debian. L'industrie des serveurs a déjà largement adopté Debian pour sa stabilité et sa modularité. C'est pourquoi plutôt que d'apprendre la ligne de commande Windows, nous recommandons d'apprendre la ligne de commande Bash, utilisée dans Ubuntu/Debian. Pour cela, il faut installer un système (noyau) Linux, plusieurs options s'offrent à nous:
- Machine virtuelle
- Windows subsystem for Linux (WSL2)
- Machine virtuelle Linux, par exemple via VirtualBox
- Machine physique
- dual-boot Windows-Ubuntu
- PC sous Ubuntu 22.04
Notes importantes pour les installations virtuelles (deux premières options d'installation) :
- Ces installations sont suffisantes pour effectuer des simulations et du développement tant qu'il n'y a pas de Hardware à tester.
- L'accélération graphique n'est pas supportée par la carte graphique (GPU) mais par le processeur (CPU) (voir ce bug)
- un PC avec 32Go de RAM est recommandé si des composants imposants de ROS doivent être compilés, par exemple pour utiliser la version de développement MoveIt 2 Rolling. En effet Windows consomme à lui seul près de 4-8Go, Ubuntu >2Go et la compilation >4Go, on peut vite atteindre la saturation. 16Go peuvent suffire mais il faudra compiler sans parallélisation, et fermer des applications lourdes dans Windows comme Firefox.
Ubuntu via Windows SubSystem for Linux (WSL2)
WSL2 installe une machine virtuelle avec le noyau Linux complet, supporté et managé par Microsoft Windows. Il n'y a pas besoin de droits administrateur car le logiciel est disponible dans le store Windows.
Prérequis :
Installation de Ubuntu 22 :
- Ouvrir Windows Store
- Rechercher et installer
Ubuntu
(c'est la version LTS actuelle qui sera installée, en ce moment 22.04.X) - Depuis le menu démarrer Windows, Lancer l'application
Ubuntu
. Une Terminal s'ouvre (ligne de commande Linux Bash) - Définir l'utilisateur principal, par exemple
ros2
et un mot de passe (8 caractères mini, majuscule, minuscule, chiffre, caractère spécial). - Mettre à jour Ubuntu
sudo apt update
sudo apt upgrade
Depuis Windows, pour éteindre les Machines Virtuelles Ubuntu et ainsi libérer la mémoire RAM affectée :
- Lancer l'application
Windows PowerShell
-
wsl --shutdown
Autres commandes WSL depuisWindows PowerShell
: -
wsl --status
: devrait retournerDistribution par défaut : Ubuntu
,Version par défaut : 2
(WSL2) -
wsl --list
(ouwsl -l -v
) : liste les Machines Virtuelles Linux installées via WSL (et la version WSL utilisée)
Ubuntu via VirtualBox
Télécharger et installer VirtualBox pour Windows : https://www.oracle.com/virtualization/technologies/vm/downloads/virtualbox-downloads.html
- Télécharger la VM depuis seafile (\Seafile\IHA-IDF\Smart_Prod\Formation_ROS2\UbuntuROS.ova)
- Lancer VirtualBox
- Importer la VM : Outils -> Importer -> Rechercher le fichier UbuntuROS.ova
- Démarrer la VM
- Ignorer l'erreur sur le dossier partagé Linux-Windows
Windows 10/11
Une installation native sous Windows 10 avec Visual Studio 2019 (Version Community gratuite) est possible :
Installation de ROS2 Humble
Les distributions stables publiées (pré-compilées) de ROS2 sont nommées par ordre alphabétique. Début 2023, on va installer ROS 2 Humble :
sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8
sudo apt install software-properties-common
sudo add-apt-repository universe
sudo apt update && sudo apt install curl
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg
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
sudo apt update && sudo apt upgrade
sudo apt install ros-humble-desktop-full
source /opt/ros/humble/setup.bash
echo 'source /opt/ros/humble/setup.bash' >> ~/.bashrc
Tester l'installation
https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debians.html#try-some-examples
- Ouvrir un premier Terminal :
ros2 run demo_nodes_cpp talker
- Ouvrir un second Terminal :
ros2 run demo_nodes_cpp listener
Installation d'autres versions de ROS2
Pour avoir accès à toutes les dernières fonctionnalités en cours de développement (partiellement publiées), il faut installer ROS2 Rolling, qui est une distribution en développement continu "rolling release". Par exemple en Avril 2023, l'API Python de MoveIt2 et son tutoriel ne sont disponibles que sous rolling.
On peut installer plusieurs versions de ros en parallèle. Chaque version sera installée dans /opt/ros/version
. Pour faire cohabiter les deux versions, il faut "sourcer" le bon répertoire avant de lancer un programme ros2 launch ...
ou de compiler un workspace colcon build ...
. Deux options s'offrent à nous :
- Si on bascule souvent de version : commenter les lignes
source /opt/ros/humble/setup.bash
en bas du fichier~/.bashrc
- Il faudra alors lancer la commande
source /opt/ros/humble/setup.bash
à chaque nouvelle ouverture de Terminal Bash.
- Il faudra alors lancer la commande
- Si on travaille principalement avec une version : commenter la ligne correspondant à la version principale
source /opt/ros/humble/setup.bash
en bas du fichier~/.bashrc
lorsqu'on veut utiliser la version secondaire.
Tutoriel
Pour comprendre les concepts de ROS2 par la pratique, il existe des tutoriels pour débutant. Ils reposent sur la simulation d'un robot mobile à deux roues principales développé par les développeurs de ROS en 2010 : Turtlebot. Le TurtleBot 3 est vendue par Robotis et peut être couplé à un bras manipulateur 5 axes OpenMANIPULATOR-X. Il est possible de simuler des applications de manipulation mobile avec Gazebo.
Outils utiles
Terminal multi-fenêtres Terminator
- Installer Terminator : c'est un logiciel de Ligne de commande pratique pour programmer avec ROS
- Depuis Windows Store : Rechercher et installer
Terminator (Ubuntu)
- Depuis la ligne de commande Linux :
sudo apt install terminator
- Depuis Windows Store : Rechercher et installer
- Depuis le menu démarrer Windows, Lancer
Terminator (Ubuntu)
Visual Studio Codium
Pour éviter d'alourdir la VM avec de la télémétrie Microsoft, on installe la version sans tracker de Visual Studio Code depuis un dépôt debian :
- Lancer la VM VirtualBox ou WSL (
Terminator (Ubuntu)
) - Dans Terminator, lancer les commandes suivantes :
wget https://gitlab.com/paulcarroty/vscodium-deb-rpm-repo/raw/master/pub.gpg
sudo mv pub.gpg /usr/share/keyrings/vscodium-archive-keyring.asc
echo 'deb [ signed-by=/usr/share/keyrings/vscodium-archive-keyring.asc ] https://paulcarroty.gitlab.io/vscodium-deb-rpm-repo/debs vscodium main' \
| sudo tee /etc/apt/sources.list.d/vscodium.list
sudo apt update
sudo apt install codium
- Lancer VSCodium dans la VM VirtualBox ou directement depuis Windows, lancer
VSCodium (Ubuntu)
- Ouvrir le dossier contenant le code source
/src
du projet dont vous voulez étudier/modifier le code :File --> Open Folder --> ~/ws_moveit/src
Installer Firefox dans WSL
https://askubuntu.com/questions/1444962/how-do-i-install-firefox-in-wsl-when-it-requires-snap-but-snap-doesnt-work
sudo snap remove firefox
sudo apt remove firefox
sudo add-apt-repository ppa:mozillateam/ppa
# Create a new file, it should be empty as it opens:
sudo gedit /etc/apt/preferences.d/mozillateamppa
# Insert these lines, then save and exit
Package: firefox*
Pin: release o=LP-PPA-mozillateam
Pin-Priority: 501
# after saving, do
sudo apt update
sudo apt install firefox-esr
Sources
Sauf mention contraire, le contenu de ce wiki est placé sous les termes de la licence suivante : CC Attribution-Share Alike 4.0 International