在 Docker 中运行 ROS 2 节点[社区贡献]

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

使用标签为“humble-desktop”的 ROS Docker 镜像拉取镜像。

docker pull osrf/ros:humble-desktop

在交互模式下在容器中运行镜像。

$ docker run -it osrf/ros:humble-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 的软件包中的两个C++节点(一个主题订阅者 listener,一个主题发布者 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:humble-desktop ros2 run demo_nodes_cpp talker

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

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

作为命令行调用的替代方案,您可以创建一个名为``docker-compose.yml``的文件(版本2),其内容如下(最小化):

version: '2'

services:
  talker:
    image: osrf/ros:humble-desktop
    command: ros2 run demo_nodes_cpp talker
  listener:
    image: osrf/ros:humble-desktop
    command: ros2 run demo_nodes_cpp listener
    depends_on:
      - talker

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