Skip to content

Commit bcbf910

Browse files
committed
feat(groot): add UNITREE_G1_SONIC embodiment config
Add data config for the new UNITREE_G1_SONIC embodiment from Isaac-GR00T (NVIDIA/Isaac-GR00T@3df8b38). This is a posttrain embodiment using the SONIC whole-body controller where the VLA action space consists of motion tokens + hand joint commands. Config details: - State: full body (legs, waist, arms, hands) + projected_gravity - Action: motion_token, left/right_hand_joints (SONIC latents) - Observation: single frame (index 0) - Action horizon: 40 steps References: - https://github.com/NVIDIA/Isaac-GR00T/blob/3df8b38/gr00t/data/embodiment_tags.py#L105 - https://github.com/NVIDIA/Isaac-GR00T/blob/3df8b38/gr00t/configs/data/embodiment_configs.py
1 parent 07fce7f commit bcbf910

3 files changed

Lines changed: 93 additions & 2 deletions

File tree

strands_robots/policies/groot/data_configs.json

Lines changed: 70 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -968,11 +968,80 @@
968968
},
969969
"oxe_droid_relative_eef_relative_joint": {
970970
"_extends": "oxe_droid"
971+
},
972+
"unitree_g1_sonic": {
973+
"video_keys": [
974+
"video.ego_view"
975+
],
976+
"state_keys": [
977+
"state.left_leg",
978+
"state.right_leg",
979+
"state.waist",
980+
"state.left_arm",
981+
"state.right_arm",
982+
"state.left_hand",
983+
"state.right_hand",
984+
"state.projected_gravity"
985+
],
986+
"action_keys": [
987+
"action.motion_token",
988+
"action.left_hand_joints",
989+
"action.right_hand_joints"
990+
],
991+
"language_keys": [
992+
"annotation.human.task_description"
993+
],
994+
"observation_indices": [
995+
0
996+
],
997+
"action_indices": [
998+
0,
999+
1,
1000+
2,
1001+
3,
1002+
4,
1003+
5,
1004+
6,
1005+
7,
1006+
8,
1007+
9,
1008+
10,
1009+
11,
1010+
12,
1011+
13,
1012+
14,
1013+
15,
1014+
16,
1015+
17,
1016+
18,
1017+
19,
1018+
20,
1019+
21,
1020+
22,
1021+
23,
1022+
24,
1023+
25,
1024+
26,
1025+
27,
1026+
28,
1027+
29,
1028+
30,
1029+
31,
1030+
32,
1031+
33,
1032+
34,
1033+
35,
1034+
36,
1035+
37,
1036+
38,
1037+
39
1038+
]
9711039
}
9721040
},
9731041
"aliases": {
9741042
"agibot_dual_arm": "agibot_dual_arm_gripper",
9751043
"real_g1_relative_eef_relative_joints": "unitree_g1_real",
976-
"oxe_droid_rel": "oxe_droid_relative_eef_relative_joint"
1044+
"oxe_droid_rel": "oxe_droid_relative_eef_relative_joint",
1045+
"unitree_g1_sonic": "unitree_g1_sonic"
9771046
}
9781047
}

strands_robots/tools/gr00t_inference.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,8 @@ def gr00t_inference(
7676
7777
**Unitree G1 humanoid:**
7878
``unitree_g1``, ``unitree_g1_full_body``, ``unitree_g1_locomanip``,
79-
``unitree_g1_real`` (N1.7 REAL_G1 embodiment - locomotion + bimanual manipulation)
79+
``unitree_g1_real`` (N1.7 REAL_G1 embodiment — locomotion + bimanual manipulation),
80+
``unitree_g1_sonic`` (SONIC whole-body controller — VLA action space is SONIC latents)
8081
8182
**Franka Panda manipulators:**
8283
``single_panda_gripper``, ``bimanual_panda_gripper``, ``bimanual_panda_hand``

tests/policies/groot/test_data_config.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,27 @@ def test_unitree_g1_real_n17_schema(self):
182182
assert config.observation_indices == [-20, 0]
183183
assert config.action_indices == list(range(40))
184184

185+
def test_unitree_g1_sonic_schema(self):
186+
"""UNITREE_G1_SONIC — whole-body controller with SONIC latent action space.
187+
188+
Uses motion_token + hand joints as action keys with 40-step horizon.
189+
State includes projected_gravity for proprioception.
190+
"""
191+
config = DATA_CONFIG_MAP["unitree_g1_sonic"]
192+
assert "video.ego_view" in config.video_keys
193+
# Full body state with projected gravity
194+
assert "state.left_leg" in config.state_keys
195+
assert "state.right_leg" in config.state_keys
196+
assert "state.projected_gravity" in config.state_keys
197+
# SONIC latent action space
198+
assert "action.motion_token" in config.action_keys
199+
assert "action.left_hand_joints" in config.action_keys
200+
assert "action.right_hand_joints" in config.action_keys
201+
# Single observation frame, 40-step action horizon
202+
assert config.observation_indices == [0]
203+
assert config.action_indices == list(range(40))
204+
205+
185206
def test_unitree_g1_real_alias(self):
186207
"""The REAL_G1 embodiment tag value resolves to unitree_g1_real."""
187208
alias = DATA_CONFIG_MAP["real_g1_relative_eef_relative_joints"]

0 commit comments

Comments
 (0)