当前位置: 首页 > news >正文

Ubuntu 上 ROS2 的安装

Ubuntu 上 ROS2 的安装

一、前言

​ 最近至少配置了 4 次 ROS2 了,该踩的坑都踩过了,遂发一篇博客记录一下。其实 ROS2 的安装并没有想象中的那么难,可能只是出于未知便觉得不知所措,但是其实本质上就只有两步:添加源、然后安装。

​ 但是在此之前,我觉得有必要说一下 Ubuntu 和 ROS2 的各个版本代号以及对应关系。众所周知,Ubuntu 的版本除了我们喜闻乐见的 20.04/22.04/24.04 之外,还有固定为「形容词 + 动物」的版本代号,最近的几个大版本如下:

Ubuntu 版本号 英文代号 中文俗称 支持周期
16.04 LTS Xenial Xerus 好客的非洲地松鼠 2016-2021
18.04 LTS Bionic Beaver 仿生海狸 2018-2023
20.04 LTS Focal Fossa 焦点猫鼬 2020-2025
22.04 LTS Jammy Jellyfish 急躁的水母 2022-2027
24.04 LTS Noble Numbat 高贵的袋食蚁兽 2024-2029

​ 而有些地方会直接用第一个单词来指代 Ubuntu 的版本,比如 Focal/Jammy/Noble 分别代表 20.04/22.04/24.04。

​ 而 ROS2 也有自己的版本代号(ROS1基本上已经不支持了,所以我们默认直接略过 ROS1),比如 Humble/Jazzy(这里和 Ubuntu 的代号有点像注意别弄混了),而每个版本支持的 Ubuntu 版本也不尽相同,具体信息可以去 ROS 官网 查看。以下教程只针对于截止目前相对较新的 22.04 和 24.04 来安装。

二、安装

其实 Ubuntu 上的软件安装方式十分统一,统一到只需要同一个命令就行:apt

唯一的区别就是有的软件在系统自带的软件源里,而有的需要自己添加软件源。

1. 终端配置 locale

​ ROS2 需要 UTF-8 编码支持,但是中文英文貌似都可以,目前来说还没有遇到什么由中文编码产生的问题。可以在终端运行一下 locale 来查看一下支持的语言,只要是 UTF-8 的比如 en_US.UTF-8 或者 zh_CN.UTF-8 暂时都行。如果不是 UTF-8 的得运行一下如下命令永久设置系统的全局 locale 环境变量:

sudo apt install -y 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

2. 添加 ROS2 软件源

Ubuntu 默认源没有 ROS2,需要添加官方源。

2.1. 导入 ROS2 官方密钥

# 导入 ROS2 GPG 密钥
curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key | sudo gpg --dearmor -o /usr/share/keyrings/ros-archive-keyring.gpg

​ 这一步的作用是将 ROS2 官方的密钥下载保存到 /usr/share/keyrings/ros-archive-keyring.gpg,防止下载的软件被恶意篡改。

2.2. 配置 ROS2 官方仓库

# 添加 ROS2 源到 sources.list.d
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

​ 这一步的作用是将 ROS2 的官方仓库添加到 apt 的下载源中,从而保证能通过 apt 下载 ROS2。其中 $(. /etc/os-release && echo $UBUNTU_CODENAME) 的作用是自动识别 Ubuntu 版本(比如22.04 对应 jammy),无需手动修改,也可以用$(lsb_release -cs) 代替。

​ 如果安装过程中遇到网络问题,可切换国内镜像源,如清华、中科大 ROS2 镜像。将上述地址换为中科大镜像地址即可:

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/ros-archive-keyring.gpg] https://mirrors.ustc.edu.cn/ros2/ubuntu/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null

3. 安装 ROS2

​ 配置结束之后终于可以一键安装了,首先更新一下软件包索引:

sudo apt update

​ 然后一键安装桌面完整版,包含 ROS2 核心库、可视化工具(RViz)、开发工具等,是最常用的版本:

sudo apt install -y ros-jazzy-desktop

​ 如果只需要核心库(无可视化工具),可以安装精简版:

sudo apt install -y ros-jazzy-ros-base

注意:jazzy 对应的是 Ubuntu24.04,如果当前 Ubuntu 的版本是 22.04,请将上述命令中的 jazzy 替换为 humble。

4. 配置环境变量

