安装 ROS2 需要保证 Linux 系统的发行版是 Ubuntu,并且不同版本的 Ubuntu 只能安装对应版本的 ROS2。
系统不是 Ubuntu 怎么办?
- 系统是 Mac OS 或 Windows:安装一个 Ubuntu 的虚拟机,在虚拟机里安装 ROS2。(虽然 ROS2 提供了 MAC OS 和 Windows 的版本,但稳定性相对于 Ubuntu 版本可能会差一些)
- 系统是其他发行版本的 Linux:
① 方法一:备份数据,然后刷成 Ubuntu 系统(嵌入式开发板或系统数据较少可以使用这种方法)
② 方法二:安装 Docker,拉取 ROS2 镜像。可以将 Docker 理解为 Linux 下一种特殊的虚拟机,它只能虚拟出 Linux 系统,但是不像普通的虚拟机那样会占用额外的系统资源。(可以在网上搜索 “Docker ROS2” 查找对应的教程,本篇博客主要讲解在 Ubuntu 下安装 ROS2,不会涉及到相关内容)
ROS2 版本 | 版本代号 | 发布时间 | 维护截止时间 | Ubuntu 版本 |
---|---|---|---|---|
Ardent Apalone | ardent | 2017.12 | 2018.12 | Ubuntu 16.04(Xenial Xerus) |
Bouncy Bolson | bouncy | 2018.7 | 2019.7 | Ubuntu 16.04(Xenial Xerus)、Ubuntu 18.04 (Bionic Beaver) |
Crystal Clemmys | crystal | 2018.12 | 2019.12 | Ubuntu 18.04 (Bionic Beaver) |
Dashing Diademata | dashing | 2019.5 | 2021.5 | Ubuntu 18.04 (Bionic Beaver) |
Eloquent Elusor | eloquent | 2019.11 | 2020.11 | Ubuntu 18.04 (Bionic Beaver) |
Foxy Fitzroy | foxy | 2020.6 | 2023.5 | Ubuntu 20.04 (Focal Fossa) |
Galactic Geochelone | galactic | 2021.5 | 2022.11 | Ubuntu 20.04 (Focal Fossa) |
Humble Hawksbill | humble | 2022.5 | 2027.5 | Ubuntu 22.04 (Jammy Jellyfish) |
在官网还有一个 rolling 版本,该版本属于开发版,所有的功能、软件包等都是最新的,所以不是非常稳定,在学习、应用时不建议选择这个版本。
来源:Distributions — ROS 2 Documentation: Rolling documentation
查看当前系统的发行版本:
cat /etc/issue
我的系统是 Ubuntu 20.04,根据上一节的版本对应表,应该选择 foxy
版本。
# 设置 ROS2 版本为 foxy
export ROS_DISTRO=foxy
(如果你的系统是 Ubuntu 22.04,就要选择 humble 版本)
安装 ROS2 前必须确保语言环境支持 UTF-8。
# 检查 UTF-8 环境
locale
# 设置 UTF-8
sudo apt update && sudo apt install locales
sudo locale-gen en_US en_US.UTF-8
sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8
export LANG=en_US.UTF-8
# 验证是否已经设置为 UTF-8
locale
# 安装必备的工具
sudo apt update && sudo apt install curl gnupg2 lsb-release
# 添加 ROS2 软件源的 GPG Key
curl http://repo.ros2.org/repos.key | sudo apt-key add -
# 添加 ROS2 软件源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(source /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
# 更新软件包信息信息
sudo apt update
ROS2 有完整版和基础版两个版本:
# 安装完整版
sudo apt install ros-$ROS_DISTRO-desktop
# 安装基础版
sudo apt install ros-$ROS_DISTRO-ros-base
安装 ROS2 开发工具(包括 ROS2 的编译器、构建工具等):
sudo apt install ros-dev-tools
初始化环境:
source /opt/ros/$ROS_DISTRO/setup.bash
每次执行,太麻烦了,将初始化脚本加入启动文件:
# 设置 ROS2 版本为 foxy(注意要根据自己的 Ubuntu 版本更改)
echo "export ROS_DISTRO=foxy" >> ~/.bashrc
echo "source /opt/ros/$ROS_DISTRO/setup.bash" >> ~/.bashrc
基础版需要安装 Demo 程序,完整版则不需要安装:
# 安装 Demo 程序
sudo apt install ros-$ROS_DISTRO-demo-nodes-cpp
输入:
# 运行 Talker 程序
ros2 run demo_nodes_cpp talker
再打开另一个一个终端,输入:
# 运行 Listener 程序
ros2 run demo_nodes_cpp listener
ROS2 安装成功!
说明
如果安装的是基础版,是不会带有
小乌龟
程序的,需要运行下面的命令安装:
sudo apt install ros-$ROS_DISTRO-turtlesim
[1] ROS2 和Ubuntu 版本对应关系_IT兔的博客-CSDN博客
[2] Distributions — ROS 2 Documentation: Rolling documentation
[3] Ubuntu (Debian) — ROS 2 Documentation: Foxy documentation
所有的工具都是为了帮助我们更方便地解决问题。我们学习如何使用工具,并不是为了学习这个工具而去学习,而是为了解决问题我们遇到的问题。
ROS 作为机器人的框架,本质也是一个工具,它在最初只是为了解决机器人各模块间通信的问题,但随着时间发展,ROS 逐渐发展出了一个生态,大量的机器人开源项目(涵盖感知、规划、控制、定位、SLAM和建图、可视化等)都以 ROS 做为基础。
我们没有必要把大量时间、精力都放在 ROS2 上,因为 ROS2 本质上只是为了解决机器人各模块通信的问题,这里不是说模块间的通信不重要,而是说一个机器人如果只解决了通信问题,而不去考虑机械、控制、电子、算法,一样是运行不起来的。所以,我们一定要合理安排学习的重心,弄懂一些基础的概念后,ROS2 学起来就会非常简单。