Inspect the shared datasets#
Use this page to open the five August 25 episodes without installing robot control or planning software. The downloads also include a separate calibration archive; it is not a LeRobot dataset.
Extract and check the collection#
Download the stacking ZIP and its checksum file from the shared Drive folder.
Compare the ZIP’s sha256sum with the supplied checksum, then extract it.
Keep meta/, data/ and videos/ together. The archive README identifies the
source runs and explains the included checksums.
Locate the directory containing meta/info.json; call it
g1_august25_stacking below. Set G1_DATASETS to its absolute parent path, so
the layout is:
/path/to/datasets/
└── g1_august25_stacking/
├── meta/info.json
├── data/
└── videos/
Check that meta/info.json reports 5 episodes, 8,272 frames and 15 FPS.
The episode table maps indices 0–4
to retained run IDs. These are completed recording boundaries; inspect physical
placement separately before assigning a task-success label.
Start a local browser viewer#
This setup uses the lab’s LeRobot dataset visualizer
and SPARK’s small HTTP dataset server. You need Python with venv, Node.js,
Bun, Git and curl. The three processes have different jobs:
Process |
Local address |
Purpose |
|---|---|---|
Dataset server |
|
Serves the extracted metadata, Parquet and video files |
Video backend |
|
Makes the encoded depth video browser-decodable |
Viewer |
|
Displays episodes, video and signal plots |
Prepare a new checkout:
git clone https://github.com/RPM-lab-UMN/lerobot-dataset-visualizer.git
cd lerobot-dataset-visualizer
git switch --detach 67aec1afdf7202abc509f6aeb39aef8a076af11e
bun install --frozen-lockfile
python3 -m venv backend/.venv
backend/.venv/bin/python -m pip install -r backend/requirements.txt
curl -fL -o local_dataset_server.py \
https://raw.githubusercontent.com/RPM-lab-UMN/spark-data-collection/be284c2f8138f383d260526f68613c7a28d364d4/data_pipeline/local_dataset_server.py
Terminal 1 — serve the dataset, from the viewer checkout. Replace the path:
export G1_DATASETS=/absolute/path/to/datasets
python3 local_dataset_server.py --root "$G1_DATASETS" --port 8879
Terminal 2 — start depth playback support, from the same checkout:
cd backend
.venv/bin/uvicorn app:app --host 127.0.0.1 --port 7861
Terminal 3 — start the viewer, from the checkout root. Use the same dataset parent path as Terminal 1:
export G1_DATASETS=/absolute/path/to/datasets
DATASET_URL=http://127.0.0.1:8879/datasets \
VIDEO_BACKEND_URL=http://127.0.0.1:7861 \
LOCAL_DATASET_ROOT="$G1_DATASETS" \
NEXT_PUBLIC_ANNOTATE_BACKEND_URL= \
bun run dev --hostname 127.0.0.1 --port 3000
Open http://127.0.0.1:3000/local/g1_august25_stacking/0. This address works on the machine running the viewer; it is not a public dataset link. The sidebar should show five episodes. Annotation writes are not enabled by these commands. Stop each process with Ctrl+C when finished.
The pinned public viewer was checked against this dataset using existing local dependencies: five episodes were listed and both video streams decoded. This is not a clean-machine dependency installation test. The walkthrough video shows a different, 33-episode export with additional local viewer changes; its exact display is not the reproduction target here.
What to inspect first#
Select an episode and compare RGB movement with the state and action traces. Measured state and commanded action can differ; that difference is not automatically a calibration error.
Seek to approach, close, lift, placement and return. Check what is actually visible before labeling contact or successful placement.
Use the named features in
meta/info.jsonto interpret arrays. Pressure is raw counts, and command gains are not measured effort. Recorded signals explains the representation and sampling limits.Consult the archive’s conversion records for omissions and timing bounds. Neither video playback nor a completed task field proves a complete raw bag or normal final ownership handback.
Depth is a derived, lossy training representation. The backend creates a colored playback copy because the stored grayscale depth codec is not directly browser-compatible. Its display colors do not replace metric depth decoding or the original calibration images.
Symptom |
Check |
|---|---|
Dataset not found |
Open |
RGB plays but depth does not |
Backend is running, |
Viewer requests Hugging Face instead of local files |
Restart the frontend with |
Layout differs from the walkthrough |
Confirm the public viewer revision; the video includes local extensions |
Inspect the calibration archive separately#
Read its README and keep the two capture sessions, selected fitting inputs and bundle together. The PNGs preserve the source pixels used for calibration; measurement metadata supplies joint state, corner observations and grouping. Use calibration workflow and results to understand the bundle. No calibration-to-LeRobot exporter has been produced, and the stacking viewer instructions above do not apply to those capture folders.