Docker 中运行节点
在 Docker 中运行 ROS 2 节点
在单个 Docker 容器中运行两个节点
Section titled “在单个 Docker 容器中运行两个节点”拉取标签为 {DISTRO}-desktop 的 ROS Docker 镜像:
$ docker pull osrf/ros:{DISTRO}-desktop以交互模式运行该镜像:
$ docker run -it osrf/ros:{DISTRO}-desktop此时,ros2 命令行工具是你的得力助手。
$ ros2 --help例如,列出所有已安装的包:
$ ros2 pkg list(输出为包列表)例如,列出所有可执行文件:
$ ros2 pkg executables(输出为 `<package> <executable>` 格式的列表)在容器中运行 demo_nodes_cpp 包中的一个最小示例——两个 C++ 节点(1 个话题订阅者 listener,1 个话题发布者 talker):
$ ros2 run demo_nodes_cpp listener &$ ros2 run demo_nodes_cpp talker在两个独立的 Docker 容器中运行两个节点
Section titled “在两个独立的 Docker 容器中运行两个节点”打开一个终端,以交互模式运行镜像,并通过 ros2 run 启动一个话题发布者(demo_nodes_cpp 包中的 talker 可执行文件):
$ docker run -it --rm osrf/ros:{DISTRO}-desktop ros2 run demo_nodes_cpp talker再打开第二个终端,以同样的方式启动一个话题订阅者(demo_nodes_cpp 包中的 listener 可执行文件):
$ docker run -it --rm osrf/ros:{DISTRO}-desktop ros2 run demo_nodes_cpp listener除了使用命令行,你也可以编写一个 docker-compose.yml 文件(以下为 compose 文件格式版本 2 的最小配置):
version: '2'
services: talker: image: osrf/ros:{DISTRO}-desktop command: ros2 run demo_nodes_cpp talker listener: image: osrf/ros:{DISTRO}-desktop command: ros2 run demo_nodes_cpp listener depends_on: - talker在该文件所在目录下执行 docker compose up 即可启动容器。
你可以使用 Ctrl+C 关闭容器。