Exécution de nœuds ROS 2 dans Docker [contribution de la communauté]
Exécutez deux nœuds dans un seul conteneur docker
Extrayez l’image du docker ROS avec la balise « rolling-desktop ».
docker pull osrf/ros:rolling-desktop
Exécutez l’image dans un conteneur en mode interactif.
$ docker run -it osrf/ros:rolling-desktop
root@<container-id>:/#
Votre meilleur ami est maintenant l’aide en ligne de commande de ros2
.
root@<container-id>:/# ros2 --help
Par exemple. répertorier tous les packages installés.
root@<container-id>:/# ros2 pkg list
(you will see a list of packages)
Par exemple. liste tous les exécutables :
root@<container-id>:/# ros2 pkg executables
(you will see a list of <package> <executable>)
Exécutez un exemple minimal de 2 nœuds C++ (1 abonné à la rubrique listener
, 1 éditeur de rubrique talker
) à partir du package demo_nodes_cpp
dans ce conteneur :
ros2 run demo_nodes_cpp listener &
ros2 run demo_nodes_cpp talker
Exécutez deux nœuds dans deux conteneurs Docker distincts
Ouvrez un terminal. Exécutez l’image dans un conteneur en mode interactif et lancez un éditeur de rubrique (exécutable talker
du package demo_nodes_cpp
) avec ros2 run
:
docker run -it --rm osrf/ros:rolling-desktop ros2 run demo_nodes_cpp talker
Ouvrez un deuxième terminal. Exécutez l’image dans un conteneur en mode interactif et lancez un abonné au sujet (exécutable listener
du package demo_nodes_cpp
) avec ros2 run
:
docker run -it --rm osrf/ros:rolling-desktop ros2 run demo_nodes_cpp listener
Comme alternative à l’appel en ligne de commande, vous pouvez créer un fichier docker-compose.yml
(ici la version 2) avec le contenu (minimal) suivant :
version: '2'
services:
talker:
image: osrf/ros:rolling-desktop
command: ros2 run demo_nodes_cpp talker
listener:
image: osrf/ros:rolling-desktop
command: ros2 run demo_nodes_cpp listener
depends_on:
- talker
Pour exécuter les conteneurs, appelez docker-compose up
dans le même répertoire. Vous pouvez fermer les conteneurs avec Ctrl+C
.