Repository navigation
Make grabette-postprocess here the source of truth: license, tests, CI, docs - #26
Merged
Merged
Conversation
The repository is now public. License and attributions match the grabette monorepo, which the vendored grabette-postprocess package comes from: RTAB-Map (BSD-3), DepthAI (MIT, offline_vslam.cpp adapts RTABMapVIO) and LeRobot (Apache-2.0). Assisted-by: Claude:claude-opus-5-5
The vendored grabette-postprocess had no tests. These seven files cover the modules the Space imports (episode files, trajectory, recording and trajectory checks, tags, dataset build) and the lerobot API surface dataset.py relies on. They pass unchanged against this copy, with and without lerobot installed. test_lerobot_api.py: drop the DiffusionPolicy-only recompute_stats check and guard lerobot.datasets.lerobot_dataset, the path dataset.py imports. Adds a 'test' extra (pytest) and pytest config; the lock only gains pytest, pluggy and iniconfig. Assisted-by: Claude:claude-opus-5-5
There was no test workflow, only the two Space deploy workflows. One job installs the exact uv.lock versions with CPU torch and runs the whole suite, lerobot boundary tests included. Deploy workflows are unchanged. Assisted-by: Claude:claude-opus-5-5
…orepo - scripts/checks: compare_trajectories.py (from the monorepo's postprocess), csv_to_tum.py and normalize_tum.py (from packages/grabette/scripts). Pure click/numpy/pandas/scipy, no new dependencies. - run_oak_slam.py: the oak-vslam image is published; say docker pull first. - generate_dataset.py: --fps help said 50fps, but the fallback is 30 since 2de4bf1. - README: Python 3.12, docker pull + pinned tag, the recording sanity check and lerobot-dataset-viz steps, --extra viz for Rerun, the new scripts, and how to run the tests. - .gitignore: the Orbbec SDK's Log/ directory. Library modules are untouched. Assisted-by: Claude:claude-opus-5-5
…al dev deploy.sh and the ../../packages path date from when this Space lived in the grabette monorepo. The pipeline now lives here, and both Spaces deploy through the GitHub Actions workflows. Local development: a native run (verified: UI, mocked sign-in and REST API come up on :7860; SLAM needs the image) and the Docker image with SYSTEM cleared so Gradio mocks OAuth with the local HF login. Assisted-by: Claude:claude-opus-5-5
The Orbbec Gemini 305 is the default depth camera, yet comments, docs, log
messages and check labels still described every recording as an OAK-D's.
Reword them in terms of "the depth camera" (the dcam_ files are already
named that way), and say which behaviour depends on an IMU.
- READMEs: intro, data flow, SLAM description and Hardware section list the
Gemini 305 (default, no IMU) and the OAK-D SR.
- User-visible strings: the Space's sync message, check labels, recording
check messages ("oak imu: ..." -> "imu: ...", matching "imu: none").
- VSLAM_BINARY replaces OAK_VSLAM_BINARY (set in the Dockerfile, read by
pipeline.py; renamed together, so the Space is unaffected).
No identifier, file, directory or Docker image is renamed here: those wait
for feat/tactile-sensing, #5 and #23 to land. Lines inside their hunks
(app.py, dataset.py, oak_slam.py, trajectory.py, checks/tags.py,
checks/trajectory.py, pipeline.py:433) are left alone. Legacy oakd_* names
stay: old recordings still use them.
Assisted-by: Claude:claude-opus-5-5
This was referenced Oct 20, 2026
#23 made tracking < 50% an error (BAD) and 50-75% a warning. The test copied from the monorepo still expected 40% to only warn: move the WARN case to 60% and add a 40% -> BAD case. Assisted-by: Claude:claude-opus-5-5
Describe the depth camera generically, not as an OAK-D (docs, messages, env var)
The image is amd64-only; under Docker Desktop's default qemu emulation the app segfaults at startup (pyarrow import). Verified with Rosetta on: the README's build + run commands serve the UI on :7860. Assisted-by: Claude:claude-opus-5-5
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Phase 1 of the repo split: grabette-slam becomes the home of the SLAM → LeRobot pipeline (grabette-postprocess "part 1"). Later, the grabette monorepo drops its own copy and keeps only what ships in the RPi images, and the training-side code moves to a new grabette-policy repo.
No library module, app file, Dockerfile or requirements.txt is touched, so the Space's runtime behaviour does not change.
Commits
LICENSE,NOTICE,THIRD_PARTY_NOTICES.md(RTAB-Map, DepthAI, LeRobot), plusgrabette-postprocess/LICENSE. The repo is public now and had none.testextra and pytest config; the lock only gains pytest, pluggy and iniconfig.test_lerobot_api.py: dropped the DiffusionPolicy-only check, added a guard forlerobot.datasets.lerobot_dataset, the pathdataset.pyimports.tests.ymlon PRs and pushes to develop/main. It installs the exactuv.lockversions with CPU torch and runs the whole suite. The deploy workflows are unchanged.compare_trajectories.py,csv_to_tum.py,normalize_tum.pyadded underscripts/checks/run_oak_slam.pydocstring: the oak-vslam image is published--fpshelp text fixed: it said 50fps, but the fallback is 30 since 2de4bf1docker pull, sanity-check step,--extra viz, testsLog/added to.gitignoredeploy.sh/../../packagessectionOverlap with open work
This PR deliberately leaves alone the library files edited by #5 (
dataset.py), #23 (checks/tags.py,checks/trajectory.py) andfeat/tactile-sensing(dataset.py,oak_slam.py,trajectory.py). The rootREADME.mdwill conflict with #13 andcommunity-datasets-consolidation; that's expected and will be resolved when they land.Verification
pytest: 67 passed with lerobot 0.6.1 (locked); 59 passed + 2 skipped without lerobot--helpruns for the 3 new scripts plusgenerate_dataset.pyandrun_oak_slam.py/api/statusanswers/api/status/<id>answers. On Apple Silicon this needs Docker Desktop's Rosetta emulation (segfaults under qemu); README note added in 213b123/and/api/statusanswer🤖 Generated with Claude Code