Orvex

Data pipeline for autonomous rover dataset collection, processing and perception

Status
Research
Version
0.1.0
Platform
Desktop app
License
Not specified
01 · Problem

Turning raw consumer-camera and phone recordings into calibrated, synchronized, labeled datasets for rover perception involves many separate tools; Orvex brings those steps into one pipeline with shared logic.

02 · Architecture

How it is put together.

Orvex covers the lifecycle of multi-sensor rover data, from raw GoPro, Insta360 and Android Sensor Logger recordings through telemetry extraction, calibration, synchronization, dataset assembly, auto-labeling, training, 3D reconstruction, SLAM validation and edge export. It has two front ends, a PyQt6 desktop app and a FastAPI + React web app, both built on the same core/ package of business logic. The README states it is built for Indian road conditions.

Ingest and auditcore/Sync and calibrationcore/calibration.pyDataset buildercore/dataset_builder.pyPerception and trainingcore/Desktop appdesktop/Web appweb/shared core/ callsshared core/ callsshared core/ callsshared core/ callsIngest and auditcore/Sync and calibrationcore/calibration.pyDataset buildercore/dataset_builder.pyPerception and trainingcore/Desktop appdesktop/Web appweb/shared core/ callsshared core/ callsshared core/ callsshared core/ calls
FIG. 01Modules and data flows, from the repository layout and documentation.
  1. 1

    Ingest and audit

    Session manager, file auditor, GoPro / Insta360 / Sensor Logger extractors

    core/
  2. 2

    Sync and calibration

    Multi-device synchronizer and 4-step calibration pipeline

    core/calibration.py
  3. 3

    Dataset builder

    EuRoC, ROS bag and HDF5 assembly with manifest

    core/dataset_builder.py
  4. 4

    Perception and training

    Auto-label, segmentation, depth, lanes, tracking, occupancy, trainer, edge exporter

    core/
  5. 5

    Desktop app

    PyQt6 main window with stacked panels and QThread workers

    desktop/
  6. 6

    Web app

    FastAPI backend with route modules and WebSocket task progress; React + Vite frontend

    web/
03 · Capabilities

Specification.

Input devices
GoPro Hero 11 (GPMF, 200 Hz IMU, GPS5), Insta360 X4 (.insv), Android Sensor Logger (CSV/JSON)
Synchronization
GPS time anchor, IMU cross-correlation, or manual offset
Calibration
4-step: IMU Allan deviation, camera intrinsics (OpenCV), camera-IMU extrinsics (OpenImuCameraCalibrator), validation
Dataset formats
EuRoC, ROS 2 bag (rosbag2 sqlite3), HDF5; nanosecond integer timestamps
Perception models
YOLOv8 auto-label (13 classes), SegFormer segmentation, Depth-Anything-v2 depth, classical/UFLD lanes, ByteTrack tracking, BEV occupancy grid
Mapping and validation
COLMAP SfM reconstruction; ORBSLAM3 runs scored with ATE/RPE via evo
Training and MLOps
YOLOv8 training subprocess, Albumentations augmentation, MLflow tracking, Git + DVC dataset versioning
Edge export
PyTorch to ONNX to TensorRT for NVIDIA Jetson
Runs on
Primary entry point is a PyQt6 desktop app (roverdatakit = desktop.main:main in pyproject.toml); the optional web app needs a FastAPI backend, and AI features recommend a CUDA GPU
Stack
  • Python 3.11+
  • PyQt6
  • PyQtGraph
  • FastAPI
  • React
  • Vite
  • OpenCV
  • NumPy
  • SciPy
  • pandas
  • Pydantic v2
  • py-gpmf-parser
  • Ultralytics
  • transformers
  • PyTorch
  • Albumentations
  • evo
  • FFmpeg
  • exiftool