YAML Metadata Warning:empty or missing yaml metadata in repo card
Check out the documentation for more information.
BIRD (d2560 main method) on ur_short_memory, seed 0
Checkpoints from bash train_bird_main.sh ur_short_memory 0 on the
bird_main branch of REAL_WORLD_DIFFPO_MEMORY at 97afc73, plus one
uncommitted change to algorithms/bird_main/trainer.py (below). 100k gradient
steps, no eval envs (env.eval_episode_num=0).
Contents
| path | what |
|---|---|
checkpoints/agent_0100000.pt |
final weights (step 100k) |
checkpoints/agent_0005000.pt ... agent_0095000.pt |
every 5k steps, in case the final one is over-fitted |
checkpoints/config.yaml |
resolved run config; eval_bird_main.py rebuilds the agent from it |
ur_short_memory.bird_main.camera_2.96x96.zarr/ |
the training data in the layout real_data.py reads (the eval needs it for the action normalization stats) |
Running on the robot
config.yaml points env.real_dataset and env.real_zarr at
ur_short_memory.bird_main.camera_2.96x96.zarr, a path relative to the
directory you launch from. Either launch from the directory holding the zarr,
or edit both keys to its absolute path. Then:
python eval/eval_bird_main.py -i checkpoints/agent_0100000.pt -t ur_short_memory
-i takes the .pt file; config.yaml must sit next to it.
Data
Trained on ur_short_memory_crop.baseline.27.rotation_6d.zarr: 27 demos, 10000
frames, camera_2 (wrist, 320x240, centre-cropped and resized to 96x96 with
the repo's get_image_transform). That zarr was already converted (quaternion
rotations, 6D-rotation actions, JPEG2000 frames, no mp4s), so instead of
real_data.build_bird_zarr it was converted with a one-off script into the
same layout:
data/state= eef_pos(3) + rotation_6d(6) + gripper_qpos(2), where rotation_6d is the first two rows of the rotation matrix (pytorch3d convention, the same oneeval_bird_main.pycomputes from the robot's axis-angle)data/action= pos(3) + rotation_6d(6) + gripper width(1), unchanged;action[t]equalsstate[t+1]exactlydata/img= 96x96x3 uint8
Trainer change (not committed)
With eval_episode_num=0 the stock trainer only writes best_agent.pt when an
eval improves, so it would never save anything. The patch writes
agent.pt plus agent_<step>.pt every eval_every (5000) steps and at the
end, in the same payload format, so eval_bird_main.py loads them unchanged.
Offline check (training demos, open-loop)
Replaying the 27 demos through Bird.act() the way the robot loop calls it,
with recorded frames as input, the 35k checkpoint's executed actions were off
by 3.6 mm in position (p95 7.7 mm), 0.30 deg in rotation, and matched
open/closed gripper state 99.6% of the time. For comparison, holding the current
pose is off by 27.8 mm and constant-velocity extrapolation by 13.1 mm. These
are training episodes, so this measures fit, not generalization; closed-loop
performance is only measured on the robot.
Caveats
agent_pos(the 11-D state) reaches the policy unnormalized, becausereal_data.real_spacesdeclares its bounds as +-inf. Actions are min-max normalized to [-1, 1] per dimension.- No held-out episodes: all 27 demos were used for training.