买了一块 NVIDIA Jetson,怎么在上面安装 ROS2?从 JetPack 到 ROS2 的完整入门指南

前面如果已经了解了 NVIDIA JetsonROS2,接下来很自然会产生一个问题:

我已经买了一块 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 版本,一层一层验证。

对于机器人项目来说:

兼容、稳定、能够复现,比单纯追求最新版本更重要。


参考资料

说明: JetPack 和 ROS2 都会持续更新。本文重点讲安装思路和版本匹配方法。真正安装前,建议再次确认 Jetson 型号、JetPack 版本、Ubuntu 版本,以及雷达、摄像头、机器人 SDK 等第三方组件的兼容要求。

posted @ 2026-09-14 22:30  人艰不拆_zmc  阅读(16)  评论(0)    收藏  举报