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