2. Jetson平台基础

在机载计算与PX4集成的工程链路中,Jetson并不是一块“更快的树莓派”,而是一台带有GPU、统一内存架构和完整Linux生态的边缘AI计算机。理解它的硬件分层、软件栈和远程开发方式,是后续部署视觉推理、SLAM、MAVLink桥接与实时控制的前提。本节从硬件规格、JetPack SDK、Ubuntu环境配置和远程开发四个角度建立Jetson平台的整体认知。

一、Jetson系列硬件规格与选型逻辑

Jetson家族按算力、功耗和接口能力大致分为三条线:Nano/TX2系列面向入门与低功耗场景,Xavier NX/AGX Xavier面向中端机器人平台,Orin Nano/Orin NX/AGX Orin面向新一代高算力边缘AI。机载场景最关注的不是峰值TOPS,而是功耗、重量、接口、内存带宽和散热的平衡。

以常见的Orin NX 16GB为例,它提供100 TOPS(INT8)算力、16GB LPDDR5统一内存、PCIe Gen4、千兆网口和CSI摄像头接口,典型功耗10–25W。统一内存意味着CPU与GPU共享同一块物理内存,CUDA零拷贝和TensorRT推理可以避免主机与设备之间的显式拷贝,这对延迟敏感的视觉闭环非常关键。

型号AI算力(INT8)内存典型功耗适用场景
Jetson Nano0.5 TOPS4GB LPDDR45–10W教学、轻量视觉
Xavier NX21 TOPS8/16GB10–20W中型无人机、机器人
Orin Nano40 TOPS8GB7–15W入门级边缘AI
Orin NX100 TOPS8/16GB10–25W机载视觉、SLAM
AGX Orin275 TOPS32/64GB15–60W高算力无人平台

选型时先确定推理模型规模与帧率,再反推算力和内存,最后核对功耗与散热。若模型需要TensorRT INT8且帧率30FPS以上,Orin NX通常是机载平台的性价比拐点。

二、JetPack SDK:从驱动到推理的完整栈

JetPack是NVIDIA为Jetson提供的官方SDK,它把L4T(Linux for Tegra)、CUDA、cuDNN、TensorRT、VisionWorks、DeepStream和多媒体API打包在一起。JetPack版本与L4T版本严格对应,例如JetPack 5.x对应L4T 35.x(Ubuntu 20.04),JetPack 6.x对应L4T 36.x(Ubuntu 22.04)。

JetPack = L4T(Ubuntu) + CUDA + cuDNN + TensorRT + 多媒体/视觉库 + 示例工程

安装JetPack有两种主流方式:一是使用NVIDIA SDK Manager在Ubuntu主机上刷写,适合首次部署和完整环境;二是使用预制的SD卡镜像,适合快速验证。刷机后必须确认以下组件版本一致:

# 查看L4T版本
cat /etc/nv_tegra_release

# 查看CUDA与TensorRT
nvcc --version
dpkg -l | grep tensorrt

# 查看JetPack版本
apt-cache show nvidia-jetpack | grep Version

在机载集成中,JetPack版本决定了可用的CUDA算子和TensorRT版本,而TensorRT版本又直接影响ONNX模型转换的成功率。因此,先锁定JetPack版本,再选择模型和推理框架,是避免后期返工的关键顺序。

三、Ubuntu环境配置与远程开发方法

Jetson默认运行Ubuntu,但机载设备通常没有显示器和键鼠,因此远程开发是常态。推荐采用“SSH + VSCode Remote + 串口/网络双通道”的组合:SSH用于日常开发,VSCode Remote提供图形化编辑与调试,串口或独立网口用于PX4飞控通信。

基础环境配置建议按以下顺序执行:

  1. 设置固定IP或mDNS主机名,保证机载网络稳定;
  2. 配置SSH密钥登录,禁用密码登录;
  3. 安装VSCode Remote-SSH插件,在Jetson上运行Python/C++调试;
  4. 配置NTP或chrony时间同步,避免MAVLink时间戳错乱;
  5. 设置CPU/GPU功耗模式,如nvpmodel和jetson_clocks。
# 查看当前功耗模式
sudo nvpmodel -q

# 设置为最大性能模式(Orin NX为0)
sudo nvpmodel -m 0
sudo jetson_clocks

# 查看温度与频率
tegrastats
远程开发时,建议把代码放在Jetson本地或通过NFS挂载,避免在Wi-Fi链路上频繁同步大文件。VSCode Remote的端口转发可以同时暴露Jupyter、ROS桥接和MAVLink UDP端口。

四、典型场景与常见误区

一个典型的机载视觉场景是:Jetson Orin NX通过CSI摄像头采集图像,TensorRT运行YOLO检测,结果通过MAVLink发送给PX4,PX4执行位置控制。此时Jetson负责感知与决策,PX4负责实时控制,两者通过UART或UDP通信。若Jetson端推理延迟超过50ms,整个闭环就会出现明显滞后,因此必须用tegrastats和TensorRT的profiler持续监控。

常见误区包括:

  • 只看TOPS不看内存带宽:大模型推理常受限于内存带宽而非算力;
  • 忽略JetPack与L4T版本对应关系:导致CUDA或TensorRT无法安装;
  • 在机载端使用桌面版Ubuntu源:可能破坏L4T驱动;
  • 不做功耗与散热验证:高负载下Jetson降频,推理帧率骤降;
  • 远程开发时直接暴露SSH到公网:存在安全风险,应使用VPN或跳板机。
刷机或升级JetPack前,务必确认飞控通信、摄像头驱动和自定义内核模块的兼容性。机载平台一旦刷机失败,现场恢复成本很高,建议保留可启动的备用SD卡或eMMC镜像。
Jetson平台软硬件栈与远程开发连接关系 硬件层 Hardware Orin NX / AGX GPU + CPU + 统一内存 CSI / USB 摄像头 图像输入 UART / UDP 与PX4通信 电源 / 散热 功耗与温度约束 软件层 JetPack SDK L4T / Ubuntu 20.04 / 22.04 CUDA + cuDNN GPU 加速基础库 TensorRT 推理优化与部署 DeepStream / VPI 视频与视觉加速 应用层 Application 视觉推理 YOLO / 检测 SLAM / 定位 VINS / ORB-SLAM MAVLink 桥接 与PX4通信 远程开发 Remote Dev SSH + VSCode Remote Jupyter / ROS 端口转发 PX4 飞控:实时姿态/位置控制 ← MAVLink ← Jetson 感知与决策结果

总结来看,Jetson平台的基础可以归纳为“硬件选型—JetPack版本锁定—Ubuntu环境配置—远程开发链路”四步。只有把这条链路打通,后续的TensorRT部署、ROS2节点和PX4集成才有稳定的运行基础。