在 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``关闭容器。