yypeng666 commited on
Commit
1e1de0b
·
verified ·
1 Parent(s): 8d6d296

lid: maniguard/robot_config.yaml

Browse files
Files changed (1) hide show
  1. maniguard/robot_config.yaml +68 -0
maniguard/robot_config.yaml ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # ManiGuard datagen-v1 robot config -- single-arm Franka (7 arm joints + 1 gripper), 2 cameras.
2
+ #
3
+ # Maps the datagen LeRobot v2.1 features to LingBot's unified feature space. The datagen
4
+ # datasets ship FLAT keys (state / actions / image_left / wrist_image) instead of the
5
+ # observation.* names used by the RoboTwin sample. That is fine: `origin_keys` is a
6
+ # free-form lookup into the LeRobot item (see lingbotvla/data/vla_data/utils.py --
7
+ # `out_item[target_key] = item[convert_info['origin_keys']]`), and check_robot_config only
8
+ # validates the TARGET side (the unified names must be declared in the training config's
9
+ # data.joints / data.cameras). So no dataset conversion is required: the six datagen
10
+ # datasets stay read-only and byte-identical to the ones the pi0.5 / pi0 / GR00T / SmolVLA
11
+ # tracks train on -- the whole point of the ManiGuard benchmark's same-data guarantee.
12
+ #
13
+ # 8-D layout of both `state` and `actions`: [arm_q(7), gripper(1)]
14
+ # arm.position <- [0:7)
15
+ # effector.position <- [7:8)
16
+ # The unified vector is 55-D; the dims we do not fill are padded/masked by the loader
17
+ # (data.joints keeps the pretraining-aligned sizes, incl. an unused end.position entry).
18
+ #
19
+ # subtract_state: False on BOTH features -- the model learns ABSOLUTE joint targets.
20
+ # This follows LingBot's own simulation recipe (configs/robot_configs/robotwin.yaml, where
21
+ # both features use False; state-relative arm actions are the recommendation for REAL-robot
22
+ # data) and matches our datasets, whose `actions` are absolute joint positions.
23
+ # => At eval the server's output is fed straight to the JointController with NO
24
+ # delta/un-relative step (same contract as SmolVLA; pi0.5/pi0/GR00T do add state back).
25
+ #
26
+ # Cameras: the policy consumes 2 views -- the `left` overview + wrist -- identical to the
27
+ # other four base models (benchmark parity). The datagen datasets also ship three more
28
+ # overviews (image_opposite / image_right / image_left_shoulder); they are simply not mapped.
29
+ #
30
+ # norm_stats below is a DEFAULT: every family has its own statistics, so run_sft.sh passes
31
+ # `--data.norm_stats_file assets/norm_stats/maniguard_<family>.json` per run, which takes
32
+ # precedence (FeatureTransform: an explicit norm_stats_path overrides the robot config's).
33
+
34
+ states:
35
+ - observation.state.arm.position:
36
+ origin_keys:
37
+ - state:
38
+ start: 0
39
+ end: 7
40
+
41
+ - observation.state.effector.position:
42
+ origin_keys:
43
+ - state:
44
+ start: 7
45
+ end: 8
46
+
47
+ actions:
48
+ - action.arm.position:
49
+ origin_keys:
50
+ - actions:
51
+ start: 0
52
+ end: 7
53
+ subtract_state: False
54
+
55
+ - action.effector.position:
56
+ origin_keys:
57
+ - actions:
58
+ start: 7
59
+ end: 8
60
+ subtract_state: False
61
+
62
+ images:
63
+ - observation.images.camera_top:
64
+ origin_keys: image_left
65
+ - observation.images.camera_wrist_left:
66
+ origin_keys: wrist_image
67
+
68
+ norm_stats: assets/norm_stats/maniguard_clutter.json