如何将外部 GPS 连接到 ZED 相机,以便为视频提供 GPS 标签?

Last updated: August 13, 2026

ZED 相机没有内置 GPS 接收器。不过,ZED SDK 原生支持通过全局定位模块将相机数据与外部 GNSS 接收器进行融合,该模块自 ZED SDK v4.0 起提供。这是推荐的解决方案;不再需要手动同步和自定义卡尔曼滤波。

全局定位模块

ZED SDK 的全局定位模块通过结合视觉里程计和 GNSS 定位,实现相机在全局坐标系中的实时追踪和定位。定位通过融合三种数据源实现:双目视觉、IMU 和 GNSS。该模块也可在 GNSS 不可用的环境中运行;当卫星数据不可用或不可靠时,视觉惯性里程计会接管工作,而 GNSS 则会校正视觉里程计随时间累积的漂移。

工作流程非常简单:

  1. 在 ZED 相机上启用位置追踪,并使用 startPublishing() 开始向 Fusion 模块发布数据。
  2. 初始化一个 sl::Fusion 对象,订阅相机,并通过 enable_GNSS_fusion = true 启用 Fusion 位置追踪。
  3. 使用 fusion.ingestGNSSData() 将 GNSS 接收器数据(纬度、经度、高度、协方差、时间戳)传入 Fusion 模块。
  4. 使用 fusion.getGeoPose() 获取融合后的全局位置,或使用 fusion.getPosition() 获取融合后的局部位姿。

由于每个 ZED 帧都带有其纪元时间戳,SDK 会在相机数据和 GNSS 数据之间执行基于时间戳的精确同步,因此您可以为每个视频帧标记其对应的地理位置。

完整文档,包括 C++ 和 Python 代码演示:

代码示例

GitHub 上提供了完整的全球定位示例:一个将 ZED 相机与外部 GNSS 传感器融合并在真实世界地图上显示地理位置的实时示例,一个将同步数据保存到 SVO 文件和 JSON 文件的录制示例,以及一个离线重放录制数据的回放示例:
https://github.com/stereolabs/zed-sdk/tree/master/global%20localization GitHub

ROS 和 ROS 2

如果您使用 ROS 2,zed-ros2-wrapper 原生支持 GNSS 融合;您只需从 GNSS 接收器提供一个 NavSatFix 话题:
https://www.stereolabs.com/docs/ros2/geo-tracking/