Jazzy ROS2入门指南系列02-如何安装 ROS2 Jazzy

6 阅读5分钟

📺 配套视频:Jazzy ROS2入门指南系列02-如何安装 ROS2 Jazzy

ROS 2 Jazzy 安装与基础环境配置指南

ROS 2 Jazzy Jalisco 是 ROS 2 的最新长期支持(LTS)版本之一,专为 Ubuntu 系统优化。本教程将指导你通过 Debian 包管理器完成从系统底层配置到核心功能验证的全过程。我们将不仅安装软件,还会配置必要的语言环境、添加官方软件源、设置环境变量,并运行经典的“发布者-订阅者”示例来验证安装的正确性。

系统语言环境与基础依赖配置

在安装 ROS 2 之前,必须确保系统的区域设置(Locale)正确。Locale 是一组定义语言、国家地区和字符编码的环境变量,应用程序依赖它来正确显示文本、日期和时间。如果 Locale 配置不当,可能会导致 ROS 2 中的某些工具出现乱码或运行错误。

首先,打开终端窗口,输入以下命令检查当前的 locale 设置:

locale

接下来,更新软件包索引并安装 locales 包。sudo apt update 用于刷新 Ubuntu 版本中所有可用软件包的数据库,而 locales 包提供了多语言和区域支持。使用 && 连接符可以确保前一条命令成功后再执行下一条:

sudo apt update && sudo apt install locales

安装完成后,需要生成具体的 locale 定义文件。这里我们选择英语(美国)和 UTF-8 编码,这是大多数开发环境的标准配置。依次执行以下三条命令:

sudo locale-gen 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 验证设置是否生效。如果输出中包含 LANG=en_US.UTF-8 且无报错,说明配置成功。

小结:正确的 Locale 设置是避免后续 ROS 2 工具出现字符编码错误的基础,务必确保 en_US.UTF-8 已正确生成并应用。

添加 ROS 2 软件源与 GPG 密钥

为了通过 apt 方便地安装和管理 ROS 2 软件包,我们需要将官方仓库添加到系统中。这避免了从 GitHub 克隆代码并手动编译的繁琐过程。首先,安装管理软件源所需的工具包,并确保启用了 universe 仓库:

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

software-properties-common 提供了管理 Ubuntu 软件源的工具,而 universe 仓库包含了许多默认仓库中没有的社区维护软件包。

接下来,添加 ROS 2 的 GPG 密钥。GPG 密钥用于验证下载的软件包是否来自可信来源,防止中间人攻击或包篡改。首先安装 curl 工具,然后下载并导入密钥:

sudo apt update && sudo apt install curl -y
sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg

注意命令中的空格和参数,-sSL 表示静默模式、跟随重定向并使用 SSL 加密。密钥被保存至 /usr/share/keyrings/ 目录下,这是现代 Ubuntu 系统推荐的安全存储位置。

最后,将 ROS 2 Jazzy 的仓库地址添加到系统源列表中。执行以下命令:

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

这条命令动态获取当前系统的架构和 Ubuntu 代号(如 noble),确保源列表与你的系统完全匹配。

易错点:在输入长命令时,请仔细检查空格和引号。建议复制粘贴而非手动输入,以避免因细微拼写错误导致源添加失败。

安装 ROS 2 Jazzy 桌面版

在正式安装 ROS 2 之前,建议先升级系统现有包并安装开发工具,以确保环境的一致性:

sudo apt upgrade -y
sudo apt install ros-dev-tools

ros-dev-tools 包含了一些常用的开发辅助工具。现在,我们可以安装 ROS 2 Jazzy 的桌面完整版。桌面版包含了 ROS 2 核心库、可视化工具(如 Rviz)、仿真接口以及常用的演示程序:

sudo apt install ros-jazzy-desktop

安装过程可能需要几分钟,具体取决于网络速度。安装完成后,ROS 2 的二进制文件位于 /opt/ros/jazzy/ 目录下。

为了让系统在每次启动终端时自动识别 ROS 2 命令,需要将 setup 脚本添加到 bash 配置文件中。执行以下命令:

echo "source /opt/ros/jazzy/setup.bash" >> ~/.bashrc

这里使用 >> 将命令追加到 ~/.bashrc 文件末尾。为了使更改立即生效,要么重新打开一个终端窗口,要么在当前终端执行:

