Path-based UMI session replay with Rerun Web Viewer
Project description
UMI Whole-System Runtime + Tools
Current system description:
- docs/UMI_SYSTEM_DESCRIPTION.md
- docs/UMI_USER_STORIES.md
- docs/UMI_TASK_BREAKDOWN.md
- docs/UMI_SYSTEM_ARCHITECTURE.md
- docs/UMI_STATE_MACHINE.md
Read in this order if you want the current whole-system definition:
- docs/UMI_SYSTEM_DESCRIPTION.md
- docs/UMI_USER_STORIES.md
- docs/UMI_TASK_BREAKDOWN.md
- docs/UMI_SYSTEM_ARCHITECTURE.md
- docs/UMI_STATE_MACHINE.md
- docs/UMI_SYSTEM_SOLUTION_SKELETON.md
This repo provides:
- A Rerun-based live visualizer (
apps/rerun_visualizer.py) - A Rerun-based three-point session review tool for head / left foot / right foot playback in browser (
apps/rerun_three_pose_review.py) - A remote session-selection page that opens Rerun Web Viewer directly from RDK-hosted data (
apps/rerun_session_review.py) - The current
PICOpose path plus legacyQuestcompatibility readers (vr_umi_sdk/pico/,vr_umi_sdk/quest/) - A device-side recording and export runtime (
vr_umi_sdk/) + CLI (apps/record.py) - A board-local debug helper + optional debug web shell for setup and field debugging
- Supporting docs for the evolving RDK X5 whole-system design
For convenience, the old root-level scripts (vr_umi_ui.py, vr_umi_record.py, etc.) are kept as thin wrappers.
Integrated target runtime profile
The integrated target whole-system lane in this repo is now expressed through:
- board profile:
config/board_profiles/pico_dual_runtime.json - startup contract:
config/startup_self_check_pico_dual_runtime.json
That target shape is:
1Pico2servo ports2cameras (4camera nodes expected by startup check)2buttons2lights- board power voltage present on the runtime power socket
- robot-gateway WebSocket updates over
apps/umi_robot_gateway.py
The systemd deployment units under deploy/systemd/ now point at this integrated profile/config pair.
For wave-1 packaging prep, treat the shipped systemd lane as the authoritative packaged topology:
umi-runtime.serviceumi-button.serviceumi-board-power.serviceumi-board-light.serviceumi-debug-helper.service
Code-level CLI defaults that still point at config/board_profiles/current_validation_board.json
and config/startup_self_check.json remain available for local development / compatibility only.
They are not the packaged defaults; deploy/systemd/ overrides them to the integrated pair above.
Separate export-worker packaging is still deferred in this checkout. Runtime/export sidecars exist,
but there is no shipped deploy/systemd/umi-export-worker.service unit in the current packaged lane.
The next gate after wave-1 packaging prep is on-target validation:
docs/ON_TARGET_ACCEPTANCE_CHECKLIST.mddocs/ON_TARGET_ACCEPTANCE_RUNBOOK.mddocs/ON_TARGET_ACCEPTANCE_EVIDENCE_TEMPLATE.md
Live visualization
- Start the visualizer (captures local cameras + listens for pose JSON):
python vr_umi_rerun_visualizer.py --listen 0.0.0.0:9001
Legacy Quest note (the active project target is now PICO; keep these steps only for the old Quest visualizer path):
adb devices
adb forward tcp:5050 tcp:5050
- Start the Quest TCP reader and forward poses to the visualizer:
python tcp_quest_reader.py --visualizer 127.0.0.1:9001 --send-hz 60 --auto-send
Notes:
- If you omit
--auto-send, use L/R Trigger to start sending; other buttons stop. - Camera devices:
- Linux:
/dev/video0,/dev/video2, ... - macOS:
0,1, ...
- Linux:
Recording a session (dataset)
python vr_umi_record.py --cam-fps 15 --sample-hz 60 --action-mode vr_pose
Optional (USB grippers):
python vr_umi_record.py --gripper-left-port /dev/ttyUSB0 --gripper-right-port /dev/ttyUSB1 --gripper-baudrate 115200
This writes a session folder under data/vr_umi_sessions/<timestamp>/.
See docs/DATASET_FORMAT.md.
Non-Pico bring-up lane
For board-side bring-up without Pico, use the dedicated non-Pico entrypoint:
python -m apps.non_pico_bringup \
--board-config config/board_profiles/non_pico_dual_bringup.json \
--acceptance-stage stage_gate \
--duration-s 60 \
--cam-fps 30 \
--gripper-left-port /dev/ttyUSB0 \
--gripper-right-port /dev/ttyUSB1 \
--print-summary
To inspect what the board currently auto-detects before a real run:
python -m apps.non_pico_bringup --print-discovery
Notes:
- This lane is for
2 buttons + 2 lights + 2 servo reads + 2 cameras. - It keeps Pico out of scope and does not change startup self-check.
- The bundled dual-button / dual-light board profile is a provisional bring-up profile aligned to the current schematic shape: two 3-pin button connectors and two 4-pin light connectors. Keep treating the runtime-side naming as provisional until the real on-device mapping is fully confirmed.
- The run writes the normal sidecars plus
bringup_summary.json,button_events.jsonl, andlight_events.jsonl.
Legacy Local UI Shell
python vr_umi_ui.py
Notes:
- This is a legacy local development shell kept for compatibility.
- It is not the target whole-system recording interface.
- Formal whole-system control should go through the device runtime / CLI path.
- The target UI role is setup, debugging, status inspection, and guided repair.
Convert to LeRobotDataset (v3)
python vr_umi_to_lerobot.py --input data/vr_umi_sessions --output data/lerobot/vr_umi_dataset --overwrite
One-command viz pipeline
python apps/viz_pipeline.py --session data/vr_umi_sessions/<session_name>
Repo layout
vr_umi_sdk/: runtime, hardware, capture, export, and debug helper codeapps/: CLI entrypoints and board-local/local debug helper shellsdocs/: system description, architecture, state machine, requirements, and dataset docstools/: development utilities (camera smoke/tuner)examples/: small scripts
Project details
Release history Release notifications | RSS feed
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 delta_umi_viewer-0.3.tar.gz.
File metadata
- Download URL: delta_umi_viewer-0.3.tar.gz
- Upload date:
- Size: 8.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
96adb79d8a098b4f89185ec121ab973b9be60a499dfa8aea3baeabf68028ce37
|
|
| MD5 |
a8b6113288a0d553091b7656c5d2c0d7
|
|
| BLAKE2b-256 |
afd4cfaea37ee14bb24f8c89f0046642374431acb23206cb7a83c738ab35b093
|
File details
Details for the file delta_umi_viewer-0.3-py3-none-any.whl.
File metadata
- Download URL: delta_umi_viewer-0.3-py3-none-any.whl
- Upload date:
- Size: 9.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
84e2444b1ab0aa45a13140056ed6ecd109f832702085acfd2c629b95738b58b2
|
|
| MD5 |
401b0edae52e6d5337fff3e7fbe7dd75
|
|
| BLAKE2b-256 |
7ae438eeaa1e7aaf9eb73f60ba8270b6b8bfea8b92c43ecd9d0efae2e425122b
|