Skip to main content

Path-based UMI session replay with Rerun Web Viewer

Project description

UMI Whole-System Runtime + Tools

Current system description:

Read in this order if you want the current whole-system definition:

  1. docs/UMI_SYSTEM_DESCRIPTION.md
  2. docs/UMI_USER_STORIES.md
  3. docs/UMI_TASK_BREAKDOWN.md
  4. docs/UMI_SYSTEM_ARCHITECTURE.md
  5. docs/UMI_STATE_MACHINE.md
  6. 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 PICO pose path plus legacy Quest compatibility 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:

  • 1 Pico
  • 2 servo ports
  • 2 cameras (4 camera nodes expected by startup check)
  • 2 buttons
  • 2 lights
  • 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.service
  • umi-button.service
  • umi-board-power.service
  • umi-board-light.service
  • umi-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.md
  • docs/ON_TARGET_ACCEPTANCE_RUNBOOK.md
  • docs/ON_TARGET_ACCEPTANCE_EVIDENCE_TEMPLATE.md

Live visualization

  1. 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
  1. 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, ...

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, and light_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 code
  • apps/: CLI entrypoints and board-local/local debug helper shells
  • docs/: system description, architecture, state machine, requirements, and dataset docs
  • tools/: development utilities (camera smoke/tuner)
  • examples/: small scripts

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

delta_umi_viewer-0.3.tar.gz (8.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

delta_umi_viewer-0.3-py3-none-any.whl (9.0 kB view details)

Uploaded Python 3

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

Hashes for delta_umi_viewer-0.3.tar.gz
Algorithm Hash digest
SHA256 96adb79d8a098b4f89185ec121ab973b9be60a499dfa8aea3baeabf68028ce37
MD5 a8b6113288a0d553091b7656c5d2c0d7
BLAKE2b-256 afd4cfaea37ee14bb24f8c89f0046642374431acb23206cb7a83c738ab35b093

See more details on using hashes here.

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

Hashes for delta_umi_viewer-0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 84e2444b1ab0aa45a13140056ed6ecd109f832702085acfd2c629b95738b58b2
MD5 401b0edae52e6d5337fff3e7fbe7dd75
BLAKE2b-256 7ae438eeaa1e7aaf9eb73f60ba8270b6b8bfea8b92c43ecd9d0efae2e425122b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page