ROS 2 安装

下文讲述如何在 Ubuntu 22.04 上安装 ROS 2 Humble


1. 设置语言环境

确保使用的语言环境(Locale)支持 UTF-8 编码。如果处在最小化环境(比如 Docker 容器)中,语言环境可能极为精简,比如仅支持 POSIX 标准。下面使用以下设置进行测试。当然,如果使用的是其他支持 UTF-8 的语言环境,也完全没有问题。

locale  # check for 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

locale  # verify settings
echo $LANG

2. 设置源

请按以下步骤将 ROS 2 APT 仓库添加到系统中。

首先,确保已启用 Ubuntu Universe 软件源:

sudo apt install software-properties-common
sudo add-apt-repository universe

ros-apt-source 软件包为各个 ROS 仓库提供密钥和 APT 源配置。

安装 ros2-apt-source 软件包将自动为系统配置 ROS 2 仓库。当该软件包的新版本发布到 ROS 仓库时,仓库配置也将自动更新。

sudo apt update && sudo apt install curl -y
# 需要使用代理
export ROS_APT_SOURCE_VERSION=$(curl -s https://api.github.com/repos/ros-infrastructure/ros-apt-source/releases/latest | grep -F "tag_name" | awk -F'"' '{print $4}')
curl -L -o /tmp/ros2-apt-source.deb "https://github.com/ros-infrastructure/ros-apt-source/releases/download/${ROS_APT_SOURCE_VERSION}/ros2-apt-source_${ROS_APT_SOURCE_VERSION}.$(. /etc/os-release && echo ${UBUNTU_CODENAME:-${VERSION_CODENAME}})_all.deb"
sudo dpkg -i /tmp/ros2-apt-source.deb

3. 安装 ROS 2 软件包

设置仓库后,更新仓库缓存。

sudo apt update

ROS 2 软件包在频繁更新的 Ubuntu 系统上构建。强烈建议在安装新软件包之前,先将系统更新到最新状态。

sudo apt upgrade
  • 警告:

    由于 Ubuntu 22.04 涉及早期系统更新,因此在安装 ROS 2 之前,务必先更新 systemdudev 相关的软件包。若在全新安装的系统上不进行系统升级,直接安装 ROS 2 的依赖项,可能触发关键系统软件包被移除

桌面版安装(推荐):包含 ROS、RViz、演示程序、教程等全套工具。

sudo apt install ros-humble-desktop

ROS-Base 基础版安装(精简核心):仅包含通信库、消息包和命令行工具,不含任何 GUI 工具。

sudo apt install ros-humble-ros-base

开发工具:编译器及其它用于构建 ROS 软件包的工具。

sudo apt install ros-dev-tools

4. 环境设置

source 以下文件,设置环境:

source /opt/ros/humble/setup.bash
注意

如果使用的不是 Bash,请将 .bash 替换为当前所用的 Shell 对应的后缀。可选值有:setup.bashsetup.shsetup.zsh


5. 尝试一些示例

Talker-Listener

如果已按照上述步骤安装 ros-humble-desktop,那么可以尝试运行一些示例。

在第一个终端中source 环境脚本,然后运行 C++ 版的 Talker(发布者)节点:

source /opt/ros/humble/setup.bash
ros2 run demo_nodes_cpp talker

在另一个终端中source 环境脚本,然后运行 Python 版的 Listener(监听者)节点:

source /opt/ros/humble/setup.bash
ros2 run demo_nodes_py listener

如果看到 Talker 节点不断输出“正在发布消息”的日志,Listener 节点显示“我已收到那些消息”的提示,那么说明 C++ 和 Python 两种 API 都能正常工作。