买了一块 NVIDIA Jetson,怎么在上面安装 ROS2?从 JetPack 到 ROS2 的完整入门指南
前面如果已经了解了 NVIDIA Jetson 和 ROS2,接下来很自然会产生一个问题:
我已经买了一块 Jetson,下一步到底怎么把 ROS2 装上去?
第一次接触机器人开发时,这一步很容易把人绕晕,因为网上经常同时出现:
Jetson
JetPack
Jetson Linux
Ubuntu
ROS2
Humble
Jazzy
CUDA
TensorRT
看起来像要安装七八套完全不同的系统。
其实真正的关系没有那么复杂。
先记住一张图:
Jetson 硬件
↓
JetPack / Jetson Linux
↓
Ubuntu 用户空间
↓
ROS2
↓
雷达驱动 / 摄像头 / SLAM / Nav2 / 机器人控制程序
所以安装 ROS2 的正确思路并不是:
买到 Jetson → 直接装 ROS2
而是:
先把 Jetson 的系统环境准备好,再根据 Ubuntu 版本选择合适的 ROS2 版本。
本文尽量不讲复杂原理,按照“第一次拿到 Jetson”的视角,把整个过程讲清楚。
一、先说结论:Jetson 上安装 ROS2,本质上和 Ubuntu 电脑安装 ROS2 很像
Jetson 本质上是一台 ARM 架构的小型计算机。
它运行 Linux 后,你可以像操作普通 Ubuntu 服务器一样:
sudo apt update
sudo apt install ...
ROS2 也不是烧进 Jetson 芯片里的。
它就是安装在 Linux 系统上的一套机器人软件框架。
所以整体关系可以理解为:
普通电脑:
电脑硬件
↓
Ubuntu
↓
安装 ROS2
Jetson:
Jetson 硬件
↓
JetPack / Jetson Linux
↓
Ubuntu
↓
安装 ROS2
真正需要注意的不是“Jetson 能不能装 ROS2”,而是:
你当前 Jetson 使用的 Ubuntu 是什么版本,这决定了应该优先安装哪个 ROS2 发行版。
二、不要一上来就复制 ROS2 安装命令,先确认三个东西
拿到 Jetson 后,建议先确认:
1. 我买的是什么 Jetson
2. 当前装的是什么 JetPack
3. 当前系统基于哪个 Ubuntu 版本
这是最重要的一步。
1. 看 Ubuntu 版本
执行:
cat /etc/os-release
重点看:
VERSION_ID
VERSION_CODENAME
例如可能看到:
VERSION_ID="22.04"
VERSION_CODENAME=jammy
或者:
VERSION_ID="24.04"
VERSION_CODENAME=noble
2. 看 Jetson Linux / L4T 版本
可以执行:
dpkg-query --show nvidia-l4t-core
如果系统中已经正确安装 NVIDIA Jetson 软件栈,一般会看到对应版本。
3. 看 CPU 架构
执行:
uname -m
Jetson 通常会看到:
aarch64
也就是 64 位 ARM。
三、JetPack、Ubuntu 和 ROS2 版本为什么必须对应?
这是整篇文章最重要的地方。
ROS2 不是只有一个版本。
常见名称包括:
Foxy
Humble
Iron
Jazzy
Kilted
Rolling
……
这些叫:
ROS2 Distribution,也就是 ROS2 发行版。
可以类比 Ubuntu:
Ubuntu 20.04
Ubuntu 22.04
Ubuntu 24.04
ROS2 也有自己的版本系列。
不同 ROS2 发行版有自己的主要支持系统。
对于 Jetson,最容易理解的两套组合是:
| Jetson 软件环境 | Ubuntu 基础系统 | 常见 ROS2 选择 |
|---|---|---|
| JetPack 6.x | Ubuntu 22.04 | ROS2 Humble |
| JetPack 7.x | Ubuntu 24.04 | ROS2 Jazzy |
其中:
- JetPack 6.2.2 基于 Ubuntu 22.04
- JetPack 7.x 基于 Ubuntu 24.04
- ROS2 Jazzy 官方支持 Ubuntu 24.04 的 64 位 ARM
- ROS2 Humble 长期以来是 Ubuntu 22.04 上非常常见的组合
因此第一次安装时,可以先按下面的逻辑判断:
Ubuntu 22.04
↓
优先考虑 ROS2 Humble
Ubuntu 24.04
↓
优先考虑 ROS2 Jazzy
这里有一个非常重要的原则:
不要为了追求“最新”,盲目把 JetPack、Ubuntu、ROS2 都升到最新。
机器人项目里经常还依赖:
雷达驱动
摄像头驱动
机器狗 SDK
SLAM
Nav2
第三方 ROS2 项目
如果某个关键驱动只测试过 Humble,那么“JetPack 6 + Ubuntu 22.04 + Humble”可能反而比最新环境更适合项目。
机器人项目选版本,首先看兼容性,其次才看新旧。
四、2026 年新买 Jetson,我应该怎么选?
如果只是学习 ROS2,没有老项目兼容包袱,可以优先考虑比较新的官方软件环境。
但实际项目建议分两种情况。
情况一:从零学习,没有历史依赖
如果你的 Jetson 当前是:
JetPack 7.x
Ubuntu 24.04
可以优先学习:
ROS2 Jazzy
这套组合比较自然。
情况二:已经有现成机器人开源项目或厂家驱动
假设你找到的机器狗、激光雷达或者导航项目明确写着:
Tested on:
Ubuntu 22.04
ROS2 Humble
那就不要为了“新”强行换成 Jazzy。
更合理的是:
先按项目验证过的环境搭起来
↓
先让功能跑通
↓
以后再评估升级
对于机器人项目,这一点非常重要。
五、开始安装:以 Ubuntu 24.04 + ROS2 Jazzy 为例
下面先用一套比较容易理解的环境演示:
Jetson
+
Ubuntu 24.04
+
ROS2 Jazzy
注意:下面是在 Jetson 已经能够正常启动、联网,并且系统本身正常工作的前提下进行。
六、第一步:先让 Jetson 联网
ROS2 安装过程中需要从软件仓库下载很多软件包。
所以先确认 Jetson 能访问互联网。
测试:
ping -c 4 8.8.8.8
再测试域名解析:
ping -c 4 github.com
也可以:
curl -I https://github.com
如果这里都不通,就不要继续安装 ROS2。
先解决:
网线
Wi-Fi
DNS
代理
网络策略
这些问题。
七、第二步:更新系统
执行:
sudo apt update
sudo apt upgrade -y
这一步可以理解为:
先把当前 Ubuntu 已有软件包更新到比较正常的状态。
机器人环境经常涉及很多底层依赖,系统长期不更新容易出现包版本冲突。
八、第三步:确认 UTF-8 Locale
ROS2 官方安装说明会要求系统使用支持 UTF-8 的 Locale。
先查看:
locale
如果环境不完整,可以执行:
sudo apt update
sudo apt install locales -y
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
对刚接触 Linux 的人来说,不用深入研究 Locale。
简单理解:
它负责系统的语言、字符编码等环境设置。
ROS2 希望系统使用正常的 UTF-8 环境。
九、第四步:启用 Ubuntu Universe 软件源
执行:
sudo apt install software-properties-common -y
sudo add-apt-repository universe
然后:
sudo apt update
Universe 是 Ubuntu 的一个软件仓库分类。
ROS2 的一些依赖会使用到里面的软件包。
十、第五步:添加 ROS2 官方软件源
ROS2 并不是 Ubuntu 默认仓库里所有内容都直接准备好的。
所以还需要告诉系统:
ROS2 的软件包从哪里下载。
当前 ROS2 官方提供了 ros2-apt-source 的方式来配置软件源。
先安装 curl:
sudo apt update
sudo apt install curl -y
获取当前 ROS apt source 包版本:
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}')
下载对应 Ubuntu 版本的软件源配置包:
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
再更新:
sudo apt update
这一大段看起来复杂,其实只是在做一件事:
把 ROS2 官方软件仓库配置到 Ubuntu 中。
完成以后,后面就可以像普通 Ubuntu 软件一样使用 apt install 安装 ROS2。
十一、第六步:正式安装 ROS2
这里通常有两种选择。
方案一:Desktop
执行:
sudo apt install ros-jazzy-desktop -y
Desktop 会包含更多东西,例如:
ROS2 基础组件
常用工具
RViz
示例程序
图形化工具
对于第一次学习 ROS2 的人,我更建议安装:
ros-jazzy-desktop
因为后面学习 RViz、看雷达、看地图都会方便很多。
方案二:ROS Base
如果以后做的是没有显示器的正式机器人,希望环境更精简,可以安装:
sudo apt install ros-jazzy-ros-base -y
它更偏向:
只安装 ROS2 核心能力,不安装很多桌面图形工具。
第一次学习不用纠结。
可以简单记:
学习 / 开发
→ Desktop
正式部署 / 精简环境
→ 可以考虑 ROS Base
十二、第七步:安装开发工具
如果后面需要:
编译 ROS2 项目
使用 rosdep
创建工作空间
编译第三方驱动
建议安装:
sudo apt install ros-dev-tools -y
对于机器人开发而言,基本迟早都会用到。
十三、第八步:让当前终端“认识 ROS2”
安装完成以后,并不是马上所有终端都知道 ROS2 在哪里。
需要执行:
source /opt/ros/jazzy/setup.bash
然后测试:
ros2 --help
如果能够看到 ROS2 命令帮助,说明环境已经生效。
还可以:
echo $ROS_DISTRO
正常应该看到:
jazzy
十四、为什么每次打开终端都要 source?
这个地方很容易让第一次接触 ROS2 的人困惑。
执行:
source /opt/ros/jazzy/setup.bash
本质上是在告诉当前 Shell:
ROS2 安装在哪里,相关命令、库和环境变量在哪里。
如果不想每打开一个终端都手动执行,可以写入:
~/.bashrc
例如:
echo "source /opt/ros/jazzy/setup.bash" >> ~/.bashrc
然后:
source ~/.bashrc
以后重新打开终端就会自动加载 ROS2 环境。
十五、第九步:不要急着接雷达,先测试 ROS2 自己能不能通信
这是非常重要的一步。
安装完成后,不要马上去接:
雷达
摄像头
机器狗
先确认最基础的 ROS2 通信正常。
官方提供了很简单的:
talker
listener
示例。
可以把它们理解成:
talker
= 不停发消息的人
listener
= 不停收消息的人
十六、打开第一个终端:启动 Talker
执行:
source /opt/ros/jazzy/setup.bash
ros2 run demo_nodes_cpp talker
你会看到类似:
Publishing: 'Hello World: 1'
Publishing: 'Hello World: 2'
Publishing: 'Hello World: 3'
意思就是:
这个 ROS2 程序正在不断发布消息。
十七、打开第二个终端:启动 Listener
执行:
source /opt/ros/jazzy/setup.bash
ros2 run demo_nodes_py listener
如果看到:
I heard: 'Hello World: 1'
I heard: 'Hello World: 2'
说明:
Talker
↓
ROS2
↓
Listener
已经可以正常通信。
到这里,ROS2 最基础的环境就安装成功了。
十八、安装完 ROS2 后,下一步应该做什么?
这时候你的 Jetson 大概是:
Jetson
↓
JetPack / Ubuntu
↓
ROS2
但是现在还没有真正连接机器人硬件。
后面才开始安装:
雷达 ROS2 驱动
摄像头程序
SLAM
Nav2
机器狗 ROS2 SDK
自己的程序
所以完整路线应该是:
Jetson 能开机
↓
系统正常
↓
网络正常
↓
安装 ROS2
↓
Talker / Listener 测试成功
↓
安装雷达驱动
↓
确认 ROS2 能看到雷达数据
↓
安装 SLAM
↓
尝试建图
↓
安装 Nav2
↓
尝试导航
↓
再接具体机器人
对于第一次做机器人项目的人,这种“一层一层验证”的方式非常重要。
不要一次把所有软件都装完再测试。
否则出问题时很难知道到底是哪一层的问题。
十九、ROS2 安装好以后,雷达驱动是怎么“接进去”的?
这时候就能理解前面讲过的 ROS2 了。
假设购买了一款激光雷达。
厂家提供:
ROS2 Driver
你把驱动下载到 Jetson:
Jetson
↓
ROS2
↓
雷达 ROS2 Driver
驱动程序启动以后,会:
读取真实雷达数据
↓
转换成 ROS2 消息
↓
发布到 ROS2 Topic
例如:
/scan
或者:
/points
于是 SLAM、Nav2 等程序就可以订阅这些数据。
这时候就能看出 ROS2 的价值:
雷达程序不需要直接调用 SLAM,SLAM 也不需要知道雷达内部协议。
大家按照 ROS2 的方式交换数据即可。
二十、ROS2 没有一个需要访问的“服务器地址”
这一点再强调一次。
安装完 ROS2 后,不会出现:
http://192.168.1.100:8080/ros2
这样的管理地址。
也没有一个:
ROS2 Server
需要雷达、SLAM 和导航通过 HTTP 去访问。
更接近下面这种模式:
Jetson
ROS2
├── 雷达 Node
├── SLAM Node
├── Nav2 Node
└── 机器人控制 Node
这些程序本身就是 ROS2 程序。
它们通过 ROS2 的通信机制互相发现和交换消息。
所以:
ROS2 是运行环境和通信体系,不是一个 Web 后台。
二十一、如果我的 Jetson 是 Ubuntu 22.04,怎么安装 ROS2 Humble?
整体步骤几乎一样。
主要区别是 ROS2 发行版名称从:
jazzy
换成:
humble
例如安装:
sudo apt install ros-humble-desktop -y
加载环境:
source /opt/ros/humble/setup.bash
写入 .bashrc:
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
检查:
echo $ROS_DISTRO
正常应该看到:
humble
运行测试:
ros2 run demo_nodes_cpp talker
另一个终端:
ros2 run demo_nodes_py listener
所以可以发现:
Humble 和 Jazzy 的安装思路基本一样,最大的区别是它们对应的 Ubuntu 环境和软件包名字不同。
二十二、安装 ROS2 后,建议创建自己的 Workspace
ROS2 开发中还会经常看到一个词:
Workspace
中文可以理解成:
工作空间。
你自己下载的机器人项目、雷达驱动、自定义程序通常都会放在工作空间里。
最常见的结构:
ros2_ws
├── src
├── build
├── install
└── log
第一次可以先创建:
mkdir -p ~/ros2_ws/src
cd ~/ros2_ws
以后下载 ROS2 项目通常放:
~/ros2_ws/src
然后使用:
colcon build
进行编译。
编译完成后:
source ~/ros2_ws/install/setup.bash
这样当前终端才能识别工作空间中新编译出来的 ROS2 包。
二十三、系统 ROS2 和自己的 Workspace 是什么关系?
这也是初学者很容易混乱的地方。
可以这样理解:
/opt/ros/jazzy
=
官方安装的 ROS2 基础环境
~/ros2_ws
=
我自己开发和下载第三方项目的工作目录
启动自己项目之前,经常会先:
source /opt/ros/jazzy/setup.bash
source ~/ros2_ws/install/setup.bash
第一句:
加载官方 ROS2。
第二句:
再把自己的项目叠加进来。
可以把它理解成:
ROS2 官方基础环境
↓
自己的工作空间
↓
雷达 / SLAM / 机器人项目
二十四、ROS2 要不要装 Docker 里?
可以,但对于第一次学习的人,我不建议一上来就这么做。
Docker 的好处是:
环境隔离
容易复现
方便部署
版本比较固定
但是 Jetson 上还会涉及:
GPU
CUDA
设备映射
USB
网口
摄像头
雷达
图形界面
ROS2 网络发现
这些东西放进容器以后,会多一层需要排查的问题。
所以建议:
第一次学习
Jetson
↓
Ubuntu
↓
直接安装 ROS2
先把基本原理搞懂。
项目产品化以后
再考虑:
Jetson
↓
Docker
↓
ROS2 + 项目
这样更容易维护和批量部署。
二十五、Jetson 上安装 ROS2 最容易踩的几个坑
1. Ubuntu 和 ROS2 版本选错
这是最常见的问题。
例如:
Ubuntu 22.04
却直接照着 Ubuntu 24.04 的教程安装 Jazzy
很容易出现包不存在或者依赖问题。
第一件事永远是:
cat /etc/os-release
2. 只看 ROS2 版本,不看硬件驱动兼容性
你的 ROS2 装得再新,如果:
雷达驱动不支持
摄像头驱动不支持
机器狗 SDK 不支持
项目还是做不下去。
所以项目环境要整体考虑:
JetPack
Ubuntu
ROS2
雷达驱动
机器人 SDK
SLAM
Nav2
CUDA
TensorRT
不能单独只看一个版本。
3. 忘记 source
明明已经安装 ROS2,却执行:
ros2
提示找不到命令。
很多时候只是没执行:
source /opt/ros/jazzy/setup.bash
或者 Humble:
source /opt/ros/humble/setup.bash
4. Workspace 编译完却找不到自己的包
可能只是忘记:
source ~/ros2_ws/install/setup.bash
ROS2 里面的 source 是一个非常高频的动作。
5. 一次装太多东西
例如第一次就一起安装:
ROS2
雷达
机器狗 SDK
SLAM
Nav2
摄像头
AI
Docker
最后报错时完全不知道哪里有问题。
更好的方式是:
ROS2 通信测试成功
↓
再接雷达
↓
雷达成功
↓
再做 SLAM
↓
SLAM 成功
↓
再做导航
每完成一层就测试一次。
二十六、如果是第一次学习,我建议按照这个路线走
不用一上来学习大量 ROS2 理论。
先完成下面几个小目标:
第 1 步
Jetson 正常启动 Ubuntu
第 2 步
确认网络正常
第 3 步
确认 JetPack / Ubuntu 版本
第 4 步
选择合适 ROS2 发行版
第 5 步
完成 ROS2 安装
第 6 步
跑通 Talker / Listener
第 7 步
学会 ros2 node list
第 8 步
学会 ros2 topic list
第 9 步
创建 ros2_ws
第 10 步
安装一个真实传感器驱动
完成这十步以后,再去看 SLAM、Nav2,会轻松很多。
二十七、最后用一张图把整个安装过程串起来
拿到 Jetson
↓
确认具体型号
↓
安装 / 确认 JetPack
↓
确认 Ubuntu 版本
↓
┌─────────────────────┐
│ Ubuntu 22.04 │
│ → ROS2 Humble │
└─────────────────────┘
或者
┌─────────────────────┐
│ Ubuntu 24.04 │
│ → ROS2 Jazzy │
└─────────────────────┘
↓
安装 ROS2
↓
source ROS2 环境
↓
Talker / Listener 测试
↓
创建 ros2_ws
↓
安装雷达 / 摄像头驱动
↓
SLAM
↓
Nav2
↓
机器人控制
↓
真正的机器人项目
二十八、最终应该怎么理解“Jetson 上安装 ROS2”?
如果只记一句话:
Jetson 是一台小型机器人计算机,先运行 JetPack / Linux,然后像普通 Ubuntu 电脑一样安装 ROS2;ROS2 装好后,再在它上面运行雷达驱动、SLAM、Nav2、机器人控制等程序。
所以整个关系并不神秘:
Jetson
=
硬件计算平台
JetPack / Jetson Linux
=
NVIDIA 为 Jetson 准备的系统和软件基础
Ubuntu
=
我们熟悉的 Linux 用户环境
ROS2
=
机器人软件框架和通信平台
雷达 / SLAM / Nav2 / 机器人 SDK
=
运行在 ROS2 体系中的具体机器人程序
真正做项目时,最重要的不是“把最新的软件全装上”。
而是:
先确定硬件和驱动需要什么环境,再选择匹配的 JetPack、Ubuntu 和 ROS2 版本,一层一层验证。
对于机器人项目来说:
兼容、稳定、能够复现,比单纯追求最新版本更重要。
参考资料
- NVIDIA JetPack:https://developer.nvidia.com/embedded/jetpack
- NVIDIA JetPack Downloads:https://developer.nvidia.com/embedded/jetpack/downloads
- NVIDIA Jetson FAQ:https://developer.nvidia.com/embedded/faq
- ROS2 官方文档:https://docs.ros.org/
- ROS2 Jazzy Ubuntu 安装文档:https://docs.ros.org/en/jazzy/Installation/Ubuntu-Install-Debs.html
- ROS2 Humble Ubuntu 安装文档:https://docs.ros.org/en/humble/Installation/Ubuntu-Install-Debs.html
说明: JetPack 和 ROS2 都会持续更新。本文重点讲安装思路和版本匹配方法。真正安装前,建议再次确认 Jetson 型号、JetPack 版本、Ubuntu 版本,以及雷达、摄像头、机器人 SDK 等第三方组件的兼容要求。
浙公网安备 33010602011771号