Spaces:
Running on CPU Upgrade
Running on CPU Upgrade
Commit History
16 days ago
-
feat(tactile): add a toggle to enable/disable tactile export Running
CarolinePascalUnverified signature2ad09b5 -
fix(tactile): fail with a clear error when a tactile sensor has no samples
CarolinePascalUnverified signature8e9e208 -
fix(slam): estimate gravity at the initial pose for z alignment
CarolinePascalUnverified signature4ee4749
17 days ago
-
feat(branch space): allow space deployment from a specific branch
CarolinePascalUnverified signature2d5870c -
fix(rebase): fix rebase issue
CarolinePascalUnverified signature32debf5
-
ci(tactile): remove dedicated-Space workflow
CarolinePascalUnverified signatureDeploy this branch to the shared pollen-robotics/grabette-slam-test via the existing deploy-branch-to-hf-test-space workflow instead.5b8c86b -
ci(tactile): drop create step, Space is pre-created
CarolinePascalUnverified signatureThe CI HF_TOKEN can push to existing pollen-robotics Spaces but cannot create them. grabette-slam-tactile is now pre-created, so the workflow only force-pushes the branch tip.e91aa69 -
ci: auto-sync feat/tactile-sensing to dedicated HF Space
CarolinePascalUnverified signatureAdd workflow that, on push to feat/tactile-sensing, ensures pollen-robotics/grabette-slam-tactile exists and force-mirrors the branch tip to it (Docker Space, same config as prod via README).ca8c8c1 -
feat(tactile): export tactile streams into LeRobot dataset
CarolinePascalUnverified signatureAdd load_tactile_streams in trajectory.py and wire per-sensor tactile grids into build_dataset_multi so processed episodes carry observation.tactile.{role}_sensor_{addr} features.e573817
9 days ago
-
fix(pyproject): fix lerobot extras
CarolinePascalUnverified signature37f797f -
fix(pyproject): fixing lerobot version boundaries
CarolinePascalUnverified signature0c008fb -
fix: upgrade LeRobot image statistics
CarolinePascalUnverified signature91d230b
-
Merge pull request #19 from pollen-robotics/18-fix-gemini-frame
Simon Le GoffUnverified signature18 fix gemini frame44abfec
-
Fix the transform.
ClaireHzl1024bad -
Merge pull request #17 from pollen-robotics/chore/disable-gradio-run-history
Simon Le GoffUnverified signaturechore: stop gradio recording every poll into the browsera538538 -
Add a fixed transform for Gemini frame.
ClaireHzl4dfaf7b -
chore: stop gradio recording every poll into the browser
Simon Le GoffGradio 6 defaults run_history to True and writes every API call into the visitor's localStorage. The review panel polls on a gr.Timer(0.5), so the Space was adding two entries a second for as long as a tab stayed open — observed as a growing list of `gradio:run…` keys, all of them `"api_name":"/poll"`. That is unbounded growth against a ~5 MB per-origin quota, for calls nobody will ever open the run-history page to review. Once the quota fills, writes start throwing. Pass run_history=False. Per gradio's docs this also deletes runs the app has already saved in visitors' browsers, so it cleans up what has accumulated. Assisted-by: Claude:claude-opus-5c49af05 -
Merge pull request #12 from pollen-robotics/fix/oauth-session-cookie-overflow
Simon Le GoffUnverified signaturefix: start each OAuth login handshake from an empty sessionbe1ee65
-
fix: start each OAuth login handshake from an empty session
Simon Le GoffSigning in a second time left the user looping between /login/huggingface and /login/callback, _nb_redirects climbing until the browser gave up (NS_ERROR_REDIRECT_LOOP). Seen on both Spaces, in Firefox and Chrome, inside the iframe and in a direct tab. The session cookie still held `oauth_info` from the previous login — ~3.3 kB of access/refresh/id tokens plus userinfo. Starting a new login wrote that again alongside the fresh `_state_huggingface_*`, producing a 4139-byte cookie: over the 4096 bytes browsers store. The Set-Cookie was dropped silently, so the callback arrived carrying the OLD cookie, which held no state, and gradio bounced it back to the login route. Gradio's recovery only fires when the cookie cannot be DECODED; this one decoded fine, so nothing broke the cycle and the only escape was deleting the cookie by hand. Its MAX_REDIRECTS fallback did not help either — the redirect it issues stays inside the Space iframe. Strip the session cookie on the way into /login/huggi…0f25be7 -
Merge pull request #11 from pollen-robotics/fix/space-compiles-offline-vslam
Simon Le GoffUnverified signaturebuild: compile offline_vslam in the Space image95ff591
-
build: compile offline_vslam in the Space image
Simon Le GoffThe Space ran the binary bundled in the pollenrobotics/oak-vslam base image, which nothing rebuilds when offline_vslam.cpp changes. Source and binary had drifted: the IMU-less calib guard was in this tree but not in the base's binary (compiled 2026-07-22), so every Gemini episode aborted with SIGABRT — surfacing as rc=-6 and no other diagnostic. Recompile the .cpp from the deployed tree on top of the base, which still carries the RTAB-Map headers, libs and toolchain. Adds ~10 s to the Space build and makes the binary match the source by construction. Verified against the base image pulled by digest from Docker Hub: the episode that fails in prod now runs to rc=0 with 110 poses. Assisted-by: Claude:claude-opus-5f06da98
-
Merge pull request #8 from pollen-robotics/test-vs-prod
Simon Le GoffUnverified signatureadd test space framecb5b853 -
Merge pull request #9 from pollen-robotics/gemini305-dcam-support
Simon Le GoffUnverified signatureGemini305 dcam support89e2a50 -
Update README.md
Simon Le GoffUnverified signaturecd71699
-
add test space frame
Gaëlle Lannuzelc554421 -
Merge pull request #7 from pollen-robotics/main
Gaëlle LannuzelUnverified signatureMain2645749 -
Merge pull request #6 from pollen-robotics/chore/dockerfile-oak-vslam-base
Gaëlle LannuzelUnverified signaturebuild: base Space image on pollenrobotics/oak-vslam (drop from-source…25df158
-
Merge pull request #4 from pollen-robotics/3-add-slam-check
Gaëlle LannuzelUnverified signature3 add slam check694bfa9 -
fix comments
Gaëlle Lannuzel01f02f3
-
build: base Space image on pollenrobotics/oak-vslam (drop from-source rtabmap compile)
Steve Nguyen +1: Claude Opus 4.8 (1M context)FROM pollenrobotics/oak-vslam (pre-built offline_vslam + RTAB-Map libs) instead of FROM ubuntu:22.04 + compiling RTAB-Map from source on every build (~10 min). Only the Python 3.12 conversion app is layered on top. Also installs ffmpeg + libgl1/libglib2.0-0, which the SLAM base lacks but lerobot (video) and opencv-python need at runtime, and overrides the base's offline_vslam ENTRYPOINT so the Gradio app runs (offline_vslam is still invoked as a subprocess via OAK_VSLAM_BINARY). Removes the build-time dependency on the deadsnakes/Launchpad + rtabmap source for the heavy layer. Verified: image builds and the app starts (/config 200) against main; conversion behavior validated end-to-end on the equivalent dev image. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>d515baa
-
Accept _trajectorycheck_ as the check marker, keep slamcheck- working
ClaireHzlThe fleet now names a check's dataset "{task}_trajectorycheck_{stamp}" — readable on the Hub, and sorted by task then time. That name is also the signal that tells this Space the run is a check, so it has to be recognised here first. Both markers stay live. A fleet that hasn't been redeployed is still sending "slamcheck-…", and accepting both is what lets the two Spaces go out in either order rather than leaving a window where a check arrives as an ordinary build and pushes a dataset unconditionally. The new one is matched delimited by underscores rather than as a bare substring, so an ordinary dataset that merely mentions a trajectory check in its name is not mistaken for one.90231cc -
A pre-check warning is reported, but it does not push a dataset
ClaireHzlThe first real check pushed a dataset while every trajectory came back GOOD with 100% tracking and zero lost frames: the three takes each carried a pre-check warning ("angle: distal joint appears static"), and the flag was "verdict is not GOOD" across every entry. That warning says nothing about tracking, and a check whose point is is_lost would then push on nearly every run — which teaches the operator to ignore the result. So the flag now means the SLAM outcome isn't clean: a BAD/FAIL trajectory, a SLAM failure, or a pre-check ERROR that stopped the take from being run at all. The warning is still reported against its episode, so nothing is hidden — it just no longer decides.5ba3193 -
Report SLAM tracking quality, and push only when a take is flagged
ClaireHzlA "SLAM check" is this same pipeline run with check_only: it reports per-episode tracking and pushes the LeRobot dataset ONLY if an episode is not GOOD, so the bad take can be opened in the visualizer while a clean check leaves nothing behind. The per-episode payload now carries the frame counts the trajectory report already computed (n_frames / n_tracked / n_lost) — a rounded tracking_pct hides 3 lost frames out of 900 and 90 out of 900 equally well. The caller learns the verdict through GET /api/quality/{target_repo}: keyed on the repo instead of the job id, because the grabette fleet has a DEVICE trigger the conversion and only ever learns the result. Same in-memory record (and same unauthenticated exposure) as /api/status, and the report is published live so polling it streams verdicts as SLAM works through the set. check_only can also be requested by naming the target repo slamcheck-*: the relay client on the device rebuilds this payload from a fixed set of keys, so a new flag w…90641a6
-
Merge pull request #2 from pollen-robotics/fix-workflow
Gaëlle LannuzelUnverified signatureUpdate deploy-branch-to-hf-test-space.yml092bb18 -
Update deploy-branch-to-hf-test-space.yml
Gaëlle Lannuzel82f5298 -
Merge pull request #1 from pollen-robotics/fix/shared-errors
Gaëlle LannuzelUnverified signatureFix/shared errorsab340d8 -
fix tokens
Gaëlle Lannuzel594e4d5 -
remove run state from globals
Gaëlle Lannuzel125c46d
-
Keep the vendored recording check in sync with upstream
Simon Le Goff +1: Claude Opus 5 (1M context)Mirrors grabette 2e580f1: require_right defaults to None and is derived from the episode's recorded per-stream stats, so a camera without a right video is not reported as missing one. No behaviour change for the Space itself — pipeline.py already passes require_right=False explicitly, and that override still wins. Copied so the vendored tree does not drift from upstream, which is how its lerobot pin and dataset.py fork diverged in the first place. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>d423da0
-
Support IMU-less cameras, dcam_* filenames and camera provenance
Three upstream changes the Space needs before it can process Orbbec Gemini 305 recordings. 1. IMU-less episodes. The 305 has no IMU, and four files assumed every episode carries one. offline_vslam.cpp dereferenced calib["imu_to_cam"] unguarded and aborted with nlohmann type_error.302; convert.py treated the IMU json as a required input; checks/recording.py errored on its absence and required imu_to_cam in the calib; check_dataset.py anchored discovery on it, making 305 episodes invisible. All relaxed, without weakening the OAK-D case: a present-but-empty IMU file still errors. 2. Episode files renamed oakd_* -> dcam_*, since a Gemini recording was writing filenames claiming to be an OAK-D's. Readers resolve through the new episode_files module, which prefers the canonical name and falls back to the legacy one; episodes already on the Hub are NOT rewritten and keep working. 3. metadata.json now carries a depth_camera block naming the model, serial and fi…590a794
-
Add workflows
Gaëlle Lannuzelcc2e6d0
-
remove raw dataset remval
Gaëlle Lannuzeldefd94a
-
unlock scroll
Gaëlle Lannuzelcd9fb0b -
manage bimanual on space interface too
Gaëlle Lannuzel1c6d8ee
-
add lock on push dataset
Gaëlle Lannuzel70432c9
-
keep same window for both hands
Gaëlle Lannuzel0243489
-
prepare bimanual tasks
Gaëlle Lannuzel7563ca3
-
Update README.md
Verified signature188d013
-
Keep WARN episodes in the API pipeline (no unconditional drop)
ClaireHzlThe headless /api/process path dropped every WARN (e.g. low-tracking) episode. Keep them by default so the dashboard build matches the CLI: all episodes kept, lost frames masked via is_lost and flagged by tags. FAIL/BAD stay behind their opt-in exclude flags.5f921d9 -
Add OAK left as observation.images.cam1 alongside the RPi cam0
ClaireHzlSecond camera observation from oakd_left.mp4, selected nearest-by-timestamp against the trajectory (host_ms clock the SLAM stamps poses with, so matching is exact). Resized to image_size like cam0.f71b6cf