source ~/.bashrc

你可以使用 gedit ~/.bashrc 打开文件检查该行是否已正确添加。随后,通过以下命令验证 ROS 2 版本:

printenv ROS_DISTRO

如果输出为 jazzy,说明环境变量配置成功。也可以使用 env | grep ROS 查看所有与 ROS 相关的环境变量。

小结source /opt/ros/jazzy/setup.bash 是激活 ROS 2 环境的关键步骤,将其写入 .bashrc 可实现永久生效。

初始化 rosdep 与安装仿真依赖

rosdep 是一个命令行工具,用于安装 ROS 包所依赖的系统级软件包。在使用 ROS 2 工作空间之前,必须初始化它:

sudo rosdep init
rosdep update

sudo rosdep init 会在 /etc/ros/rosdep/sources.list.d/ 下创建源列表,rosdep update 则从网络获取最新的依赖数据库。

为了支持机器人仿真,我们还需要安装 Gazebo Harmonic(ROS 2 Jazzy 对应的仿真版本)以及 Python 科学计算库。执行以下命令:

sudo apt-get install python3 python3-pip -y
sudo apt-get install ros-jazzy-ros-gz -y
sudo apt-get install python3-numpy

注意,ros$(rosdistro)-ros-gz 中的 $(rosdistro) 会被替换为当前设置的发行版名称 jazzy,因此直接安装 ros-jazzy-ros-gz 即可。

在新安装的系统中,启动 Gazebo 可能会遇到图形界面错误。为了避免这些问题,建议设置以下环境变量,强制使用软件渲染和特定的 Qt 平台插件:

echo 'export LIBGL_ALWAYS_SOFTWARE=1' >> ~/.bashrc
echo 'export QT_QPA_PLATFORM=xcb' >> ~/.bashrc
source ~/.bashrc

设置完成后,可以通过运行 gz sim 测试 Gazebo 是否正常启动。如果看到仿真界面,说明安装成功。

提示LIBGL_ALWAYS_SOFTWARE=1 对于没有专用 GPU 或驱动兼容性不好的虚拟机环境尤为重要,它能显著减少启动崩溃的概率。

验证安装:运行发布者与订阅者示例

ROS 2 的核心通信机制基于“发布者(Publisher)”和“订阅者(Subscriber)”模型。为了验证安装,我们将运行两个内置的演示节点。

打开第一个终端,运行 C++ 编写的发布者节点 talker

ros2 run demo_nodes_cpp talker

该节点会以每秒一次的频率发布字符串消息 “Hello World”。接着,打开第二个终端,运行 Python 编写的订阅者节点 listener

ros2 run demo_nodes_py listener

如果安装正确,listener 终端将实时打印出 talker 发布的消息。这两个程序模拟了真实机器人中的传感器数据流:talker 如同深度相机发送数据,listener 如同控制模块接收数据并做出反应。

在 ROS 2 术语中,talkerlistener 被称为节点(Node)。节点是 ROS 2 系统中执行计算的基本单元。理解 Publisher、Subscriber 和 Node 这三个概念,是掌握 ROS 2 通信机制的基础。

提升效率:使用 Terminator 多终端工具

为了方便同时监控多个节点,推荐安装 terminator,这是一款支持分屏的 Linux 终端模拟器:

sudo apt install terminator -y

安装后,输入 terminator 启动。右键点击终端界面,选择“水平分割”或“垂直分割”,即可在一个窗口中同时运行 talkerlistener。这种布局极大地提高了调试多节点系统时的效率。

速查表

  • 环境激活:每次新开终端需执行 source /opt/ros/jazzy/setup.bash,或将其加入 ~/.bashrc
  • 版本验证:使用 printenv ROS_DISTRO 确认当前版本为 jazzy
  • 核心概念
    • Node(节点):执行具体功能的进程。
    • Publisher(发布者):发送数据的节点。
    • Subscriber(订阅者):接收数据的节点。
  • 常用命令
    • 安装功能包:sudo apt install ros-jazzy-<package-name>
    • 运行节点:ros2 run <package_name> <executable_name>
    • 更新依赖:rosdep update
  • 故障排查:若 Gazebo 启动失败,检查是否设置了 LIBGL_ALWAYS_SOFTWARE=1QT_QPA_PLATFORM=xcb