Jetson Nano 机器人开发环境搭建指南
从零开始配置 NVIDIA Jetson Nano,搭建完整的机器人开发环境,包括系统安装、CUDA 配置、Python 环境及常用 AI 框架部署。
Jetson Nano 机器人开发环境搭建指南
NVIDIA Jetson Nano 是一款专为边缘 AI 和机器人应用设计的小型开发板。它搭载了 128 核 Maxwell GPU,拥有 472 GFLOPS 的算力,足以运行实时深度学习推理任务。对于想要构建自动驾驶小车(如 DonkeyCar、JetBot)的开发者来说,Jetson Nano 是一个性价比极高的选择。
本文将带你从零开始,完成 Jetson Nano 的系统安装和开发环境配置。我们不仅会介绍基础安装步骤,还会分享实际开发中的优化技巧和常见问题解决方案。
为什么选择 Jetson Nano?
性能优势
| 特性 | 规格 | 说明 |
|---|---|---|
| GPU | 128-core Maxwell | 472 GFLOPS |
| CPU | Quad-core ARM A57 | 1.43 GHz |
| 内存 | 4GB LPDDR4 | 64-bit |
| 视频编码 | 4Kp30 | H.264/H.265 |
| 功耗 | 5-10W | 适合电池供电 |
| 价格 | ~800元 | 性价比极高 |
对比其他平台
| 平台 | GPU 性能 | 价格 | 适用场景 |
|---|---|---|---|
| Raspberry Pi 4 | 无 GPU | 400元 | 轻量应用 |
| Jetson Nano | 472 GFLOPS | 800元 | 入门 AI |
| Jetson Xavier NX | 21 TFLOPS | 3000元 | 专业开发 |
| Intel NUC | 依赖独显 | 3000+元 | 通用计算 |
典型应用
- 自动驾驶小车:DonkeyCar、JetBot
- 机器人视觉:物体检测、跟踪
- 边缘 AI:实时推理
- 无人机:自主导航
- 工业检测:质量检测
准备工作
硬件清单
必需设备:
- Jetson Nano 开发板(4GB 版本推荐)
- microSD 卡(64GB 以上,Class 10 或更快,推荐三星 EVO Plus)
- 5V 4A DC 电源(圆头 4.0mm×1.7mm,必须,USB 供电性能受限)
- 显示器(HDMI 或 DisplayPort)
- 键盘、鼠标(USB 或蓝牙)
- 网线(Cat5e 以上)或 Wi-Fi 适配器
推荐配件:
- 散热片/风扇(强烈建议,防止过热降频)
- 外壳(保护电路板)
- GPIO 扩展板(方便连接传感器)
- M.2 网卡(Intel 8265NGW,支持 Wi-Fi + 蓝牙)
软件准备
在开始之前,下载以下软件到你的电脑:
-
JetPack SDK 镜像
- 下载地址:NVIDIA 官网
- 推荐版本:JetPack 4.6(基于 Ubuntu 18.04)
-
烧录工具
- Windows/Mac:Balena Etcher
- Linux:
dd命令或 GNOME Disks
-
SSH 客户端
- Windows:PuTTY 或 Windows Terminal
- Mac/Linux:内置 ssh 命令
第一步:烧录系统镜像
方法一:使用 Balena Etcher(推荐)
- 插入 microSD 卡到电脑
- 打开 Balena Etcher
- 选择镜像文件(sd-blob.img)
- 选择目标设备(microSD 卡)
- 点击 “Flash!” 开始烧录
- 等待完成(约 10-15 分钟)
方法二:使用 dd 命令(Linux/Mac)
# 查看 microSD 卡设备名(如 /dev/sdb 或 /dev/disk2)
lsblk # Linux
diskutil list # Mac
# 卸载 microSD 卡(如果已挂载)
sudo umount /dev/sdX1 # Linux
diskutil unmountDisk /dev/diskX # Mac
# 烧录镜像(注意替换 sdX)
sudo dd if=sd-blob.img of=/dev/sdX bs=4M status=progress
# 同步数据
sudo sync
注意:
dd命令会覆盖目标设备的所有数据,请务必确认设备名正确- 烧录过程可能需要 10-20 分钟,不要中断
首次启动配置
- 将 microSD 卡插入 Jetson Nano
- 连接显示器、键盘、鼠标、网线
- 接通电源,等待启动
- 按照向导完成初始设置:
- 选择语言(建议 English,方便后续操作)
- 选择时区
- 设置用户名和密码(记住密码!)
- 选择桌面环境(建议最小化安装)
第二步:系统更新与基础配置
更新系统
# 更新软件包列表
sudo apt update
# 升级所有包
sudo apt upgrade -y
# 清理缓存
sudo apt autoremove -y
sudo apt autoclean
配置交换空间(Swap)
Jetson Nano 只有 4GB 内存,在运行大型模型时可能不足。配置 Swap 可以防止 OOM(Out of Memory)错误。
# 创建 4GB Swap 文件
sudo fallocate -l 4G /swapfile
# 设置权限
sudo chmod 600 /swapfile
# 设置为 Swap 空间
sudo mkswap /swapfile
# 启用 Swap
sudo swapon /swapfile
# 验证 Swap
free -h
# 设置开机自动挂载
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
优化建议:
- Swap 大小建议为内存的 1-2 倍
- 使用 SSD 可以提升 Swap 性能
- 频繁使用 Swap 会影响性能,建议升级内存或优化代码
禁用桌面服务(可选)
如果你的 Jetson Nano 主要用于机器人开发,不需要图形界面,可以禁用桌面服务以释放 GPU 内存:
# 切换到多用户模式(无桌面)
sudo systemctl set-target multi-user.target
# 重启生效
sudo reboot
# 如果需要恢复桌面模式
sudo systemctl set-target graphical.target
注意:禁用桌面后,只能通过 SSH 或串口访问。
配置电源模式
Jetson Nano 支持多种电源模式,影响性能和功耗:
# 查看当前电源模式
sudo nvpmodel -q
# 设置为最大性能模式(10W,5W 模式会降频)
sudo nvpmodel -m 0
# 开启最大时钟频率
sudo jetson_clocks
# 验证 GPU 频率
sudo tegrastats --interval 1000
电源模式对比:
| 模式 | 功耗 | GPU 频率 | 适用场景 |
|---|---|---|---|
| MAXN | 10W | 921 MHz | 性能优先 |
| 5W | 5W | 640 MHz | 电池供电 |
第三步:验证 CUDA 和 cuDNN
JetPack 镜像已预装 CUDA Toolkit 和 cuDNN。我们需要验证安装是否正确。
检查 CUDA 版本
# 查看 CUDA 编译器版本
nvcc --version
# 输出示例:
# Cuda compilation tools, release 10.2, V10.2.89
检查 GPU 状态
# 设置最大时钟频率
sudo jetson_clocks
# 查看 GPU 信息
nvidia-smi
# 实时监控(每 1 秒更新)
sudo tegrastats --interval 1000
测试 CUDA 示例
# 复制 CUDA 示例代码
cp -r /usr/local/cuda/samples ~/cuda-samples
# 编译 deviceQuery 示例
cd ~/cuda-samples/1_Utilities/deviceQuery
make
# 运行测试
./deviceQuery
如果输出显示 “Result = PASS”,说明 CUDA 安装成功。
验证 cuDNN
# 查看 cuDNN 版本
cat /usr/include/cudnn.h | grep CUDNN_MAJOR -A 2
# 或者
dpkg -l | grep cudnn
第四步:配置 Python 开发环境
为什么使用 Conda?
直接使用系统 Python 会导致依赖冲突。推荐使用 Miniconda 或 Anaconda 管理环境:
- 隔离环境:不同项目使用不同的依赖
- 版本控制:轻松切换 Python 和包版本
- 易于管理:一键创建、删除环境
安装 Miniconda
# 下载 ARM64 版 Miniconda
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-aarch64.sh
# 安装
bash Miniconda3-latest-Linux-aarch64.sh
# 按照提示完成安装
# - 同意许可协议
# - 选择安装路径(默认 ~/miniconda3)
# - 是否初始化 conda(选 yes)
# 重新加载 bash 配置
source ~/.bashrc
# 验证安装
conda --version
创建开发环境
# 创建名为 robocar 的环境,Python 3.8
conda create -n robocar python=3.8 -y
# 激活环境
conda activate robocar
# 验证 Python 版本
python --version # 应该显示 Python 3.8.x
安装常用库
# 基础科学计算
pip install numpy scipy pandas matplotlib
# 计算机视觉
pip install opencv-python-headless pillow
# 深度学习(需要 ARM64 预编译版本)
# TensorFlow
pip install tensorflow==2.5.0
# PyTorch(NVIDIA 官方提供 Jetson 预编译包)
# 参考:https://forums.developer.nvidia.com/t/pytorch-for-jetson/72048
wget https://nvidia.box.com/shared/static/p57j4ntag8hb3k3gwm8v9g1qn8h9z9mz.whl -O torch-1.10.0-cp38-cp38-linux_aarch64.whl
pip install torch-1.10.0-cp38-cp38-linux_aarch64.whl
# 验证安装
python -c "import torch; print(f'PyTorch: {torch.__version__}, CUDA: {torch.cuda.is_available()}')"
注意:
- TensorFlow 和 PyTorch 必须使用针对 ARM64 和 CUDA 版本预编译的包
- 不要直接使用
pip install tensorflow或pip install torch - 参考 NVIDIA 官方文档
配置 Jupyter Lab
# 安装 Jupyter Lab
pip install jupyterlab
# 生成配置文件
jupyter lab --generate-config
# 编辑配置文件
nano ~/.jupyter/jupyter_lab_config.py
# 修改以下内容:
c.ServerApp.ip = '0.0.0.0' # 允许远程访问
c.ServerApp.port = 8888
c.ServerApp.open_browser = False
c.ServerApp.allow_root = True
# 启动 Jupyter Lab
jupyter lab --ip=0.0.0.0 --allow-root
# 在浏览器中访问:http://jetson-ip:8888
第五步:安装机器人常用工具
Jetson GPIO
用于控制 Jetson Nano 的 GPIO 引脚:
# 安装
sudo apt install python3-jetson-gpio -y
# 添加用户到 gpio 组
sudo usermod -aG gpio $USER
# 重新登录或执行
newgrp gpio
# 测试
python -c "import Jetson.GPIO as GPIO; print('GPIO 库安装成功')"
Jetson Stats(jtop)
强大的系统监控工具,可以实时查看 CPU、GPU、内存使用情况:
# 安装
sudo pip install jetson-stats
# 运行监控面板
jtop
# 在终端查看状态
sudo tegrastats --interval 1000
ROS2(可选)
如果需要开发 ROS2 应用:
# 安装 ROS2 Humble
sudo apt install ros-humble-desktop -y
# 配置环境
echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc
source ~/.bashrc
# 验证
ros2 run demo_nodes_cpp talker
其他实用工具
# Git 配置
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
# VS Code(可选,推荐通过 Remote SSH 连接)
# 下载地址:https://code.visualstudio.com/
# Docker(可选)
sudo apt install docker.io -y
sudo usermod -aG docker $USER
第六步:配置远程访问
SSH 访问
# 启用 SSH 服务
sudo systemctl enable ssh
sudo systemctl start ssh
# 查看 IP 地址
ifconfig
# 或
hostname -I
# 从其他电脑连接
ssh username@jetson-ip
# 示例:
ssh jetson@192.168.1.100
VS Code Remote SSH
- 在 VS Code 中安装 “Remote - SSH” 扩展
- 点击左下角绿色图标
- 选择 “Connect to Host…”
- 输入
username@jetson-ip - 输入密码
- 连接成功后,可以像本地一样开发
文件传输
# 从电脑传输文件到 Jetson
scp local_file username@jetson-ip:~/
# 从 Jetson 传输文件到电脑
scp username@jetson-ip:~/remote_file ./
# 传输目录
scp -r local_dir username@jetson-ip:~/
性能优化技巧
1. 最大化 GPU 性能
# 设置最大时钟频率(每次重启后需要重新执行)
sudo jetson_clocks
# 设置为开机自动执行
echo "sudo jetson_clocks" | sudo tee -a /etc/rc.local
2. 使用 TensorRT 加速推理
TensorRT 可以将模型推理速度提升 2-5 倍:
import tensorrt as trt
# 加载模型并转换为 TensorRT 引擎
# 具体代码取决于模型框架(TensorFlow/PyTorch)
3. 优化内存使用
# 监控内存使用
free -h
# 清理缓存
sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'
# 使用 FP16 精度(减少内存占用)
model.half() # PyTorch
4. 散热优化
- 安装散热片(被动散热)
- 安装风扇(主动散热)
- 使用导热硅脂
- 避免在高温环境运行
常见问题
Q1: Jetson Nano 发热严重怎么办?
A: 这是正常现象,建议:
- 安装散热片或主动风扇
- 运行
sudo jetson_clocks会提升性能但增加发热,按需使用 - 避免长时间高负载运行
- 考虑使用更大的散热器或风扇
Q2: 内存不足(OOM)怎么处理?
A: 多种解决方案:
- 确保 Swap 空间已配置(参考第二步)
- 使用 FP16 精度(减少 50% 内存)
- 使用 TensorRT 优化模型
- 减小 batch size
- 关闭不必要的应用
- 考虑升级到 Jetson Xavier NX(8GB)
Q3: 如何提升推理速度?
A: 多种优化方法:
- 使用 TensorRT 转换模型(2-5 倍提升)
- 使用 FP16 或 INT8 精度
- 优化模型结构(剪枝、量化)
- 使用
sudo jetson_clocks最大化性能 - 批处理推理(batching)
Q4: 无法识别摄像头怎么办?
A: 检查以下几点:
- 摄像头排线是否插好(金色触点朝向连接器内部)
- 是否启用了摄像头:
sudo /opt/nvidia/jetson-io/jetson-io.py - 测试:
nvgstcapture-1.0 --automate --capture-auto - 检查设备:
ls /dev/video*
Q5: WiFi 无法连接?
A: Jetson Nano 没有内置 WiFi,需要:
- USB WiFi 适配器(推荐 RTL8812AU 芯片)
- 或 M.2 WiFi 模块(需要转接板)
- 安装驱动:
sudo apt install realtek-rtl88xx-dkms
下一步
完成以上步骤后,你的 Jetson Nano 已经具备了完整的机器人开发能力。接下来可以:
- 安装 DonkeyCar 软件:DonkeyCar 安装教程
- 安装 JetBot 软件:JetBot 安装教程
- 训练自动驾驶模型:模型训练指南
- 部署自定义应用:物体检测、SLAM 等
参考资源
总结
完成本文的步骤后,你已经成功搭建了 Jetson Nano 的完整开发环境。关键要点:
- ✅ 系统安装和基础配置
- ✅ CUDA 和 cuDNN 验证
- ✅ Python 环境管理
- ✅ 常用工具安装
- ✅ 远程访问配置
- ✅ 性能优化技巧
Jetson Nano 的强大之处在于它将桌面级的 GPU 算力带到了边缘设备,让 AI 机器人开发变得触手可及。虽然只有 4GB 内存,但通过合理的优化,足以运行大多数入门级的 AI 应用。
系列文章:
- 上一篇:JetBot 组装指南
- 下一篇:JetBot 系统配置
- 相关:DonkeyCar 安装