DataCollectionRig

Six-camera, GNSS- and IMU-instrumented driving data collection rig on Jetson AGX Orin

Status
Research
Version
No tagged release
Platform
GPU workstation
License
Not specified
01 · Problem

A data collection session that is not trustworthy should say so rather than looking fine; the design goal is that every fault is attributable to a sensor, a timestamp and a cause. For example, frame sync silently reverts on reboot with no visible error, so every session is gated on a sync measurement.

02 · Architecture

How it is put together.

Six GMSL2 cameras on an NVIDIA Jetson AGX Orin are hardware-frame-synchronised to a single trigger and recorded as annotation-ready H.265 with per-frame timestamps on one shared monotonic clock, alongside a 100 Hz IMU stream and a GNSS receiver. The repository holds setup scripts, a capture engine with CLI and GUI, time-sync and calibration tooling, and measured verification. The README states that every number in it came from a command whose output is reproduced, and it lists open items (unverified camera positions, PPS not delivering edges, no frame sync at cold boot).

Setupsetup/Sync and drop toolstools/Time synctimesync/Calibrationcalibration/Capture engineStandalone capture appdatacollect/ISP correctionisp-correction/Setupsetup/Sync and drop toolstools/Time synctimesync/Calibrationcalibration/Capture engineStandalone capture appdatacollect/ISP correctionisp-correction/
FIG. 01Modules and data flows, from the repository layout and documentation.
  1. 1

    Setup

    Camera driver install repair scripts, boot-time frame-sync ordering, udev rules for stable camera symlinks, systemd units

    setup/
  2. 2

    Sync and drop tools

    Enable frame sync, measure cross-camera spread and dropped frames, soak tests, live viewers

    tools/
  3. 3

    Time sync

    Timestamped capture and cross-camera frame pairing

    timesync/
  4. 4

    Calibration

    ChArUco intrinsics/extrinsics

    calibration/
  5. 5

    Capture engine

    Capture engine, CLI and GUI with sensors, metrics, verify/doctor reports and MCAP export

  6. 6

    Standalone capture app

    Standalone GTK capture application

    datacollect/
  7. 7

    ISP correction

    ISP boot-data correction for the narrow camera pair

    isp-correction/
03 · Capabilities

Specification.

Cameras
6 × GMSL2 cameras (4 wide ~128.7°, 2 narrow ~54°), 1920×1536 UYVY @ 30 fps
Frame sync (measured)
Median inter-camera spread 58 µs with hardware sync vs 20 380 µs free-running; p95 359 µs; 0 dropped frames over 2 min
Inertial
IMU at 100 Hz (measured 99.6 Hz, 0 counter gaps)
GNSS
Multi-band, PPS-capable receiver; 3D fix verified (HDOP 0.61); PPS into host not yet working
Recording
Annotation-ready H.265 with per-frame timestamps on one shared monotonic clock; MCAP export
Tooling
enable_sync, measure_sync, measure_drops, soak tests, cross-camera frame pairing, ChArUco calibration
Platform
JetPack 7.2 / L4T R39.2.0, Ubuntu 24.04 (aarch64), Python 3.12, GStreamer 1.24.2
Runs on
Runs on an NVIDIA Jetson AGX Orin with GMSL2 cameras, NVENC and TensorRT; a simulate mode exists but the project is a hardware rig
Stack
  • Python
  • GStreamer
  • V4L2
  • PyQt6
  • pydantic
  • PyYAML
  • mcap
  • psutil
  • cuda-python
  • NVIDIA Jetson AGX Orin
  • Xsens MTi-3
  • u-blox F9P
04 · Changelog

Log.

  1. DataCollectionRig published
    Six-camera GMSL2 data-collection rig on the Jetson AGX Orin.