在 Docker 中运行 ROS 2 节点 [community-contributed]

在单个 docker 容器中运行两个节点

使用标签“rolling-desktop”拉取 ROS docker 镜像。

docker pull osrf/ros:rolling-desktop

以交互模式在容器中运行图像。

$ docker run -it osrf/ros:rolling-desktop
root@<container-id>:/#

现在你最好的朋友就是“ros2”命令行帮助。

root@<container-id>:/# ros2 --help

例如列出所有已安装的包。

root@<container-id>:/# ros2 pkg list
(you will see a list of packages)

例如列出所有可执行文件:

root@<container-id>:/# ros2 pkg executables
(you will see a list of <package> <executable>)

在该容器中从包“demo_nodes_cpp”运行 2 个 C++ 节点(1 个主题订阅者“listener”,1 个主题发布者“talker”)的最小示例:

ros2 run demo_nodes_cpp listener &
ros2 run demo_nodes_cpp talker

在两个独立的docker容器中运行两个节点

打开一个终端。以交互模式在容器中运行镜像,并使用“ros2 run”启动主题发布者(来自包“demo_nodes_cpp”的可执行“talker”):

docker run -it --rm osrf/ros:rolling-desktop ros2 run demo_nodes_cpp talker

打开第二个终端。以交互模式在容器中运行镜像,并使用“ros2 run”启动主题订阅者(来自包“demo_nodes_cpp”的可执行“listener”):

docker run -it --rm osrf/ros:rolling-desktop ros2 run demo_nodes_cpp listener

作为命令行调用的替代方法,您可以创建一个“docker-compose.yml”文件(这里是版本 2),其中包含以下(最少)内容:

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

要运行容器,请在同一目录中调用“docker compose up”。您可以使用“Ctrl+C”关闭容器。