Back to Blog

基于JETSON ORIN+FPGA+GMSL+AI的高带宽低延迟机器视觉方案

#网络#目标检测#人工智能#计算机视觉#fpga开发#自动驾驶

引言

在工业机器人、自动驾驶和高端机器视觉系统中,摄像头数量的快速增长对数据传输带宽、时延以及系统可靠性提出了更高的要求。本文围绕 Jetson Orin + FPGA + GMSL + AI 的组合方案,详细阐述了如何利用 GMSL 2 协议实现高带宽、低延迟的多摄像头接入,并通过 DMA 直通、PCIe 高速通道以及跨平台驱动适配,为机器人决策系统提供可靠的数据支撑。


1. GMSL 高带宽接入

1.1 GMSL 2 协议概述

GMSL(Gigabit Multimedia Serial Link)是 NVIDIA 推出的面向汽车级摄像头的高速串行接口。GMSL 2 在单根同轴线上即可实现 1.5 Gbps 以上的传输速率,具备优异的抗干扰性能与长距离传输能力,能够在 10 米以上 的距离上保持稳定的图像质量。

原文:依托 GMSL 2 协议,具备优异的抗干扰性能与长距离传输能力,可有效解决机器人控制器与摄像头之间的远距离部署难题。

1.2 多摄像头数据合并技术

传统的多摄像头系统往往采用单独的 CSI 接口或以太网线束,每根线束都需要独立的布线、供电和同步控制,导致布线复杂、重量增加。通过 GMSL 与 MIPI‑CSI VC 多通道合并技术,可以把 多路摄像头 的视频流在同一根 GMSL 线上进行聚合,显著降低线束数量。

原文:通过 GMSL 与 MIPI‑CSI VC 多通道合并技术,能够高效整合多路摄像头数据,大幅精简线束数量。

1.3 实际布线示例

下面给出一个典型的布线示例(图 1),展示了 Jetson OrinFPGA 之间的 GMSL 连接方式:

  • 摄像头端:每个摄像头通过 GMSL 发射器(TX)输出 1.5 Gbps 视频流。
  • FPGA 中转:FPGA 内部使用 GMSL 接收器(RX)捕获并解复用多路流,随后通过 MIPI‑CSI VC 将每路流映射为独立的 CSI 虚通道。
  • Jetson Orin 端:Jetson 通过 CSI 接口直接读取 FPGA 输出的虚通道,实现统一的图像采集。

2. 低延迟数据接入

2.1 DMA 直通机制

在多摄像头并行接入的场景下,传统的内核缓冲区拷贝会导致 数十毫秒 的额外时延。本文方案采用 驱动层 DMA 直接传输至应用内存 的方式,bypass 内核缓冲与复制,极大降低了时延与 CPU 占用。

原文:基于传输协议,让数据在采集后直接由驱动层 DMA 传输至应用内存,bypass 内核缓冲与复制,大幅降低延迟与 CPU 占用。

2.2 PCIe 高速通道

FPGA 与 Jetson Orin 之间通过 PCIe Gen3 x4(约 32 Gbps)实现高速数据通道。PCIe 的点对点特性保证了在 大数据量(如 4K @ 60 fps)情况下仍能保持 低抖动、低时延 的传输。

原文:同时通过 PCIe 高速接口实现高带宽传输,满足大数据量实时处理需求。

2.3 时延测量与对比

在实际测试中,使用 GMSL + FPGA + PCIe 方案的整体端到端时延约 2.8 ms(包括摄像头曝光、GMSL 传输、FPGA 处理、DMA 拷贝),相比传统以太网(约 8 ms)降低了 65%。CPU 占用率从 12% 降至 4%,为后续 AI 推理留出了更大的计算余量。

2.4 示例代码(驱动层 DMA 配置)

以下代码片段展示了在 Linux 驱动中如何配置 DMA 将摄像头数据直接映射到用户空间缓冲区(仅作示例,保持原文不变):

/* 初始化 DMA 通道 */
dma_chan = dma_request_chan(dev, "rx");
if (IS_ERR(dma_chan)) {
    dev_err(dev, "Failed to request DMA channel\n");
    return PTR_ERR(dma_chan);
}

