惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

罗磊的独立博客
美团技术团队
Apple Machine Learning Research
Apple Machine Learning Research
Hugging Face - Blog
Hugging Face - Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
月光博客
月光博客
WordPress大学
WordPress大学
The Cloudflare Blog
阮一峰的网络日志
阮一峰的网络日志
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园_首页
博客园 - Franky
博客园 - 司徒正美
酷 壳 – CoolShell
酷 壳 – CoolShell
爱范儿
爱范儿
Jina AI
Jina AI
Last Week in AI
Last Week in AI
雷峰网
雷峰网
IT之家
IT之家
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 聂微东
小众软件
小众软件
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
V
V2EX

博客园 - 人艰不拆_zmc

AG-UI 是什么?一篇文章讲清楚 AI Agent 与前端如何交互 AI 里的“本体”到底是什么?一篇写给技术小白的通俗解释 15000mAh 到底是什么概念?一篇看懂电池容量 go2_ros2_sdk 到底是干什么的?从 Go2、官方 SDK、ROS2 一路讲到 SLAM 和 Nav2 买了宇树 Go2 以后怎么二次开发?写给第一次做机器狗项目的人 NVIDIA Jetson 到底是什么?写给第一次接触机器人和边缘 AI 的人 ROS / ROS2 到底是什么?写给第一次接触机器人开发的人 大模型到底能同时多少人用?一篇看懂并发、排队与容量估算 大模型为什么有快有慢?一篇看懂响应速度背后的关键因素 技术小白也能看懂:大模型里的量化、蒸馏到底是什么意思? Codex 使用技巧:从“会聊天”到“真正能干活” 我终于搞懂了:Codex 对话中插件和 Skill 到底怎么用 我终于搞懂了 Agent Spec:它其实就是 Agent 的“标准设计图” 我终于搞懂了 Tool:原来不只是 Function Calling 里的函数 Skill 里的 Python 脚本,到底是不是 Tool? 我终于搞懂了 Codex 的 Plugin 和 Skill:顺便把 App、MCP 一次理清 我终于搞懂了 Codex 的“应用”:App 到底是什么,怎么添加和维护? 我终于搞懂了 Tool、Function Calling 和 MCP:大模型到底怎么知道该调哪个接口? 我终于搞懂了 MCP:从 HTTP API 到 ERP MCP Server 的完整入门 我终于搞懂了 Codex 的“记忆”是怎么回事 Codex 用久了越来越慢?我的上下文管理小技巧 我终于搞懂了 Codex 里的 Thread、Turn 和 Session 从 Qwen3.8-27B 到 FP8、NVFP4、MoE:一次搞懂几个常见大模型概念 FPS 是什么意思?简单理解 60 FPS、25 FPS 和视频帧率 DeepSeek Harness 明明像 AI Coding 工具,为什么又能用来构建各种 Agent? 使用 Codex 开发项目,怎么才能节约 Token? 模型里的 32K、128K、256K 是什么意思?简单聊聊上下文限制 Codex 一次对话到底会给模型发送什么?以 Spring Boot 项目为例讲清 Context、代码读取与 Token 消耗 AI Agent 中的 Rule 是什么?以 Codex 为例,小白也能看懂 我终于搞懂了 Harness:它不是论文,也不是标准,更不是 Codex 独有
买了一块 NVIDIA Jetson,怎么在上面安装 ROS2?从 JetPack ...
人艰不拆_zmc · 2026-09-14 · via 博客园 - 人艰不拆_zmc

前面如果已经了解了 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 等第三方组件的兼容要求。