Ronaldo-GOAT's picture
Add Franka-EEF deploy, reference inference, and lerobot conversion scripts
1c7c303 verified
Raw History Blame Contribute Delete
4.66 kB
========================================================================
HOW TO ACTUALLY RUN THE ROBOT (pose6daug GR00T-N1.5, Franka EEF rig)
========================================================================
!! This MOVES the physical Franka arm. Have the e-stop in hand and the
!! workspace clear before you launch.
------------------------------------------------------------------------
0) WHICH COMMAND DOES WHAT (read this first)
------------------------------------------------------------------------
full_inference_mock.py -> DOES NOT MOVE THE ROBOT. Robot + cameras are
mocked. Verification only. Safe to run anytime:
PYTHONPATH=/home/jimin/myGR00T CUDA_VISIBLE_DEVICES=0 STEPS=48 \
/home/jimin/miniconda3/envs/gr00t/bin/python \
/home/jimin/jonghoon/mygr00t_franka_deploy/full_inference_mock.py
deploy_franka_eef.py -> MOVES THE REAL ROBOT. This is the one below.
------------------------------------------------------------------------
1) BEFORE YOU LAUNCH (checklist)
------------------------------------------------------------------------
[ ] Franka powered on, brakes released, e-stop within reach.
[ ] Workspace clear; nothing in the arm's path.
[ ] Both ZED cameras connected. Confirm the serials match:
exterior = 37149196 wrist = 11845904
(if different, edit --left_camera_id / --wrist_camera_id below)
[ ] The DROID robot server/NUC is up (the `droid` RobotEnv connects to it).
[ ] GPU 0 is free.
------------------------------------------------------------------------
2) RUN IT (easiest — the example script)
------------------------------------------------------------------------
bash /home/jimin/jonghoon/mygr00t_franka_deploy/run_example.sh
- Task is preset to: "pick up the object and place it in the white basket"
- Per-step translation clamp: 0.03 (safety)
- Press Ctrl+C to stop the rollout early at any time.
------------------------------------------------------------------------
3) RUN IT (explicit command — same thing, edit inline)
------------------------------------------------------------------------
PYTHONPATH=/home/jimin/myGR00T CUDA_VISIBLE_DEVICES=0 \
/home/jimin/miniconda3/envs/gr00t/bin/python -u \
/home/jimin/jonghoon/mygr00t_franka_deploy/deploy_franka_eef.py \
--task "pick up the object and place it in the white basket" \
--max_trans_per_step 0.03 \
--embodiment_tag=new_embodiment \
--data_config=droid_franka_eef_real \
--action_space=cartesian_position \
--left_camera_id=37149196 \
--wrist_camera_id=11845904 \
--inference_head=main \
--denoising_steps=4 \
--max-timesteps=1500 \
--logging_path=/home/jimin/droid/rollout_results/pose6daug-iclr120-20k \
policy:checkpoint \
--policy.config=franka_real_eef \
--policy.dir=/home/jimin/pose6daug-gr00t-iclr120-20k/checkpoint-20000
Omit --task to be prompted "Enter instruction:" interactively instead.
Swap checkpoint-20000 for -5000/-10000/-15000 to try earlier steps.
------------------------------------------------------------------------
4) CONTROL MODE -- CONFIRMED FROM THE CHECKPOINT
------------------------------------------------------------------------
Checked the training normalization stats in the checkpoint metadata:
the ACTION distribution == the STATE distribution (EEF x,y,z spanning the
~0.3-0.6 m workspace, not centered on 0). So this model outputs:
ABSOLUTE cartesian target positions, in meters
(NOT relative/delta, NOT velocity)
Therefore:
* use --action_space=cartesian_position (as in sections 2/3).
* --max_trans_per_step 0.03 is a SAFETY MOVE LIMIT: it caps
(target - current_EEF) to +/- 0.03 m per step, so the arm walks
toward each predicted target no faster than 3 cm/step. It does NOT
clamp the absolute target (that would drag the arm toward 0,0,0).
(This was fixed in deploy_franka_eef.py; verified in the mock.)
* do NOT use cartesian_velocity for this checkpoint.
Tip: on the first real run, set a small --max_trans_per_step (e.g. 0.02),
watch a few steps, then raise it.
------------------------------------------------------------------------
5) DO NOT
------------------------------------------------------------------------
- Do NOT pass --resize_video : this config's VideoToTensor needs native
720x1280 frames (it crops/resizes to 224 internally). Passing 192,320
will crash it.
- Do NOT run full_inference_mock.py expecting motion (see section 0).
========================================================================