Collect, annotate, validate and upload robotic manipulation rollout data.
Project description
Oopsie Tools
Tools for collecting, annotating, inspecting, and converting robotic manipulation rollout data.
This repository currently provides around:
- HDF5 episode recording (
EpisodeRecorder) - Web annotation workflows
- In-the-loop annotation during policy rollout
Command line tool
Installing the package (uv sync, or pip install -e .) provides the oopsie-data command:
oopsie-data init # first-time setup (lab id + HF token)
oopsie-data show-config # where configs are read from, and what is in them
oopsie-data new-profile # starter robot profile to fill in
oopsie-data annotate --samples-dir ./samples # launch the web annotation UI
oopsie-data validate --path ./samples # check episodes against the schema
oopsie-data upload --path ./samples # validate, then upload to HuggingFace
oopsie-data submissions # what your lab has already uploaded
oopsie-data inspect episode.h5 # dump an episode's structure
oopsie-data restructure --source ./samples # split a folder that is too large to upload
oopsie-data upload --path ./samples --with-restructure # ...or do both in one step
init prompts for your lab id and HuggingFace token and saves them to a location the other
commands find automatically. It checks the token against the HuggingFace API, but only warns
if that fails and saves it regardless — so a wrong token surfaces at oopsie-data upload, not
at init. new-profile writes a robot-profile skeleton you fill in; it will not load until
you do. annotate asks for your annotator name if --annotator-name is not passed.
inspect is a plain structure dump, so it also works on a file validate rejects.
restructure is only needed if upload stops you: HuggingFace enforces a per-directory
file limit, and it writes a copy of your session in which every directory over that limit
has been split into numbered subfolders. Directories already under it are copied through
unchanged, and the original is never modified.
Credentials and robot profiles are looked up separately, so the tool also works when installed outside a checkout of this repository.
contributor_config.yaml belongs to you and is shared by every project:
$OOPSIE_CONFIG_DIR~/.config/oopsie-data(or$XDG_CONFIG_HOME/oopsie-data)- this repository's
configs/directory
Robot profiles belong to the robot code that uses them, and are never expected in your user config directory:
$OOPSIE_ROBOT_PROFILES_DIR./robot_profilesor./configs/robot_profiles, relative to where you run the command- this repository's
configs/robot_profiles
In practice a profile is usually loaded by explicit path — load_robot_profile("path/to.yaml").
Nothing is ever read out of the installed package: config that lives in site-packages is
read-only, invisible to you, and would silently shadow your own. Run oopsie-data new-profile to
write a starter profile into ./robot_profiles/ and fill it in from there. Pass
oopsie-data --config-dir <dir> <command> to override the credential location for a single run.
Run oopsie-data show-config to see which of these locations is actually being used, along with
the lab id and token in effect.
Upgrading: configs/contributor_config.yaml is no longer tracked
That file holds your HuggingFace token, and it used to be committed to the repository — which
meant .gitignore did not apply to it and your token showed up in git status. It is now
untracked and ignored.
If you have an existing clone with your credentials filled in, git pull may refuse:
error: Your local changes to the following files would be overwritten by merge:
configs/contributor_config.yaml
Your credentials are safe; git is just protecting the file. Move them out of the working tree:
oopsie-data init # writes to ~/.config/oopsie-data, verifies nothing is lost
rm configs/contributor_config.yaml
git pull
Nothing else changes — that location is still searched, so an existing setup keeps working. You will see a warning pointing here until you move it.
For detailed explanations on how to use our tooling and contribute to the project, please visit our website.
For an overview of the steps necessary to integrate the tooling into your workflow and to contribute data to the official Oopsie Data repositories, check out our quickstart guide. You can also use the information in AI_CONTEXT.md to guide a coding agent through the setup.
Repository structure
The main tooling for data gathering and annotation is located in oopsie-data-tools.
We provide example scripts for automatically collecting and annotating evaluation data while running policy inference in examples. Currently we support the evaluation scripts supported by openpi and Trossen robotics act_plus_plus repository. If you want to run a different evaluation script, check out the detailed instructions on integrating our tools into standard robot evaluation pipelines.
Issue/PR for support requests
We are very aware that changing eval code and recording data while doing experiments can be a big hassle and cause friction. We are therefore happy to help you integrate the recording tool into your setup. Please let us know what robot platform and policy you are evaluating and where to find a sample of your evaluation & inference code.
Contributing
You can use our toolset any time you like to record and annotate robot rollouts. To contribute your data to the official Oopsie Dataset, please follow the sign-up instructions!
If you run into any issues, please do not hesitate to contact the team via mail or raise an issue here.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file oopsie_data_tools-0.2.0.tar.gz.
File metadata
- Download URL: oopsie_data_tools-0.2.0.tar.gz
- Upload date:
- Size: 327.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.30 {"installer":{"name":"uv","version":"0.11.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7f59849fd9eb27413e6094bad0f40b1421f18b52a803429483b476b2fa625a69
|
|
| MD5 |
8569a498686b6972e3c0fac20e838879
|
|
| BLAKE2b-256 |
452c712c3fcec24bd57024822b2b9c8ef791fb54ae9e42b86bed44f2b3a16205
|
File details
Details for the file oopsie_data_tools-0.2.0-py3-none-any.whl.
File metadata
- Download URL: oopsie_data_tools-0.2.0-py3-none-any.whl
- Upload date:
- Size: 199.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.30 {"installer":{"name":"uv","version":"0.11.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f9023a603510fc5fb7d52435ef13e23df0d81759617f45c540d8e8dced27e405
|
|
| MD5 |
619423deea01608895d68caa257d19bb
|
|
| BLAKE2b-256 |
cadf037f0c5de188fa24afe70c41ad0769308d927f65b4322f11e030ad5046e8
|