Skip to main content

Sweet wrappers for extending and remixing LeRobot Datasets

Project description

🍬 RoboCandyWrapper

Sweet wrappers for extending and remixing LeRobot Datasets.


🍬 Why do I need this?

You have robot data. Lots of it. But it's messy:

  • Some datasets are from the "old days" (v2.1 dataset).
  • Some are brand new (v3.0 dataset).
  • You want to mix various data sources as needed, without permanently merging them.

Traditionally, you'd have to write complex scripts to convert everything to a single format. RoboCandyWrapper handles that compatibility layer for you. It wraps your datasets in a sweet, consistent interface so you can focus on training, not data plumbing.

Additionally, you might want to extend your datasets with additional labels and columns without breaking backwards compatibility of data or code with LeRobot. RoboCandyWrapper provides an extendible Adapter system to add new data to existing datasets, load any number of adapters during training, and mixing data between adapters.

RoboCandyWrapper also includes a Sampler system to change the ratio of sampling between multiple data sources, so you can increase or decrease the weight of specific datasets in your data mix as needed.

RoboCandyWrapper is still experimental so do note that the library API could change in the future although we'll do our best to avoid unnecessary changes!

🍬 Quick Start (5 Minutes)

Installation

# Include LeRobot as a dependency in installation
pip install robocandywrapper

# OR...
# Use your own version of LeRobot - may cause issues!
pip install --no-dependencies robocandywrapper

# OR...
# Use your own version of LeRobot and install robocandywrapper as a local editable dependency so you change LeRobot imports as needed
# This might be required if you use a LeRobot fork or depend on an out of date version
git clone https://github.com/villekuosmanen/RoboCandyWrapper.git
cd RoboCandyWrapper
pip install --no-dependencies -e .

Basic usage

Load a vintage v2.1 dataset and a modern v3.0 dataset as if they were the same thing.

from robocandywrapper import make_dataset_without_config

# Your playlist: one old, one new
repo_ids = [
    "lerobot/svla_so100_pickplace",  # v2.1 dataset
    "lerobot/svla_so100_stacking",   # v3.0 dataset
]

# The factory handles the compatibility logic automatically
dataset = make_dataset_without_config(repo_ids)

print(f"🎉 Successfully loaded {len(dataset)} episodes from mixed sources!")

🍬 What more can I do with it?

🎧 The "Mix Tape" (Mixing Datasets)

Learn how to combine multiple datasets into one, handle different robot configurations, and use sampling weights to balance your data mix.

🧂 The "Flavor Enhancer" (Transforming Data)

Learn how to use Plugins to add new labels or columns to your dataset, reshape tensors, or modify existing data on-the-fly without breaking backwards compatability.

Other cool stuff from the authors

  1. Physical AI Interpretability offers open-source interpretability tools for AI robotics.
  2. RewACT is an open-source reward model / value function based on the ACT transformer architecture.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

robocandywrapper-0.2.1.tar.gz (44.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

robocandywrapper-0.2.1-py3-none-any.whl (47.2 kB view details)

Uploaded Python 3

File details

Details for the file robocandywrapper-0.2.1.tar.gz.

File metadata

  • Download URL: robocandywrapper-0.2.1.tar.gz
  • Upload date:
  • Size: 44.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.10

File hashes

Hashes for robocandywrapper-0.2.1.tar.gz
Algorithm Hash digest
SHA256 da73899a77c6e723421d81d667542c8656285d25392e532f9c6a3737a25d9890
MD5 37a657ec7f6ec66be3fc9123cdfff359
BLAKE2b-256 973eed3c4b66cdbcd3f774d67ece6ac5c1373b8ae7f188ceaa6d79cc4ea1c018

See more details on using hashes here.

File details

Details for the file robocandywrapper-0.2.1-py3-none-any.whl.

File metadata

File hashes

Hashes for robocandywrapper-0.2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7f969dbd3a0311986848d09dca96c7faf5eae43b8bd7c1933ddac0306ea15acd
MD5 4ff6af2ce291bde93baf92d7b7a2b06e
BLAKE2b-256 818766009c53ee46a28208e641d9019d60edfa81ca8278ce0fea06bea9b68f56

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page