Skip to content
@apairo-robotics

apairo-robotics

apairo

One numpy-in / numpy-out API for robotics sensor datasets.

Website Docs PyPI Python NumPy License


What is apairo?

apairo is a unified loader for robotics sensor datasets — lidar, cameras, poses, IMU, labels — with one chainable API across synchronous (KITTI-style) and asynchronous (multi-rate) layouts. No bespoke glob + np.load loaders, no hand-written timestamp matching: everything is a dataset you filter, select, cache, synchronize, concat and feed straight to a PyTorch DataLoader.

  • numpy in, numpy outds[i].data["lidar"] -> np.ndarray; convert to torch/tf at the edge, never inside the dataset.
  • everything is a datasetfilter / select / cache / join / concat / synchronize / split / transform all return chainable, lazy views.
  • .apairo is the source of truth on disk — channels (raw + derived) are declared in a sidecar; expensive preprocess output is persisted and reloaded transparently.
import apairo

ds = (apairo.RawDataset("/data/mission", keys=["lidar", "image", "gps"])
        .synchronize(reference="lidar", method="nearest", tolerance=0.05)
        .filter(lambda s: s.data["lidar"].shape[0] > 1000))

ds[0].data          # {"lidar": (N, 4), "image": (H, W, 3), "gps": (3,)}
# an apairo dataset *is* a torch Dataset -> DataLoader(ds, collate_fn=...), no adapter

Point RawDataset at a directory and it loads — no code. When a channel's clock lives in its filenames, declare it right there and apairo reads it in memory, never writing into your data. See Bring your own dataset.


The ecosystem

Mechanisms live in the core; collections live in satellites. The core never gains a dependency beyond numpy + PyYAML.

Repo What it does
apairo The core — load / synchronize / filter / cache / preprocess robotics datasets, one API for sync + async layouts.
apairo_transform Access-time numpy transforms & augmentations (range/box filters, voxelization, rotations, interpolators).
apairo_preprocess Heavy offline preprocessors, persisted as derived .apairo channels and reloaded transparently.
apairo_extractor Turn ROS bags into the apairo / KITTI on-disk layout, with optional preprocessing.
apairo_rr Rerun-based lidar / multi-sensor visualization of apairo datasets.
apairo_huggingface Label apairo datasets and export them to the HuggingFace LeRobotDataset format.

Getting started

pip install apairo          # Python >= 3.11
pip install apairo[vision]  # optional: image loading (Pillow)

Pinned Loading

  1. apairo apairo Public

    Persistent preprocessing, dataset composition and caching for large robotics datasets. — synchronous (SemanticKITTI, GOOSE, Rellis-3D) and asynchronous (TartanDrive, KITTI) layouts with built-in pr…

    Python 1

  2. apairo_preprocess apairo_preprocess Public

    Offline preprocessors for Apairo — ground filtering, odometry, segmentation & derived channels, computed once and persisted

    Python

  3. apairo_rr apairo_rr Public

    Visualize your robotic data with Apairo and Rerun

    Python

  4. apairo_extractor apairo_extractor Public

    Rosbag extractor working with apairo (apairo config, preprocess, ... ) with a CLI interface

    Python

  5. apairo_transform apairo_transform Public

    At-access transforms & augmentations for apairo datasets — numpy-in/numpy-out, applied lazily at read time

    Python

  6. apairo_huggingface apairo_huggingface Public

    Robotics datasets prepared with apairo, published on the Hugging Face Hub — doubling as end-to-end usage examples

    Python

Repositories

Showing 10 of 10 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…