【嵌入式 · 机器人】在 Linux 下安装 ROS2(机器人操作系统)

安装要求

安装 ROS2 需要保证 Linux 系统的发行版是 Ubuntu,并且不同版本的 Ubuntu 只能安装对应版本的 ROS2。

系统不是 Ubuntu 怎么办?
  1. 系统是 Mac OS 或 Windows:安装一个 Ubuntu 的虚拟机,在虚拟机里安装 ROS2。(虽然 ROS2 提供了 MAC OS 和 Windows 的版本,但稳定性相对于 Ubuntu 版本可能会差一些)
  2. 系统是其他发行版本的 Linux:

    ① 方法一:备份数据,然后刷成 Ubuntu 系统(嵌入式开发板或系统数据较少可以使用这种方法)

    ② 方法二:安装 Docker,拉取 ROS2 镜像。可以将 Docker 理解为 Linux 下一种特殊的虚拟机,它只能虚拟出 Linux 系统,但是不像普通的虚拟机那样会占用额外的系统资源。(可以在网上搜索 “Docker ROS2” 查找对应的教程,本篇博客主要讲解在 Ubuntu 下安装 ROS2,不会涉及到相关内容)

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

【嵌入式 · 机器人】在 Linux 下安装 ROS2(机器人操作系统)_第1张图片

我的系统是 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

ROS2 有完整版和基础版两个版本:

  • 完整版:包括了 GUI 程序、Demo ,个人电脑或性能较强、需要 GUI 功能的开发板建议选择这个版本(如树莓派 4B、Jetson Nano、香橙派 4等)
  • 基础版:只包含最基础的通信功能。性能较弱或不需要 GUI 的开发板建议选择这个版本(如树莓派 Zero、香橙派 Zero 2 等)
# 安装完整版
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

测试 ROS2 安装情况

基础版需要安装 Demo 程序,完整版则不需要安装:

# 安装 Demo 程序
sudo apt install ros-$ROS_DISTRO-demo-nodes-cpp

输入:

# 运行 Talker 程序
ros2 run demo_nodes_cpp talker

【嵌入式 · 机器人】在 Linux 下安装 ROS2(机器人操作系统)_第2张图片

再打开另一个一个终端,输入:

# 运行 Listener 程序
ros2 run demo_nodes_cpp listener

【嵌入式 · 机器人】在 Linux 下安装 ROS2(机器人操作系统)_第3张图片

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 学起来就会非常简单。

你可能感兴趣的:(#,Linux,嵌入式&单片机,linux,机器人,ubuntu,ROS)