Raffael-Kultyshev's picture
Initial viewer for humanoid robots dataset
6f0655f
|
raw
history blame
1.96 kB

hf_space_mini_tug Requirements

This directory contains the Streamlit application that runs on Hugging Face Spaces and visualizes each episode.

Files

  • app.py – Streamlit entrypoint. Downloads the dataset via snapshot_download, exposes an episode selector, video player, and Plotly charts.
  • requirements.txt – Python dependencies (streamlit, plotly, pandas, huggingface_hub).
  • README.md – Hub metadata (SDK = Streamlit).

Data Contract

app.py expects the dataset raffaelkultyshev/mini_tug_tape_to_bowl to have:

  • meta/info.json describing episodes, data_path, and video_path.
  • Parquet files with either:
    1. LeRobot-style observation.state columns (list<float>) or
    2. Long-form frame_idx, joint_name, x_cm, etc. produced by hand_pose_pipeline.py.
  • RGB MP4s encoded as H.264 / yuv420p / faststart (videos/chunk-000/rgb/...).

Internal Logic

  1. get_dataset_revision() uses HfApi.repo_info so Streamlit caches auto-invalidate when the dataset updates.
  2. load_episode() reads the Parquet file and, via build_state_dataframe, pivots the long table back into the [wrist_x_cm, ...] format used by the charts.
    • This function enforces accuracy bounds by reindexing frames and rejecting missing joint rows.
  3. Plots are generated with Plotly (build_plot) and share the same axis scaling as the offline PNGs.

Accuracy Guarantees

  • Streamlit charts display the exact values computed by hand_pose_pipeline.py. No down-sampling is performed.
  • If gaps exist, the app surfaces NaN segments directly, ensuring transparency about measurement uncertainty (<3 mm XYZ, <5° angles as validated in scripts/Requirements.md).

Deployment

  • Use huggingface_hub.HfApi.upload_folder(folder_path='hf_space_mini_tug', repo_type='space').
  • Before deploying, regenerate the dataset_cache/ by running the app locally or deleting the cache to avoid shipping stale data.***