前言
ROS(Robot Operating System)是机器人开发领域广泛使用的框架,但其环境配置依赖复杂,不同版本间可能存在冲突。Docker 容器技术为我们提供了完美的解决方案——它能够创建一个隔离、一致且易于分发的运行环境。本文将详细介绍如何使用 Docker 来快速搭建 ROS 2 Humble 的开发环境。
1. 安装 Docker
首先,确保你的系统(以 Ubuntu 为例)已安装 Docker。打开终端,执行以下命令:
sudo apt update && sudo apt install docker.io
安装完成后,可以通过 docker --version 验证安装是否成功。建议将当前用户加入 docker 组,以避免每次使用都需要 sudo:
sudo usermod -aG docker $USER
注意:执行此命令后需要注销并重新登录或重启系统才能生效。
2. 拉取 ROS 2 Humble 镜像
官方提供了现成的 ROS 2 Docker 镜像。这里我们拉取桌面版 Humble 镜像,它包含了 ROS 核心、工具和 GUI 依赖。
docker pull osrf/ros:humble-desktop
这个命令会从 Docker Hub 下载镜像。根据网络情况,可能需要一些时间。
3. 查看本地镜像
下载完成后,可以使用以下命令查看本地已存在的 Docker 镜像,确认 osrf/ros:humble-desktop 是否在列表中。
docker images
4. 运行一个简单的容器
现在,让我们启动一个简单的交互式容器,快速体验 ROS 2 环境。
docker run -it osrf/ros:humble-desktop
-it 参数表示以交互模式运行并分配一个伪终端。执行后,你将进入容器内部的 bash shell。此时,一个基本的 ROS 2 环境已经就绪。
5. 生产环境实践:挂载数据卷运行容器
在实际开发中,我们通常需要将宿主机(本地)的代码目录映射到容器内部,这样才能在容器内编辑和运行我们自己的 ROS 2 项目。这通过 -v 参数挂载数据卷实现。
假设你的本地 ROS 2 工作空间路径为 ~/projects/ros2_learning,使用以下命令启动容器并挂载目录:
docker run -it -v $(pwd)/ros2_learning:/root/ros2_learning osrf/ros:humble-desktop bash
-v $(pwd)/ros2_learning:/root/ros2_learning:将当前终端所在目录下的ros2_learning文件夹,映射到容器内的/root/ros2_learning路径。- 最后的
bash指定容器启动后运行的命令,即打开一个 bash shell。
小贴士:你可以将上述长命令写成一个别名(alias)或 shell 脚本,方便日后快速启动。
6. 测试 ROS 2 环境
进入容器后,让我们运行一个经典的发布者 - 订阅者 demo 来验证环境是否正常工作。
要测试订阅功能,你需要另开一个终端。首先,获取当前运行容器的 ID 或名称:

