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.