3. Jetson开发环境搭建
在无人机视觉AI部署工程中,Jetson 是机载算力平台的核心。无论是 Jetson Orin Nano、Orin NX 还是 Xavier NX,其软件栈都围绕 NVIDIA JetPack SDK 构建。JetPack 并不是一个单独的安装包,而是由 L4T(Linux for Tegra)系统镜像、Ubuntu 根文件系统、CUDA、cuDNN、TensorRT、OpenCV、VPI 等组件组成的完整开发包。理解 JetPack 的层次结构,是后续部署 YOLO、RT-DETR 等视觉模型的前提。
一、JetPack SDK 的组成与安装路径
JetPack 的版本与 L4T、Ubuntu、CUDA 存在严格对应关系。例如 JetPack 5.x 对应 L4T 35.x 与 Ubuntu 20.04,JetPack 6.x 对应 L4T 36.x 与 Ubuntu 22.04。安装方式主要有三种:SDK Manager 图形化刷机、SD 卡镜像烧录、以及 apt 在线升级。对于无人机项目,推荐使用 SDK Manager 完成首次刷机,因为它能一次性写入系统并安装 CUDA、cuDNN、TensorRT 等组件。
# 在 Ubuntu 主机上安装 SDK Manager
sudo apt install ./sdkmanager_2.x.x_amd64.deb
sdkmanager
# 选择目标设备:Jetson Orin Nano 8GB
# 选择 JetPack 6.0,勾选 Jetson Linux、CUDA、cuDNN、TensorRT、OpenCV
# 进入 Recovery 模式后开始刷机
刷机完成后,Jetson 首次启动会进入 Ubuntu 初始化向导。此时需要设置用户名、密码、时区与网络。对于无人机场景,建议固定用户名(如 uav)并开启 SSH,方便后续远程登录。
二、Ubuntu 系统配置要点
Jetson 上的 Ubuntu 与普通 x86 Ubuntu 存在差异,配置时需注意以下几点:
- 电源模式:使用
sudo nvpmodel -m 0切换为最大性能模式,并用sudo jetson_clocks锁定最高频率,避免无人机飞行中因降频导致推理抖动。 - 交换空间:Jetson 内存有限,建议将 swap 调整为 8GB 以上,防止大模型加载时 OOM。
- 风扇控制:通过
jetson_clocks或/sys/devices/pwm-fan设置风扇曲线,保证机载散热。 - 网络与 SSH:配置静态 IP 或 DHCP 保留,开启
sshd,便于地面站远程登录。 - 时间同步:安装
chrony或systemd-timesyncd,确保多传感器时间戳一致。
# 常用系统配置命令
sudo nvpmodel -m 0
sudo jetson_clocks
sudo fallocate -l 8G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
# 开启 SSH
sudo systemctl enable ssh
sudo systemctl start ssh
三、CUDA 与 cuDNN 环境验证
刷机完成后,必须验证 CUDA 与 cuDNN 是否可用。Jetson 的 CUDA 通常安装在 /usr/local/cuda,cuDNN 头文件与库位于 /usr/include 与 /usr/lib/aarch64-linux-gnu。验证步骤如下:
# 1. 检查 CUDA 版本
nvcc --version
# 输出应类似:Cuda compilation tools, release 12.2, V12.2.140
# 2. 检查 cuDNN 版本
cat /usr/include/cudnn_version.h | grep CUDNN_MAJOR -A 2
# 或
dpkg -l | grep cudnn
# 3. 运行 deviceQuery
cd /usr/local/cuda/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery
# 看到 Result = PASS 表示 CUDA 可用
# 4. 运行 bandwidthTest
cd /usr/local/cuda/samples/1_Utilities/bandwidthTest
sudo make
./bandwidthTest
nvcc 找不到,请将 /usr/local/cuda/bin 加入 PATH,并将 /usr/local/cuda/lib64 加入 LD_LIBRARY_PATH。可在 ~/.bashrc 中追加:export PATH=/usr/local/cuda/bin:$PATHexport LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH四、远程开发与调试方法
无人机机载 Jetson 通常不接显示器,远程开发是常态。推荐三种方式组合使用:
| 方式 | 工具 | 适用场景 | 关键命令/配置 |
|---|---|---|---|
| SSH 终端 | OpenSSH | 命令行调试、运行脚本 | ssh uav@192.168.1.100 |
| VS Code Remote | Remote-SSH 插件 | 代码编辑、断点调试 | 配置 ~/.ssh/config |
| JupyterLab | jupyterlab | 模型推理可视化、图像调试 | jupyter lab --ip=0.0.0.0 --port=8888 |
| 文件同步 | rsync / scp | 模型权重、数据集传输 | rsync -avz ./model uav@jetson:/home/uav/ |
在 VS Code 中,安装 Remote-SSH 后,通过 Ctrl+Shift+P 输入 Remote-SSH: Connect to Host,填写 uav@192.168.1.100 即可在本地编辑 Jetson 上的代码。调试 Python 时,可直接使用 debugpy 附加到远程进程,观察 TensorRT 推理耗时与显存占用。
五、常见误区与复盘
在实际项目中,环境搭建阶段最容易出现以下问题:
- 版本不匹配:JetPack 6.0 自带 CUDA 12.2,若手动安装 PyTorch 时选择了 CUDA 11.8 的 wheel,会导致
libcudart.so找不到。应使用 NVIDIA 官方为 Jetson 编译的 PyTorch 轮子。 - 忽略电源模式:默认模式为 15W,推理帧率可能只有最大性能模式的一半。部署前务必执行
nvpmodel -m 0与jetson_clocks。 - cuDNN 验证不充分:仅用
dpkg -l查看版本不够,应实际运行一个卷积网络前向推理,确认 cuDNN 算子可调用。 - 远程连接不稳定:Wi-Fi 信号弱时,SSH 会频繁断连。建议使用有线网口或 5GHz Wi-Fi,并配置
ServerAliveInterval。
完成本章环境搭建后,Jetson 已具备 CUDA 加速、cuDNN 推理与远程开发能力,为后续 TensorRT 模型转换、YOLO 部署与无人机视觉流水线打下基础。