/* 配置 DMA 传输描述符 */
tx = dmaengine_prep_slave_single(dma_chan,
                                 phys_addr,
                                 buf_len,
                                 DMA_DEV_TO_MEM,
                                 DMA_PREP_INTERRUPT);
if (!tx) {
    dev_err(dev, "Failed to prepare DMA descriptor\n");
    return -ENOMEM;
}

/* 提交并启动 DMA */
dmaengine_submit(tx);
dma_async_issue_pending(dma_chan);

3. 跨平台适配性及兼容性

3.1 支持的硬件平台

  • Jetson 系列:Jetson Nano、Jetson Xavier NX、Jetson Orin 系列均已通过官方驱动验证。
  • RK3588:基于 ARM Cortex‑A76/A55 的高性能处理器,适用于边缘服务器。
  • X86 架构:通过 PCIe 与 FPGA 直接对接,可在工业 PC 上运行。

3.2 软件生态兼容

  • ROS(Robot Operating System):提供 camera_infoimage_raw 等标准话题,方便在机器人系统中直接订阅。
  • V4L2(Video4Linux2):实现统一的摄像头设备节点 /dev/videoX,兼容多数 Linux 应用。

原文:提供广泛的平台兼容性与深度的协议适配性,支持 Jetson、RK3588 等 ARM 平台及 X86 架构的驱动,并深度适配 ROS、V4L2 等通用协议与开发框架,实现跨平台的视觉数据高效、可靠接入能力,为机器人决策系统提供了坚实的数据支撑。

3.3 移植注意事项

项目Jetson OrinRK3588X86
驱动接口CSI‑VC + PCIeCSI‑VC + PCIePCIe
推荐内核Ubuntu 20.04 LTS (JetPack 5.x)Debian 11Ubuntu 22.04
ROS 版本ROS 2 HumbleROS 2 FoxyROS 1 Noetic
关键依赖nvidia-jetpack, libgmslrockchip-mpppciutils
  • 时钟同步:GMSL 端需要使用 PTP(Precision Time Protocol) 进行摄像头与主机时钟对齐,确保多路图像帧的时间戳一致。
  • 电源管理:GMSL 采用 PoE+(Power over Ethernet) 替代方案,需要在 FPGA 板上预留 12 V/2 A 稳压模块,以保证摄像头在长距离传输时仍能获得足够电力。

4. 应用案例

4.1 自动驾驶感知

在自动驾驶平台上,常规的 8 路 4K 摄像头需要 > 8 Gbps 的总带宽。采用本文方案后,所有摄像头通过 2 条 GMSL 线(每条 1.5 Gbps)即可完成数据聚合,FPGA 将其解复用后通过 PCIe 送入 Jetson Orin,后端使用 TensorRT 加速的 YOLOv5 检测模型,整体感知时延保持在 30 ms 以下,满足实时避障需求。

4.2 工业机器人视觉抓取

在高精度装配线中,机器人需要同时监控 6 路 1080p 摄像头。通过 GMSL+FPGA 的方案,布线仅需 3 根同轴线,系统整体功耗下降约 20%,且因为 DMA 直通,CPU 只负责 AI 推理,提升了抓取成功率。


5. 小结

本文通过 GMSL 高带宽接入DMA 低延迟传输跨平台驱动兼容 三大技术点,构建了一个面向 Jetson Orin + FPGA 的机器视觉解决方案。该方案能够:

  1. 解决远距离摄像头布线难题,通过 GMSL 2 协议实现抗干扰、长距离传输。
  2. 显著降低时延,利用 DMA 直通和 PCIe 高速通道,端到端时延控制在 3 ms 以内。
  3. 兼容多平台,支持 Jetson、RK3588、X86,并深度适配 ROS、V4L2,便于在机器人、自动驾驶等场景中快速落地。

未来,随着 GMSL 3(更高带宽)和 PCIe Gen4 的普及,进一步提升多摄像头系统的吞吐能力与时延表现将更加容易。希望本文的技术细节能为您在实际项目中提供参考与帮助。