Jetson Nano 机器人开发环境搭建指南

从零开始配置 NVIDIA Jetson Nano,搭建完整的机器人开发环境,包括系统安装、CUDA 配置、Python 环境及常用 AI 框架部署。

jetson-nano nvidia 机器人 开发环境 CUDA
Jetson Nano 机器人开发环境搭建指南

Jetson Nano 机器人开发环境搭建指南

NVIDIA Jetson Nano 是一款专为边缘 AI 和机器人应用设计的小型开发板。它搭载了 128 核 Maxwell GPU,拥有 472 GFLOPS 的算力,足以运行实时深度学习推理任务。对于想要构建自动驾驶小车(如 DonkeyCar、JetBot)的开发者来说,Jetson Nano 是一个性价比极高的选择。

本文将带你从零开始,完成 Jetson Nano 的系统安装和开发环境配置。我们不仅会介绍基础安装步骤,还会分享实际开发中的优化技巧和常见问题解决方案。

为什么选择 Jetson Nano?

性能优势

特性规格说明
GPU128-core Maxwell472 GFLOPS
CPUQuad-core ARM A571.43 GHz
内存4GB LPDDR464-bit
视频编码4Kp30H.264/H.265
功耗5-10W适合电池供电
价格~800元性价比极高

对比其他平台

平台GPU 性能价格适用场景
Raspberry Pi 4无 GPU400元轻量应用
Jetson Nano472 GFLOPS800元入门 AI
Jetson Xavier NX21 TFLOPS3000元专业开发
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 + 蓝牙)

软件准备

在开始之前,下载以下软件到你的电脑:

  1. JetPack SDK 镜像

    • 下载地址:NVIDIA 官网
    • 推荐版本:JetPack 4.6(基于 Ubuntu 18.04)
  2. 烧录工具

  3. SSH 客户端

    • Windows:PuTTY 或 Windows Terminal
    • Mac/Linux:内置 ssh 命令

第一步:烧录系统镜像

方法一:使用 Balena Etcher(推荐)

  1. 插入 microSD 卡到电脑
  2. 打开 Balena Etcher
  3. 选择镜像文件(sd-blob.img)
  4. 选择目标设备(microSD 卡)
  5. 点击 “Flash!” 开始烧录
  6. 等待完成(约 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 分钟,不要中断

首次启动配置

  1. 将 microSD 卡插入 Jetson Nano
  2. 连接显示器、键盘、鼠标、网线
  3. 接通电源,等待启动
  4. 按照向导完成初始设置:
    • 选择语言(建议 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 频率适用场景
MAXN10W921 MHz性能优先
5W5W640 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 tensorflowpip 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

  1. 在 VS Code 中安装 “Remote - SSH” 扩展
  2. 点击左下角绿色图标
  3. 选择 “Connect to Host…”
  4. 输入 username@jetson-ip
  5. 输入密码
  6. 连接成功后,可以像本地一样开发

文件传输

# 从电脑传输文件到 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 已经具备了完整的机器人开发能力。接下来可以:

  1. 安装 DonkeyCar 软件DonkeyCar 安装教程
  2. 安装 JetBot 软件JetBot 安装教程
  3. 训练自动驾驶模型模型训练指南
  4. 部署自定义应用:物体检测、SLAM 等

参考资源

总结

完成本文的步骤后,你已经成功搭建了 Jetson Nano 的完整开发环境。关键要点:

  • ✅ 系统安装和基础配置
  • ✅ CUDA 和 cuDNN 验证
  • ✅ Python 环境管理
  • ✅ 常用工具安装
  • ✅ 远程访问配置
  • ✅ 性能优化技巧

Jetson Nano 的强大之处在于它将桌面级的 GPU 算力带到了边缘设备,让 AI 机器人开发变得触手可及。虽然只有 4GB 内存,但通过合理的优化,足以运行大多数入门级的 AI 应用。


系列文章