CoolFace
Apppublic

carroll511/ikea-torque-readout

sourceHugging Faceapache-2.0updated 26d agoView on Hugging Face
0likes
App README

What the joint torque shows when the leg goes in

Video synced with right-arm joint torque for all 92 clean "insert table leg" segments of the G1 Dex1 IKEA table-assembly recordings — the 53 segments of 2026-08-19 plus the 39 added from the 2026-08-23/24/25 sessions.

The page answers one question: can measured torque (tau_est from rt/lowstate) tell you the leg is seated before the operator decides it is and opens the hand?

  • Pick any of the 92 segments, scrub the chart to move the video.
  • Aggregate view: median and IQR across all segments, aligned on the release, switchable between the two batches of sessions.
  • The control ladder shows what survives once arm posture, joint velocity and gripper state are regressed out.

What the new recordings changed. The first pass had only 260819 and ended at AUC 0.654 — a real but weak edge. The same procedure over the 39 later segments gives 0.798, and 0.824 pooled. It is not a sample-size effect: a random 53 of the pooled 92 scores 0.806 ± 0.018, and removing every per-segment offset first still leaves 0.567 for 260819 against 0.788 for 260823–25. Torque calls the insertion about as well as the insertion is performed.

The earlier correction still stands: the right gripper's own torque looked like the strongest signal (AUC 0.841) only because the hand opens ~2.5 s before the segment ends, so that scored window sat entirely after the release. Every number here is measured strictly before the hand moves.

Dataset: URL-RFM/IKEA_pickuptheleg

Rebuilding

bash
export ROOT=$HF_LEROBOT_HOME/URL-RFM/IKEA_pickuptheleg
python build/analysis.py   --root $ROOT     # payload.json + data/<segment>.json traces
python build/make_clips.py --root $ROOT     # clips/<segment>.mp4
python build/build_page.py                  # index.html from build/template.html

build/analysis.py owns every number on the page — the segment list, the release detection, the aggregate and the control ladder all come out of the same frames, so the prose cannot drift from the payload. build/make_clips.py repairs the head-camera file_index in the dataset's aggregated meta/episodes before cutting (see the note at the foot of the page).