Docker 和 ROS 2 的最新指南

2 年前,我写了《Docker 和 ROS 指南》,这是我最常被浏览的帖子之一——可能是因为这是一个棘手的话题,人们都在寻求答案。从那时起,我有机会在工作中更多地使用 Docker,并学到了一些新技巧。这是 […]

来源:Robohub

2 年前,我写了《Docker 和 ROS 指南》,这是我最常被阅读的帖子之一 — 可能是因为这是一个棘手的话题,人们都在寻求答案。从那时起,我有机会在工作中更多地使用 Docker,并学到了一些新技巧。这早就该写了,但我终于在这篇文章中收集了我最新的学习成果。

Docker 和 ROS 指南

最近,我看到了一篇题为《ROS Docker;6 个不适合它们的原因》的文章,我非常同意它。然而,现实情况是,对于那些没有花费数年时间与 ROS 学习曲线作斗争并且擅长调试依赖项和/或构建错误的人来说,确保可重现的 ROS 环境仍然相当困难……所以 Docker 仍然是我们用来推出工作演示(有时是产品!)的拐杖。

ROS Docker; 6 个原因说明它们不适合

如果上面的文章还没有完全打消您踏上 Docker 冒险之旅的念头,请尽情阅读。

使用 ROS 2 重新访问我们的 Dockerfile

现在 ROS 1 已经是最终版本,并且即将在 2025 年终止使用,我认为使用 ROS 2 重新整理上一篇文章中的 TurtleBot3 示例 repo 是合适的。

TurtleBot3 示例 repo

此次升级中的大多数重大更改都与 ROS 2 有关,包括客户端库、启动文件和配置 DDS。示例本身已更新为使用行为树的最新工具:用于 C++ 的 BehaviorTree.CPP 4 / Groot 2 和用于 Python 的 py_trees / py_trees_ros_viewer。有关示例和/或行为树的更多信息,请参阅我的行为树简介帖子。

配置 DDS BehaviorTree.CPP 4 Groot 2 py_trees py_trees_ros_viewer 行为树简介

从 Docker 的角度来看,没有太多区别。我们的容器布局现在如下:

我们的 TurtleBot3 示例 Docker 映像的层。

Dockerfile 基础 公共 ROS 映像 osrf/ros:humble-desktop 来自我们示例存储库的依赖项 底层