在Docker中运行ROS 2节点 [社区-贡献] [待校准@6510]

在单个docker容器中运行两个节点 [待校准@6511]

拉出带有标签 “foxy-桌面” 的ROS docker映像。 [待校准@6512]

docker pull osrf/ros:foxy-desktop

在交互式模式下在容器中运行映像。 [待校准@6513]

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

你最好的朋友现在是 ros2 命令行帮助。 [待校准@6514]

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

例如,列出所有已安装的包。 [待校准@6515]

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

例如列出所有可执行文件: [待校准@6516]

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

在此容器中的包 demo_nodes_cpp 中运行2个c + + 节点的最小示例 (1个话题订户 listener ,1个话题出版商 talker ): [待校准@6517]

ros2 run demo_nodes_cpp listener &
ros2 run demo_nodes_cpp talker

在两个单独的docker容器中运行两个节点 [待校准@6518]

打开终端。运行图像容器交互模式launcha话题出版商 (可执行 talker 从包 demo_nodes_cpp ) ros2 run : [待校准@6519]

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

打开第二个终端。运行图像容器交互模式launcha话题用户 (可执行 listener 从包 demo_nodes_cpp ) ros2 run : [待校准@6520]

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

作为命令行调用的替代方法,您可以创建一个包含以下 (最小) 内容的 docker-compose.yml 文件 (此处为版本2): [待校准@6521]

version: '2'

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

在同一目录下运行容器调用 docker-compose up 。您可以使用 “ctrl + c” 关闭容器。 [待校准@6522]