截至目前,Jetson Nano 平台官方仍不提供 Ubuntu 20.04 固件,所以使用 Jetson Nano 平台开发 ROS2 存在巨大的困难,但是好在 Docker 提供的容器技术,让我们能非常方便的虚拟出一个 Ubuntu 20.04 环境进行 ROS2 开发并通过云端快速分享自己的开发环境,本文我将以松灵 LIMO 为例向大家演示如何使用 Docker 进行 ROS2 开发以及这种开发模式的优越性。
此外,在 ROS 开发过程中(尤其是在多人团队协同中)你一定遇到过这样的问题:需要快速(在不同架构机器上)部署相同开发环境、别人电脑上可以编译但到了自己这里就会报错、无法复现别人的 Bug、经常会出现缺少支持库或者支持库冲突的情况,尤其是一台电脑上需要做多种任务的情况(比如 深度学习、QT 开发、ROS1、ROS2)则会更糟糕…… 这个时候我们就有必要使用 Docker 进行开发
本文分为两部分,1-6
节讲解 使用 Docker+VSCode 开发方式,7
节将带领大家在 LIMO 平台进行实战
无论您之前使用什么样的方式进行开发,笔者在这里都推荐您尝试 Docker + VSCode,虽然这可能需要两三个下午的时间进行学习,但请相信这一切都是值得的!
如果您不会使用 docker 或者没有尝试过类似的操作,请您先阅读 《Docker 配合 VSC 开发最佳实践》(https://anthonysun256.github.io/docker-with-vsc_best-practice/)
1. 镜像选取
Docker 官方镜像服务器上有很多的 ROS 开发镜像,这里我们可以有如下选择(这几个镜像也是笔者常用的):
• ROS 官方镜像:https://hub.docker.com/_/ros
内含所有 ROS 发行版的基础开发镜像,而且支持多种架构,非常适合在多种架构的机器上进行部署。
• althack 的开发镜像 https://hub.docker.com/u/althack
althack 提供了 VSCode 的开发工作环境模板:https://github.com/athackst/vscode_ros2_workspace
虽然模板是 ROS2 但是只要简单修改 Dockerfile 中引用的镜像名称即可改成 ROS1 环境
Dockerfile 源码:https://github.com/athackst/dockerfiles
这个镜像优点是提供了 ROS-desktop-full 的开发环境,省去了自行安装的麻烦,非常适合学习使用。缺点是只支持 PC,如果其他环境需要自己使用 Dockerfile 编译。
2. 开发环境搭建
我们新建的工作空间目录格式如下:
.
├── .devcontainer # docker 配置文件
│ ├── devcontainer.json
│ └── Dockerfile
└── src # ROS 源码目录
VSCode 会自动读取 .devcontainer
中的配置文件。对于我个人学习而言我一直使用的是 https://hub.docker.com/u/althack 的镜像和配置,下面的配置文件也是改变于此,各位读者可以根据自己的需要进行修改:
Dockerfile:
# 改编自 https://github.com/athackst/vscode_ros2_workspace
# 我使用的 ROS 学习镜像,根据您的喜好可以自行更改
FROM althack/ros:melodic-gazebo as gazebo
# ** [可选] 取消注释安装其他组件 **
#
# ENV DEBIAN_FRONTEND=noninteractive
# RUN apt-get update \
# && apt-get -y install --no-install-recommends <your-package-list-here> \
# #
# # Clean up
# && apt-get autoremove -y \
# && apt-get clean -y \
# && rm -rf /var/lib/apt/lists/