Download real_deploy_script/DEPLOY_FIXES.md from AllenBi21/tactile-act-screw-baselines: direct link, hf CLI and curl.
- Browser
- Download file 3.12 kB
-
https://huggingface.co/AllenBi21/tactile-act-screw-baselines/resolve/main/real_deploy_script/DEPLOY_FIXES.md
- Command line
-
hf download hf://AllenBi21/tactile-act-screw-baselines/real_deploy_script/DEPLOY_FIXES.md
-
curl -L -o DEPLOY_FIXES.md https://huggingface.co/AllenBi21/tactile-act-screw-baselines/resolve/main/real_deploy_script/DEPLOY_FIXES.md
Real-robot deploy β findings & required fixes (2026-08-11)
Symptom investigated: qpos and wrench policies behave normally on hardware; HTT (in-graph), T3, and SITR policies do not.
A. T3 / SITR β root cause found, new runner provided
run_ACT.py feeds obs["tactile"] = wrench_1 (30-d wrench) to EVERY policy.
The T3/SITR checkpoints expect the 3840-d encoder feature vector; no encoder
exists anywhere in the deploy scripts. Use the new run_ACT_t3_sitr.py,
which computes features live via tools/live_features.py (validated against
the training features). Needs TACTILE_FUSION_ROOT/GSRL_ROOT env vars and
the encoder weights (see SETUP_ENCODERS_REMOTE.md in the HF bundle).
B. HTT in-graph (run_ACT_tactile_checkpoint.py) β 3 line-level fixes
Backgrounds captured at the wrong pose/time (primary suspect). Current order: command
hand_initial_poseβ sleep(1) βset_backgrounds(l.130) β 'c' β move topose.json["pose1"]β run. Training bg (tactile_bg_224) = resting frame AT the episode start configuration. FIX: move the two bg lines (l.130β131) to AFTER thepose.jsonmove and itsrospy.sleep(5)(i.e., after l.144), so bg is captured settled, at the pose the episode actually starts from, immediately before stepping:rospy.sleep(5) bg = {key: finger_image(sharpa_tactile[i]) for i, key in enumerate(FINGER_KEYS)} infer.set_backgrounds(bg)Also verify the fingers are NOT in contact at that pose β bg must be a free/rest frame, as in the dataset.
inference_tactile_checkpoint.pyl.112:act_cfg["n_action_steps"] = 15hard-overrides the trained value (30). Delete the line (keep thesetdefaultabove it) unless the 15-step re-query was a deliberate, validated choice.Control rate:
rospy.Rate(50)βrospy.Rate(30)in both runners. Demos are ~31 Hz; at 50 Hz chunks execute 1.6Γ too fast AND the in-graph branch's rolling frame-pair history gets 20 ms spacing vs ~32 ms at training β the image-history branch is the component most sensitive to this. (qpos/wrench tolerating 50 Hz does not mean the HTT branch does.)
C. Hygiene (not the bug, but will bite eventually)
run_ACT.pyl.41 hardcodesscrew_qpos_50kwhilepolicies[arg]suggests selection β the log filename (l.52) recordspolicies[3]regardless of what actually ran. Make the checkpoint path derive from the selection.finger_image'sarr.max() <= 1.5float heuristic mis-scales a genuinely dark uint8-as-float frame; prefer an explicit dtype contract from the publisher.
Recommended bring-up order after fixes
- T3/SITR: run the
live_featuresself-test on the robot machine first (PASS required), thenrun_ACT_t3_sitr.pywith the hand in free space β confirm actions look like the demo's approach motion before touching the object. - HTT: after fixes B1βB3, log
policy's tactile-branch feature norm for a few seconds at rest and compare to a training episode's feature norms β a mismatch >2Γ means bg is still wrong.