Ubuntu 24.04 Noble Numbat 尝鲜记:用Docker搞定ROS 2 Humble开发环境(附镜像拉取与容器运行全流程)
Ubuntu 24.04 Noble Numbat 尝鲜记用Docker搞定ROS 2 Humble开发环境附镜像拉取与容器运行全流程当Ubuntu 24.04 Noble Numbat遇上ROS 2 Humble就像两个来自不同时空的旅行者相遇——一个是最新发布的系统版本另一个则是为上一代LTS系统设计的机器人开发框架。这种版本错位带来的兼容性问题让不少机器人开发者在新系统上部署ROS时踩坑无数。而Docker容器技术正是解决这一困境的完美钥匙。本文将带你用Docker在Ubuntu 24.04上快速搭建一个隔离、可移植的ROS 2 Humble开发环境。相比直接安装rolling版本这种暴力破解方案Docker方案能提供更稳定的开发体验且不会污染你的主机环境。无论你是想在新系统上快速验证ROS 2功能还是需要为团队创建可复现的开发环境这套方案都能满足需求。1. 为什么选择Docker方案在Ubuntu 24.04上直接安装ROS 2 Humble会遇到各种依赖冲突和兼容性问题而rolling版本虽然能安装但作为持续更新的开发分支稳定性难以保证。Docker方案则完美避开了这些问题环境隔离ROS及其所有依赖都被封装在容器内不会影响主机系统版本锁定使用官方测试过的镜像版本避免依赖地狱快速部署一条命令即可获得完整可用的ROS环境可移植性开发环境可以轻松迁移到其他机器或分享给团队成员下表对比了三种方案的优劣方案稳定性易用性系统影响适用场景直接安装Humble❌❌高不推荐安装rolling版本⚠️✅中短期测试Docker容器方案✅✅低开发/生产环境首选提示如果你需要长期稳定的ROS 2开发环境建议在Ubuntu 22.04上原生安装Humble。本文方案主要针对必须在24.04上使用ROS的场景。2. 环境准备与Docker安装在开始之前请确保你的Ubuntu 24.04系统已经更新到最新状态sudo apt update sudo apt upgrade -y接下来安装Docker引擎。虽然Ubuntu仓库提供了docker.io包但为了获得最新版本我们推荐使用官方Docker仓库# 安装必要工具 sudo apt install -y ca-certificates curl # 添加Docker官方GPG密钥 sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod ar /etc/apt/keyrings/docker.gpg # 设置仓库 echo \ deb [arch$(dpkg --print-architecture) signed-by/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(. /etc/os-release echo $VERSION_CODENAME) stable | \ sudo tee /etc/apt/sources.list.d/docker.list /dev/null # 安装Docker引擎 sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin安装完成后将当前用户加入docker组以避免每次使用sudosudo usermod -aG docker $USER newgrp docker # 立即生效无需重新登录验证Docker安装是否成功docker run hello-world如果看到Hello from Docker!的消息说明安装正确。3. 获取ROS 2 Humble Docker镜像OSRFOpen Source Robotics Foundation维护了一系列官方ROS Docker镜像我们将使用其中的humble-desktop版本它包含了ROS 2桌面版的所有组件。拉取镜像docker pull osrf/ros:humble-desktop这个镜像大约有1.5GB下载时间取决于你的网络速度。完成后可以查看本地镜像列表docker images你应该能看到类似这样的输出REPOSITORY TAG IMAGE ID CREATED SIZE osrf/ros humble-desktop a1b2c3d4e5f6 2 weeks ago 1.45GB注意如果你在中国大陆可能会遇到拉取镜像速度慢的问题。可以配置Docker国内镜像加速器sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json -EOF { registry-mirrors: [https://你的镜像加速器地址] } EOF sudo systemctl restart docker4. 运行ROS 2容器现在我们可以启动一个交互式容器来体验ROS 2环境了。基本命令如下docker run -it --rm osrf/ros:humble-desktop这个命令会-it以交互模式运行容器并分配一个伪终端--rm容器退出后自动删除适合临时测试使用我们刚才拉取的osrf/ros:humble-desktop镜像进入容器后你可以验证ROS 2是否正常工作source /opt/ros/humble/setup.bash ros2 run demo_nodes_cpp talker在另一个终端你可以启动listener来测试通信docker exec -it 容器ID bash source /opt/ros/humble/setup.bash ros2 run demo_nodes_cpp listener你应该能看到talker发送消息listener接收并打印这些消息。5. 高级容器配置基础的容器运行方式适合快速测试但实际开发中我们需要更多功能5.1 持久化数据与主机目录挂载为了在容器和主机之间共享文件可以使用-v参数挂载目录mkdir ~/ros2_ws docker run -it --rm -v ~/ros2_ws:/home/ros/ros2_ws osrf/ros:humble-desktop这样主机上的~/ros2_ws目录就会映射到容器内的/home/ros/ros2_ws你可以在容器内编辑文件修改会实时反映到主机上。5.2 图形界面支持ROS 2的许多工具如Rviz需要图形界面。要让容器内的GUI程序显示在主机上需要允许本地X11连接xhost local:运行容器时添加显示相关参数docker run -it --rm \ -e DISPLAY$DISPLAY \ -v /tmp/.X11-unix:/tmp/.X11-unix \ osrf/ros:humble-desktop5.3 自定义容器镜像如果你需要预装额外软件或修改配置可以基于官方镜像构建自己的DockerfileFROM osrf/ros:humble-desktop # 安装额外工具 RUN apt update apt install -y \ python3-pip \ git \ rm -rf /var/lib/apt/lists/* # 设置工作目录 WORKDIR /home/ros/ros2_ws # 复制自定义启动脚本 COPY entrypoint.sh /entrypoint.sh RUN chmod x /entrypoint.sh ENTRYPOINT [/entrypoint.sh]然后构建并运行docker build -t my-ros2-image . docker run -it --rm my-ros2-image6. 开发工作流建议在实际ROS 2项目开发中推荐以下工作流代码开发在主机利用主机的IDE如VSCode在挂载的目录中开发构建和测试在容器在容器环境中执行构建和测试确保环境一致性使用docker-compose管理复杂服务对于多节点或需要数据库等服务的项目一个典型的docker-compose.yml示例version: 3 services: ros: image: osrf/ros:humble-desktop volumes: - ./ros2_ws:/home/ros/ros2_ws environment: - DISPLAY$DISPLAY network_mode: host privileged: true command: bash -c source /opt/ros/humble/setup.bash cd /home/ros/ros2_ws colcon build bash启动服务docker-compose up这种方案既保留了开发的便利性又确保了环境的一致性特别适合团队协作项目。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2475588.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!