Formation rapide — Utiliser l'environnement ROS2 (devContainer)
Ce document donne une formation rapide pour utiliser l'environnement de développement ROS2 basé sur des devContainers (VS Code Dev Containers). Il couvre l'installation rapide sous Windows (WSL2) et Linux, comment ouvrir le dépôt dans un conteneur, et les commandes usuelles pour compiler et lancer la simulation (Gazebo + RViz2).
Pré-requis
- Docker installé et en fonctionnement.
- VS Code avec les extensions Remote/DevContainer.
- (Windows) WSL2 avec une distribution Linux (ex.
Ubuntu).
Installation rapide — Windows (WSL2 + Docker Desktop + VS Code)
Activer et installer WSL2
Ouvrir PowerShell en administrateur puis :
wsl --install -d ubuntu
# Si la commande ci-dessus n'est pas disponible (Windows plus ancien), activer manuellement :
# dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
# dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
# puis installer une distribution depuis le Microsoft Store (ex: Ubuntu) et
# wsl --set-default-version 2
Pour plus de détails et solutions aux problèmes fréquents, voir la documentation officielle : https://learn.microsoft.com/windows/wsl/install
Installer Docker Desktop
- Télécharger Docker Desktop depuis https://www.docker.com/products/docker-desktop/
- Pendant l'installation, activer l'option WSL2 backend (Use the WSL 2 based engine).
- Dans Docker Desktop → Settings → Resources → WSL Integration, activer l'intégration pour la distribution
Ubuntu(ou celle utilisée). - Vérifier :
docker run --rm hello-world
Installer VS Code et extensions recommandées
Installer (ou activer) ces extensions :
Remote - WSL(ms-vscode-remote.remote-wsl)Dev Containers(ms-vscode-remote.remote-containers)Python(ms-python.python)C/C++(ms-vscode.cpptools)ROS (ROS Tooling)(ros-tooling.vscode-ros) — extension ROS recommandée
Installer VS Code (si nécessaire) : https://code.visualstudio.com/ Pour la documentation sur les Dev Containers : https://code.visualstudio.com/docs/devcontainers/containers
Flux de travail recommandé (Windows)
- Ouvrir VS Code et se connecter à WSL : Command Palette →
Remote-WSL: New Windowou depuis PowerShellwsl, puiscode .dans le répertoire du projet. - Dans la fenêtre WSL de VS Code, lancer la commande (CTRL + SHIFT + P) :
Dev Containers: Reopen in Container(ouRemote-Containers: Reopen Folder in Container). - VS Code va construire / télécharger l'image du devContainer et ouvrir l'espace de travail à l'intérieur du conteneur.
Installation rapide — Linux (ex. Ubuntu)
Installer Docker
sudo apt update
sudo apt install -y docker.io
sudo systemctl enable --now docker
sudo usermod -aG docker $USER
# Se déconnecter / reconnecter ou exécuter `newgrp docker` pour appliquer le groupe
Installer VS Code
Suivre la page officielle pour votre distribution, puis installer les mêmes extensions que pour Windows (sauf remote-wsl).
VS Code : https://code.visualstudio.com/
Flux de travail (Linux)
- Ouvrir le dossier du projet dans VS Code localement.
- Palette de commandes →
Dev Containers: Reopen in Container. - VS Code construit l'image et ouvre le workspace dans le conteneur.
Utilisation dans le devContainer
Une fois le conteneur démarré, vous êtes dans un shell Linux fourni par l'image. Les étapes typiques :
Compiler le code
Appuyez sur Ctrl+Shift+B (raccourci VS Code) pour lancer la tâche de build
Lancer la simulation (Gazebo + RViz2)
ros2 launch main_rover launch_sim.launch.py
Notes et conseils pratiques
-
Si vous êtes sous Windows + WSL2 + devContainer, WSLg (sur Windows 11 ou builds compatibles) permet d'afficher les applications graphiques Linux. Si vous rencontrez des problèmes d'affichage avec Gazebo/RViz, vérifiez :
- Que Docker Desktop est configuré pour utiliser le backend WSL2.
- Que l'intégration WSL (distro) est activée dans Docker Desktop.
-
Si le conteneur n'a pas accès au démon Docker (pour lancer des conteneurs imbriqués), vous pouvez monter
/var/run/docker.sockdans le conteneur viadevcontainer.jsonpour partager le démon Docker de l'hôte. Exempledevcontainer.jsonminimal :
// Extrait
"runArgs": ["-v", "/var/run/docker.sock:/var/run/docker.sock", "--network=host"]
-
Pour ROS2 multi-nœuds et réseau entre le conteneur et l'hôte, utiliser
--network=hostpermet d'éviter des problèmes de découverte (NDDS/ROS2 middleware). Ajouter"runArgs": ["--network=host"]audevcontainer.jsonsi nécessaire. -
Si vous avez installé Docker sous Linux, après
sudo usermod -aG docker $USERil faut se déconnecter/reconnecter pour que la modification du groupe prenne effet. -
Vérifiez que ROS2, Gazebo et rviz sont bien présents dans l'image du devContainer. Sinon, ajoutez-les dans le
Dockerfiledu conteneur ou installez-les manuellement pour le debug.
Dépannage rapide
docker: command not found→ Docker non installé ou non en PATH.permission deniedsurdocker.sock→ ajouter l'utilisateur au groupedockerou exécuter avecsudo.- Fenêtres graphiques Gazebo/RViz qui n'apparaissent → vérifier WSLg (Windows), ou DISPLAY/X11 si vous utilisez une config différente.
ros2non trouvé → sourcer/opt/ros/humble/setup.bashou vérifier l'image.
Prochaine étape suggérée
- Tester :
Ctrl+Shift+Bpuisros2 launch main_rover launch_sim.launch.pydans le devContainer.