​ 安装完成后,需要让系统识别 ROS2 的命令,有两种配置方式:

  1. 临时配置(仅当前终端有效):每次打开新终端都需要执行:

    source /opt/ros/jazzy/setup.bash
    
  2. 永久配置(写入配置文件):将配置写入 ~/.bashrc,每次打开终端自动生效:

    echo "source /opt/ros/jazzy/setup.bash" >> ~/.bashrc
    source ~/.bashrc # 立即生效
    

5. 验证安装

(1)检查 ROS2 版本

ros2 --version

​ 如果输出类似 ros2 jazzy 的版本信息,说明基础安装成功。

(2)运行示例测试

​ 打开两个终端:

​ 终端 1 运行 ROS2 的示例话题发布节点:

ros2 run demo_nodes_cpp talker

​ 终端 2 运行示例话题订阅节点:

ros2 run demo_nodes_cpp listener

​ 如果终端 2 能看到终端 1 发布的 Hello World 信息,说明 ROS2 完整运行。

6. 安装额外开发工具

​ 有许多 ROS 开发中常用的开发工具可能并不在 ROS2 的安装包里,需要额外安装,比如 colcon。colcon 并不是 ROS2 安装包的默认组件,需要单独安装:

# 安装 colcon 核心扩展包(ROS2 官方推荐)
sudo apt install -y python3-colcon-common-extensions

​ rosdep也是:

sudo apt install -y python3-rosdep
# 初始化rosdep(解决依赖查找问题)
sudo rosdep init
rosdep update
http://www.jsqmd.com/news/390397/

相关文章:

  • 协同过滤算法Nodejs+vue3的短视频分享网站系统
  • vcpkg的配置
  • 寒假学习笔记2.2
  • 状压+dijk |floyd
  • 寒假学习笔记2.1
  • 并查集 - ## Find them, Catch them
  • (3-2)机器人身体结构与人体仿生学:人形机器人躯干体系
  • 气泡图标注软件中文版(美式功能设计)|一键插入序号气泡图,支持CAD/PDF/图片+OCR识别+Excel报告导出
  • EncodeConvert编码转换器v2.0——高效支持GBK与UTF-8互转的汉字编码工具
  • ZProtect一机一码工具(电脑版):专为DLL/EXE文件设计的轻量级软件开发解决方案
  • 未来之窗昭和仙君(七十二)前端交互异常行为检测—东方仙盟练气
  • 冥想第一千七百九十七天(1797)
  • 冥想第一千七百九十六天(1796)
  • ROS快速入门教程:什么是SLAM(Simultaneous localization and mapping,同步定位与建图)【解决机器人在未知环境运动时的定位与地图构建问题】
  • OpenTelemetry 开发实战【左扬精讲】—— 云原生可观测体系构建与分布式追踪二次开发
  • 工业园区全域轨迹拼接与异常行为智能识别平台——跨摄像单元轨迹连续性校验 × 多帧误差补偿引擎
  • Agentic AI时代,提示工程架构师的核心竞争力是什么?
  • 如何提升企业品牌在豆包结果中的排名? - 品牌2025
  • 寒假19
  • VSCode 配置 MinGW 搭建 C++ 开发环境
  • 基于SSM的蛋糕私人订制网站[SSM]-计算机毕业设计源码+LW文档
  • 领略大数据领域数据科学的数据清洗技巧
  • Kubernetes 编程 / Operator 专题【左扬精讲】—— Operator 开发实战项目 4 —— 基于 Operator 实现大模型私有化部署与管理
  • 基于SSM的传智健康系统[SSM]-计算机毕业设计源码+LW文档
  • Kubernetes 编程 / Operator 专题【左扬精讲】—— Operator 开发实战项目 3 —— 基于 Operator 实现 GPU 竞价实例资源池调度管理
  • 论文浅读(第一期)|摘自<<LOOpy Hell(ow):Infinite Traffic Loops at theApplication Layer>>(第三节) - 指南
  • Kubernetes 编程 / Operator 专题【左扬精讲】—— Operator 开发实战项目 6 —— 基于运维专家知识库的智能故障诊断与排查 Operator 实战
  • Kubernetes 编程 / Operator 专题【左扬精讲】—— Operator 开发实战项目 5 —— 基于大语言模型(LLM)的实时日志流智能监测 Operator 实现
  • HTML 脚本:构建交互式网页的基石
  • Scala IF...ELSE 语句详解