ctessler commited on
Commit
6fdec67
·
verified ·
1 Parent(s): 6d59320

Publish native Metatron v1 G1 package, model card and artifact index

Browse files
G1/LICENSE.pdf ADDED
Binary file (79 kB). View file
 
G1/MODEL_CARD.md ADDED
@@ -0,0 +1,155 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Metatron v1
2
+
3
+ ## License
4
+
5
+ Model license: NVIDIA Open Model License
6
+
7
+ The model weights, checkpoints, serialized model configurations and exported
8
+ models are licensed under the [NVIDIA Open Model License](LICENSE.pdf).
9
+ See [NOTICE.txt](NOTICE.txt) for attribution.
10
+
11
+ - Deployment Geography: Global.
12
+ - Use Case: Researchers and developers running G1 motion control, recovery and
13
+ interaction in compatible simulators or supervised real-G1 deployment workflows.
14
+ - Release: Metatron v1; native package hosted in `nvidia/Metatron-v1/G1`.
15
+ Use the pinned revision selected by the ProtoMotions download helper. No public
16
+ ProtoMotions release tag is asserted by this model card.
17
+ Include both files when
18
+ redistributing these artifacts.
19
+
20
+ ProtoMotions source code remains Apache-2.0. Training datasets and robot assets
21
+ have separate terms; this model license does not grant rights to those materials.
22
+
23
+ ## Overview
24
+
25
+ Metatron v1 is a Unitree G1 policy for motion control, recovery and
26
+ scene-conditioned interaction. It supports sparse motion goals, velocity
27
+ commands and scene inputs.
28
+
29
+ | Field | Value |
30
+ | --- | --- |
31
+ | Family | MaskedMimic spherical conditional VAE |
32
+ | Robot | Unitree G1, 29 actions |
33
+ | Motion corpus | BONES, AMASS/LAFAN, recovery and SAMP interaction data |
34
+ | Primary checkpoint | `inference_last.ckpt` |
35
+
36
+ ## Intended Use
37
+
38
+ - Control G1 motion from partial future-pose and velocity commands.
39
+ - Perform recovery and scene-conditioned interaction.
40
+ - Run in simulation or deploy on a real Unitree G1.
41
+
42
+ ## Training
43
+
44
+ - Training simulator: **IsaacLab**.
45
+ - Training method: supervised imitation from frozen motion-tracking, recovery
46
+ and scene-interaction experts.
47
+ - Training data: BONES, AMASS/LAFAN, fall recovery and SAMP scene interaction.
48
+ - Architecture: 64-dimensional spherical latent, six-layer, four-head,
49
+ 1024-wide Transformer prior and conditioned action decoder.
50
+
51
+ ## Inputs and Outputs
52
+
53
+ The policy consumes current and historical robot state and actions, masked
54
+ global/local future-pose targets, style samples, planar velocity commands and up
55
+ to two scene-box tokens. It outputs 29 raw actions, converted to motor commands
56
+ by the configured G1 PD mapping. Inference uses the learned prior without
57
+ external teachers.
58
+
59
+ The exact body/joint order, history layout, normalization, model dimensions and
60
+ action mapping are stored in `resolved_configs.json`.
61
+
62
+ ## Software Integration
63
+
64
+ Native inference uses PyTorch and ProtoMotions, with simulator dependencies from
65
+ the matching ProtoMotions checkout. Linux is the native reference environment;
66
+ this is not a claim that every backend, OS or GPU has been qualified. Browser
67
+ exports and their runtime requirements are documented in the repository's
68
+ [main model card](../README.md).
69
+
70
+ ## Artifacts
71
+
72
+ - `inference_last.ckpt`: policy weights and normalization statistics, including
73
+ the posterior; optimizer state is omitted.
74
+ - `resolved_configs.json`: authoritative native inference configuration.
75
+ - `experiment_config.py` and `config.yaml`: configuration reconstruction code
76
+ and arguments.
77
+ - `provenance.json`: artifact integrity metadata.
78
+
79
+ ## Runtime Support
80
+
81
+ - Training simulator: **IsaacLab**.
82
+ - Simulator expectation: **Expected to transfer**.
83
+ - Also works in other simulators, including **MuJoCo**, and on the **real G1**.
84
+ - Preserve the trained observation, action, history and control-rate contracts.
85
+
86
+ For native playback, install ProtoMotions and its MuJoCo requirements, then run
87
+ from the repository root (the helper downloads a pinned package from this Hub):
88
+
89
+ ```bash
90
+ python scripts/download_metatron.py
91
+ python protomotions/inference_agent.py --simulator mujoco --num-envs 1 \
92
+ --checkpoint data/pretrained_models/metatron/G1/inference_last.ckpt \
93
+ --inference-config examples/inference/metatron.py
94
+ ```
95
+
96
+ The bundled native preset supports empty scenes and cycles
97
+ idle/location/steering/reaching with `X`.
98
+
99
+ ### Scene Support
100
+
101
+ The **weights retain scene conditioning**. The PyTorch prior accepts
102
+ `scene_box_corners` (two boxes, eight XYZ corners each, in the root-heading
103
+ frame) and `scene_box_mask` (`true` means visible). Our separately pre-exported
104
+ 39-input ONNX includes the original scene preprocessing and also retains this
105
+ capability. A scene-capable host must supply the matching object measurements.
106
+
107
+ The **native preset and generic re-export disable scenes**: the bundled
108
+ observation functions always produce zero corner tokens and false visibility
109
+ masks. Running `deployment/export_to_onnx.py` on this checkpoint preserves the
110
+ weights but builds that scene-disabled observation path. It does not reproduce
111
+ the scene-capable 39-input ONNX. The preset rejects a furniture scene file
112
+ rather than silently ignoring it.
113
+
114
+ This distinction is intentional: these weights support scenes, but this
115
+ package does not add a scene provider or a SAMP training recipe to ProtoMotions.
116
+
117
+ ## Limitations
118
+
119
+ - This is an inference checkpoint, not a resumable training checkpoint.
120
+ - Training datasets and furniture assets are not included.
121
+ - The basic student recipes do not reproduce the full multi-expert training run.
122
+ - Recovery and interaction can fail depending on goals, initialization and
123
+ physics. Hardware deployment requires robot-side safety limits, supervision
124
+ and an emergency-stop mechanism.
125
+
126
+ ## Provenance
127
+
128
+ This package contains the SAMP-capable G1 policy used for the Metatron web demo,
129
+ with its configuration adapted to the current ProtoMotions runtime.
130
+
131
+ ## Evaluation and Responsible Use
132
+
133
+ The release tests exercise native configuration loading, finite actions through
134
+ MuJoCo rollout/reset, frozen normalization parity and scene-input sensitivity.
135
+ These are integration checks, not a comprehensive task-success or safety benchmark.
136
+ No native throughput or task-success aggregate is published in this card.
137
+
138
+ | Area | Scope and limitations |
139
+ | --- | --- |
140
+ | Bias | Coverage follows the motion corpora and expert rollouts; no demographic fairness evaluation is claimed. |
141
+ | Explainability | A learned conditional policy maps state and partial goals to actions; attention and latent variables are not explanations or guarantees. |
142
+ | Privacy | The package contains model tensors/configs, not raw participant records or motion datasets. No formal privacy guarantee or leakage audit is claimed. |
143
+ | Safety & Security | Not a safety controller. Validate observations, limits and recovery on the intended platform; use supervision and emergency stops on hardware. Load only trusted, verified checkpoint/config packages. |
144
+
145
+ Training motion sources are listed above. Labels are expert actions produced in
146
+ simulation for supervised imitation. Corpus splits, collection protocols and
147
+ demographic breakdowns are not included in this release; consult the source
148
+ dataset documentation and licenses. Testing here refers to release integration
149
+ checks, not an independently curated held-out benchmark. No training motion,
150
+ recovery clip, furniture asset or dataset license is redistributed by this package.
151
+
152
+ ## References
153
+
154
+ - [ProtoMotions source and citation](https://github.com/NVlabs/ProtoMotions)
155
+ - [MaskedMimic](https://research.nvidia.com/labs/par/maskedmimic/)
G1/NOTICE.txt ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ Licensed by NVIDIA Corporation under the NVIDIA Open Model License.
2
+ Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
3
+
4
+ This notice applies to the model weights and serialized model configuration.
5
+ Source code remains Apache-2.0. Robot assets, motion data, furniture and runtime
6
+ dependencies retain their separate licenses.
G1/README.md ADDED
@@ -0,0 +1,30 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Metatron v1 — G1
2
+
3
+ Native PyTorch inference package for the Unitree G1, including policy weights,
4
+ portable resolved configuration and reconstruction recipe. This is the
5
+ SAMP-capable G1 policy, not a SOMA policy or a resumable training checkpoint.
6
+
7
+ See [MODEL_CARD.md](MODEL_CARD.md) for architecture, inputs, scene limitations,
8
+ training provenance and safe use. [LICENSE.pdf](LICENSE.pdf) and
9
+ [NOTICE.txt](NOTICE.txt) must accompany redistributed model artifacts; code is
10
+ Apache-2.0 and third-party data/assets keep their own terms.
11
+
12
+ From a compatible ProtoMotions checkout with MuJoCo dependencies installed:
13
+
14
+ ```bash
15
+ python scripts/download_metatron.py
16
+ python protomotions/inference_agent.py --simulator mujoco --num-envs 1 \
17
+ --checkpoint data/pretrained_models/metatron/G1/inference_last.ckpt \
18
+ --inference-config examples/inference/metatron.py
19
+ ```
20
+
21
+ The helper pins the Hub revision and verifies every file. It includes the
22
+ license and model card. `--configs-only` downloads the small sidecars for config
23
+ tests, not a runnable policy. Avoid mixing files from different revisions.
24
+ The current native preset cycles idle/location/steering/reaching with `X` and
25
+ masks scene inputs. Use the separate `demo/model.onnx` and its paired application
26
+ for the scene-capable browser interface; a generic native re-export is not the
27
+ same graph. `racer/network.onnx` is the six-robot browser interface.
28
+
29
+ No training data, recovery clips or robot meshes are included here. Robot and
30
+ example motion assets are supplied separately by ProtoMotions under their own terms.
G1/config.yaml ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "robot_name": "g1",
3
+ "simulator": "mujoco",
4
+ "num_envs": 1,
5
+ "batch_size": 4,
6
+ "motion_file": "examples/data/g1_crouch_to_run.motion",
7
+ "experiment_path": "data/pretrained_models/metatron/G1/experiment_config.py",
8
+ "experiment_name": "metatron_v1_playback",
9
+ "scenes_file": null,
10
+ "checkpoint": null,
11
+ "headless": true,
12
+ "seed": 0,
13
+ "torch_deterministic": false,
14
+ "overrides": [],
15
+ "create_config_only": true
16
+ }
G1/experiment_config.py ADDED
@@ -0,0 +1,546 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # SPDX-FileCopyrightText: Copyright (c) 2025-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2
+ # SPDX-License-Identifier: Apache-2.0
3
+
4
+ """Reconstruct the scene-conditioned Metatron v1 network for flat-ground play.
5
+
6
+ This recipe preserves the trained module order, normalization and five-body
7
+ order. It is an inference qualification recipe, not a reproduction of the
8
+ four-group training run. Scene tokens are explicitly hidden on this empty
9
+ terrain; furniture interaction needs its own scene observations.
10
+ """
11
+
12
+ from argparse import Namespace
13
+ from typing import Any, List, Optional, Sequence
14
+
15
+ from examples.experiments.masked_mimic.deployable_g1_observations import (
16
+ configure_observations,
17
+ )
18
+ from examples.inference.metatron import (
19
+ empty_scene_corners,
20
+ empty_scene_mask,
21
+ )
22
+ from protomotions.agents.common.config import (
23
+ MLPLayerConfig,
24
+ MLPWithConcatConfig,
25
+ MaskedMeanConfig,
26
+ ModuleContainerConfig,
27
+ ModuleOperationForwardConfig,
28
+ ModuleOperationReshapeConfig,
29
+ ObsProcessorConfig,
30
+ TransformerConfig,
31
+ )
32
+ from protomotions.agents.evaluators.config import MaskedMimicEvaluatorConfig
33
+ from protomotions.agents.supervised.masked_mimic_config import (
34
+ KLDScheduleConfig,
35
+ LatentGeometry,
36
+ MaskedMimicModelConfig,
37
+ MaskedMimicSupervisedAgentConfig,
38
+ MaskedMimicVAEConfig,
39
+ TemporalLossConfig,
40
+ VAENoiseType,
41
+ )
42
+ from protomotions.components.motion_lib import MotionLibConfig
43
+ from protomotions.components.scene_lib import SceneLibConfig
44
+ from protomotions.components.terrains.config import TerrainConfig
45
+ from protomotions.envs.action import make_bm_pd_action_config
46
+ from protomotions.envs.base_env.config import EnvConfig
47
+ from protomotions.envs.body_selection import BodySelection
48
+ from protomotions.envs.context_views import EnvContext
49
+ from protomotions.envs.control.masked_mimic_control import (
50
+ MaskedMimicControlConfig,
51
+ MaskedMimicStyleConfig,
52
+ MaskedMimicVelocityCommandConfig,
53
+ )
54
+ from protomotions.envs.mdp_component import MdpComponent
55
+ from protomotions.envs.motion_manager.config import MimicMotionManagerConfig
56
+ from protomotions.envs.obs.cast import to_float
57
+ from protomotions.envs.obs.humanoid import compute_humanoid_max_coords_observations
58
+ from protomotions.envs.obs.masked_mimic import (
59
+ compute_local_target_poses,
60
+ compute_target_masks_only,
61
+ compute_target_poses_only,
62
+ compute_target_time_offsets,
63
+ )
64
+ from protomotions.envs.obs.target_poses import build_max_coords_target_poses
65
+ from protomotions.envs.sensors.config import (
66
+ IMUSensor,
67
+ JointEncoderSensor,
68
+ LocalizationSensor,
69
+ NoNoise,
70
+ SensorConfig,
71
+ )
72
+ from protomotions.robot_configs.base import RobotConfig
73
+ from protomotions.simulator.base_simulator.config import SimulatorConfig
74
+ from protomotions.utils.experiment_configs import ExperimentConfigs
75
+
76
+ BODY_NAMES = (
77
+ "torso_link",
78
+ "right_ankle_roll_link",
79
+ "left_ankle_roll_link",
80
+ "left_rubber_hand",
81
+ "right_rubber_hand",
82
+ )
83
+ FRAMES = 5
84
+ TOKEN_SIZE = 1024
85
+ LATENT_SIZE = 64
86
+
87
+
88
+ def configure_robot_and_simulator(
89
+ robot_cfg: RobotConfig,
90
+ simulator_cfg: SimulatorConfig,
91
+ args: Namespace,
92
+ ) -> None:
93
+ """Use G1's BM gains, pelvis IMU and 50 Hz policy without perturbations."""
94
+ if args.robot_name != "g1":
95
+ raise ValueError("This checkpoint architecture and body order require G1")
96
+ robot_cfg.update_fields(
97
+ trackable_bodies_subset=list(BODY_NAMES),
98
+ contact_bodies=[],
99
+ contact_partners=[],
100
+ )
101
+ robot_cfg.reset_noise = None
102
+ simulator_cfg.domain_randomization = None
103
+
104
+
105
+ def terrain_config(args: Namespace) -> TerrainConfig:
106
+ """Flat ground, without procedural obstacles."""
107
+ return TerrainConfig(terrain_proportions=[0.0] * 7 + [1.0])
108
+
109
+
110
+ def scene_lib_config(args: Namespace) -> SceneLibConfig:
111
+ """No perceived furniture; reject scenes rather than silently hiding them."""
112
+ if args.scenes_file is not None:
113
+ raise ValueError("Metatron native playback supports empty scenes only")
114
+ return SceneLibConfig(scene_file=None)
115
+
116
+
117
+ def motion_lib_config(args: Namespace) -> MotionLibConfig:
118
+ """Reference clips for reset and optional motion tracking."""
119
+ return MotionLibConfig(motion_file=args.motion_file)
120
+
121
+
122
+ def env_config(robot_cfg: RobotConfig, args: Namespace) -> EnvConfig:
123
+ """Bind the saved observation contract to current sensor/history owners."""
124
+ bodies = BodySelection.named(*BODY_NAMES)
125
+ cfg = EnvConfig(
126
+ motion_manager=MimicMotionManagerConfig(init_start_prob=1.0),
127
+ action_config=make_bm_pd_action_config(robot_cfg),
128
+ sensors=SensorConfig(
129
+ joint_encoders=JointEncoderSensor(
130
+ pos_noise=NoNoise("inference"),
131
+ vel_noise=NoNoise("inference"),
132
+ ),
133
+ imu=IMUSensor(
134
+ quat_noise=NoNoise("inference"),
135
+ gyro_noise=NoNoise("inference"),
136
+ ),
137
+ localization=LocalizationSensor(
138
+ body_name="pelvis",
139
+ noise=NoNoise("inference"),
140
+ ),
141
+ ),
142
+ control_components={
143
+ "masked_mimic": MaskedMimicControlConfig(
144
+ future_steps=(1, 2, 5, 7, 12, 18, 25),
145
+ reference_height_smoothing_seconds=0.1,
146
+ num_masked_future_steps=FRAMES,
147
+ sparse_target_condition_probability=0.5,
148
+ local_target_condition_probability=0.5,
149
+ anchor_pose_submasking=True,
150
+ style=MaskedMimicStyleConfig(),
151
+ velocity_command=MaskedMimicVelocityCommandConfig(),
152
+ )
153
+ },
154
+ observation_components={
155
+ "max_coords_obs": MdpComponent.from_kernel(
156
+ compute_humanoid_max_coords_observations,
157
+ ),
158
+ "mimic_target_poses": MdpComponent.from_kernel(
159
+ build_max_coords_target_poses,
160
+ with_velocities=True,
161
+ with_relative=True,
162
+ ),
163
+ "masked_mimic_target_poses": MdpComponent.from_kernel(
164
+ compute_target_poses_only,
165
+ conditionable_body_ids=bodies,
166
+ include_root_relative=False,
167
+ anchor_translation_mask=EnvContext.masked_mimic.anchor_translation_mask,
168
+ anchor_rotation_mask=EnvContext.masked_mimic.anchor_rotation_mask,
169
+ ),
170
+ "masked_mimic_local_target_poses": MdpComponent.from_kernel(
171
+ compute_local_target_poses,
172
+ conditionable_body_ids=bodies,
173
+ ),
174
+ "previous_actions": MdpComponent.from_kernel(
175
+ to_float,
176
+ x=EnvContext.current_action,
177
+ ),
178
+ "scene_box_corners": MdpComponent.from_kernel(empty_scene_corners),
179
+ "scene_box_mask": MdpComponent.from_kernel(empty_scene_mask),
180
+ },
181
+ )
182
+ configure_observations(robot_cfg, cfg)
183
+ for name, path in (
184
+ ("poses", EnvContext.masked_mimic.style_pose_samples),
185
+ ("velocities", EnvContext.masked_mimic.style_velocity_samples),
186
+ ("masks", EnvContext.masked_mimic.style_condition_masks),
187
+ ("frame_masks", EnvContext.masked_mimic.style_frame_masks),
188
+ ):
189
+ cfg.observation_components["masked_mimic_style_" + name] = (
190
+ MdpComponent.from_kernel(to_float, x=path)
191
+ )
192
+ for prefix, masks, times, frames in (
193
+ (
194
+ "masked_mimic",
195
+ EnvContext.masked_mimic.target_bodies_masks,
196
+ EnvContext.masked_mimic.time_offsets,
197
+ EnvContext.masked_mimic.target_poses_masks,
198
+ ),
199
+ (
200
+ "masked_mimic_local",
201
+ EnvContext.masked_mimic.local_target_bodies_masks,
202
+ EnvContext.masked_mimic.local_time_offsets,
203
+ EnvContext.masked_mimic.local_target_poses_masks,
204
+ ),
205
+ ):
206
+ submasks = {}
207
+ if prefix == "masked_mimic":
208
+ submasks = dict(
209
+ anchor_translation_mask=EnvContext.masked_mimic.anchor_translation_mask,
210
+ anchor_rotation_mask=EnvContext.masked_mimic.anchor_rotation_mask,
211
+ )
212
+ cfg.observation_components[prefix + "_target_masks"] = MdpComponent.from_kernel(
213
+ compute_target_masks_only,
214
+ conditionable_body_ids=bodies,
215
+ masked_mimic_target_bodies_masks=masks,
216
+ **submasks,
217
+ )
218
+ cfg.observation_components[prefix + "_target_times"] = MdpComponent.from_kernel(
219
+ compute_target_time_offsets,
220
+ masked_mimic_time_offsets=times,
221
+ )
222
+ cfg.observation_components[prefix + "_target_poses_masks"] = (
223
+ MdpComponent.from_kernel(to_float, x=frames)
224
+ )
225
+ return cfg
226
+
227
+
228
+ def _obs(
229
+ keys: List[str],
230
+ outputs: List[str],
231
+ *,
232
+ frames: Optional[int] = None,
233
+ normalize: bool = True,
234
+ ) -> ObsProcessorConfig:
235
+ operations = []
236
+ if frames is not None:
237
+ operations.append(ModuleOperationReshapeConfig(["batch_size", frames, -1]))
238
+ if normalize:
239
+ operations.append(ModuleOperationForwardConfig())
240
+ return ObsProcessorConfig(
241
+ in_keys=keys,
242
+ out_keys=outputs,
243
+ normalize_obs=normalize,
244
+ module_operations=operations,
245
+ )
246
+
247
+
248
+ def _mlp(
249
+ keys: List[str],
250
+ output: str,
251
+ size: int = TOKEN_SIZE,
252
+ *,
253
+ widths: Sequence[int] = (1024,) * 3,
254
+ frames: Optional[int] = None,
255
+ output_activation: Optional[str] = None,
256
+ ) -> MLPWithConcatConfig:
257
+ operations = [ModuleOperationForwardConfig()]
258
+ if frames is not None:
259
+ operations.insert(0, ModuleOperationReshapeConfig(["batch_size", frames, -1]))
260
+ return MLPWithConcatConfig(
261
+ in_keys=keys,
262
+ out_keys=[output],
263
+ num_out=size,
264
+ layers=[MLPLayerConfig(units=n, activation="silu") for n in widths],
265
+ module_operations=operations,
266
+ output_activation=output_activation,
267
+ )
268
+
269
+
270
+ def _head(keys: List[str], output: str) -> MLPWithConcatConfig:
271
+ return _mlp(keys, output, LATENT_SIZE, widths=(512, 256, 128))
272
+
273
+
274
+ def _container(models: List[Any], outputs: List[str]) -> ModuleContainerConfig:
275
+ produced = {key for model in models for key in model.out_keys}
276
+ inputs = list(
277
+ dict.fromkeys(
278
+ key for model in models for key in model.in_keys if key not in produced
279
+ )
280
+ )
281
+ return ModuleContainerConfig(models=models, in_keys=inputs, out_keys=outputs)
282
+
283
+
284
+ def _prior() -> ModuleContainerConfig:
285
+ # Order matches the packaged state_dict. The two time processors contain
286
+ # identical copies of the original shared statistics: independent standard
287
+ # processors preserve inference without extending the common module API.
288
+ models = [
289
+ _obs(["scene_box_corners"], ["scene_box_norm"]),
290
+ _mlp(["scene_box_norm"], "scene_box_tokens", widths=(1024,)),
291
+ _obs(["previous_actions"], ["prior_previous_actions_norm"]),
292
+ _obs(["reduced_coords_obs"], ["prior_reduced_coords_norm"]),
293
+ _obs(["masked_mimic_local_target_poses"], ["local_target_poses_seq"], frames=5),
294
+ _obs(["fk_masked_mimic_target_poses"], ["global_target_poses_seq"], frames=5),
295
+ _obs(
296
+ ["masked_mimic_local_target_masks"],
297
+ ["local_target_masks_seq"],
298
+ frames=5,
299
+ normalize=False,
300
+ ),
301
+ _obs(
302
+ ["masked_mimic_target_masks"],
303
+ ["global_target_masks_seq"],
304
+ frames=5,
305
+ normalize=False,
306
+ ),
307
+ _obs(
308
+ ["masked_mimic_target_times"],
309
+ ["target_times_seq"],
310
+ frames=5,
311
+ ),
312
+ _obs(
313
+ ["masked_mimic_local_target_times"],
314
+ ["local_target_times_seq"],
315
+ frames=5,
316
+ ),
317
+ _obs(["historical_proprioception"], ["historical_pose_obs_seq"], frames=5),
318
+ _obs(["masked_mimic_style_poses"], ["style_poses_seq"], frames=5),
319
+ _obs(["masked_mimic_style_velocities"], ["style_velocities_seq"], frames=5),
320
+ _obs(
321
+ ["masked_mimic_style_masks"],
322
+ ["style_condition_masks_seq"],
323
+ frames=5,
324
+ normalize=False,
325
+ ),
326
+ _obs(
327
+ ["masked_mimic_style_frame_masks"],
328
+ ["style_frame_masks_seq"],
329
+ frames=5,
330
+ normalize=False,
331
+ ),
332
+ _obs(["fk_max_coords_obs"], ["prior_fk_max_coords_obs_norm"]),
333
+ _mlp(
334
+ [
335
+ "prior_fk_max_coords_obs_norm",
336
+ "prior_reduced_coords_norm",
337
+ "prior_previous_actions_norm",
338
+ ],
339
+ "current_state_token",
340
+ frames=1,
341
+ ),
342
+ _mlp(
343
+ ["masked_mimic_velocity_command", "masked_mimic_velocity_command_mask"],
344
+ "masked_mimic_velocity_command_token",
345
+ frames=1,
346
+ ),
347
+ _mlp(
348
+ ["style_poses_seq", "style_velocities_seq", "style_condition_masks_seq"],
349
+ "masked_mimic_style_frame_tokens",
350
+ frames=5,
351
+ ),
352
+ MaskedMeanConfig(
353
+ in_keys=["masked_mimic_style_frame_tokens", "style_frame_masks_seq"],
354
+ out_keys=["masked_mimic_style_token"],
355
+ ),
356
+ _mlp(
357
+ [
358
+ "local_target_poses_seq",
359
+ "local_target_masks_seq",
360
+ "local_target_times_seq",
361
+ ],
362
+ "masked_mimic_local_target_token",
363
+ frames=5,
364
+ ),
365
+ _mlp(
366
+ ["global_target_poses_seq", "global_target_masks_seq", "target_times_seq"],
367
+ "masked_mimic_global_target_token",
368
+ frames=5,
369
+ ),
370
+ _mlp(["historical_pose_obs_seq"], "historical_pose_obs_token", frames=5),
371
+ TransformerConfig(
372
+ in_keys=[
373
+ "current_state_token",
374
+ "masked_mimic_velocity_command_token",
375
+ "masked_mimic_local_target_token",
376
+ "masked_mimic_global_target_token",
377
+ "masked_mimic_style_token",
378
+ "historical_pose_obs_token",
379
+ "masked_mimic_velocity_command_mask",
380
+ "masked_mimic_local_target_poses_masks",
381
+ "masked_mimic_target_poses_masks",
382
+ "masked_mimic_style_frame_masks",
383
+ "scene_box_tokens",
384
+ "scene_box_mask",
385
+ ],
386
+ out_keys=["transformer_out"],
387
+ input_and_mask_mapping={
388
+ "masked_mimic_velocity_command_token": (
389
+ "masked_mimic_velocity_command_mask"
390
+ ),
391
+ "masked_mimic_local_target_token": (
392
+ "masked_mimic_local_target_poses_masks"
393
+ ),
394
+ "masked_mimic_global_target_token": "masked_mimic_target_poses_masks",
395
+ "masked_mimic_style_token": "masked_mimic_style_frame_masks",
396
+ "scene_box_tokens": "scene_box_mask",
397
+ },
398
+ transformer_token_size=1024,
399
+ latent_dim=1024,
400
+ num_heads=4,
401
+ ff_size=4096,
402
+ num_layers=6,
403
+ activation="silu",
404
+ output_activation="silu",
405
+ dropout=0.0,
406
+ ),
407
+ _head(["transformer_out"], "decoder_condition"),
408
+ _head(["transformer_out"], "prior_mu"),
409
+ _head(["transformer_out"], "prior_logvar"),
410
+ ]
411
+ return _container(models, ["prior_mu", "prior_logvar", "decoder_condition"])
412
+
413
+
414
+ def _encoder() -> ModuleContainerConfig:
415
+ models = [
416
+ _obs(["max_coords_obs"], ["max_coords_obs_norm"]),
417
+ _obs(["mimic_target_poses"], ["mimic_target_poses_norm"]),
418
+ _obs(
419
+ ["masked_mimic_local_target_poses"],
420
+ ["masked_mimic_local_target_poses_norm"],
421
+ ),
422
+ _obs(["masked_mimic_target_poses"], ["masked_mimic_global_target_poses_norm"]),
423
+ _obs(
424
+ ["masked_mimic_target_times"],
425
+ ["masked_mimic_target_times_norm"],
426
+ ),
427
+ _obs(
428
+ ["masked_mimic_local_target_times"],
429
+ ["masked_mimic_local_target_times_norm"],
430
+ ),
431
+ _obs(["masked_mimic_style_poses"], ["masked_mimic_style_poses_norm"]),
432
+ _obs(["masked_mimic_style_velocities"], ["masked_mimic_style_velocities_norm"]),
433
+ ObsProcessorConfig(
434
+ in_keys=["masked_mimic_style_masks"],
435
+ out_keys=["masked_mimic_style_masks_flat"],
436
+ normalize_obs=False,
437
+ module_operations=[ModuleOperationReshapeConfig(["batch_size", -1])],
438
+ ),
439
+ _mlp(
440
+ [
441
+ "masked_mimic_local_target_poses_norm",
442
+ "masked_mimic_local_target_masks",
443
+ "masked_mimic_local_target_times_norm",
444
+ "masked_mimic_local_target_poses_masks",
445
+ ],
446
+ "encoder_local_target_features",
447
+ 256,
448
+ widths=(512, 512),
449
+ ),
450
+ _mlp(
451
+ [
452
+ "masked_mimic_global_target_poses_norm",
453
+ "masked_mimic_target_masks",
454
+ "masked_mimic_target_times_norm",
455
+ "masked_mimic_target_poses_masks",
456
+ ],
457
+ "encoder_global_target_features",
458
+ 256,
459
+ widths=(512, 512),
460
+ ),
461
+ _mlp(
462
+ [
463
+ "max_coords_obs_norm",
464
+ "mimic_target_poses_norm",
465
+ "encoder_local_target_features",
466
+ "encoder_global_target_features",
467
+ "masked_mimic_style_poses_norm",
468
+ "masked_mimic_style_velocities_norm",
469
+ "masked_mimic_style_masks_flat",
470
+ "masked_mimic_style_frame_masks",
471
+ "masked_mimic_velocity_command",
472
+ "masked_mimic_velocity_command_mask",
473
+ ],
474
+ "encoder_trunk_out",
475
+ 512,
476
+ widths=(1024,) * 5,
477
+ output_activation="silu",
478
+ ),
479
+ _head(["encoder_trunk_out"], "encoder_mu"),
480
+ _head(["encoder_trunk_out"], "encoder_logvar"),
481
+ ]
482
+ return _container(models, ["encoder_mu", "encoder_logvar"])
483
+
484
+
485
+ def _decoder() -> ModuleContainerConfig:
486
+ return _container(
487
+ [
488
+ _obs(["reduced_coords_obs"], ["decoder_reduced_coords_norm"]),
489
+ _obs(["fk_max_coords_obs"], ["fk_max_coords_obs_norm"]),
490
+ _obs(["previous_actions"], ["previous_actions_norm"]),
491
+ _head(["decoder_condition", "vae_latent"], "solution_condition_features"),
492
+ _head(["solution_condition_features"], "latent_dynamics_predicted"),
493
+ _mlp(
494
+ [
495
+ "fk_max_coords_obs_norm",
496
+ "previous_actions_norm",
497
+ "solution_condition_features",
498
+ "decoder_reduced_coords_norm",
499
+ ],
500
+ "actor_trunk_out",
501
+ 29,
502
+ ),
503
+ ],
504
+ ["actor_trunk_out", "solution_condition_features", "latent_dynamics_predicted"],
505
+ )
506
+
507
+
508
+ def agent_config(
509
+ robot_cfg: RobotConfig, env_cfg: EnvConfig, args: Namespace
510
+ ) -> MaskedMimicSupervisedAgentConfig:
511
+ """The learned spherical prior and conditional decoder, with no external teacher."""
512
+ return MaskedMimicSupervisedAgentConfig(
513
+ model=MaskedMimicModelConfig(
514
+ encoder=_encoder(),
515
+ prior=_prior(),
516
+ trunk=_decoder(),
517
+ vae=MaskedMimicVAEConfig(
518
+ vae_latent_dim=64,
519
+ latent_geometry=LatentGeometry.SPHERE,
520
+ vae_noise_type=VAENoiseType.ZEROS,
521
+ prior_mean_unit_norm_coeff=0.001,
522
+ kld_schedule=KLDScheduleConfig(
523
+ start_epoch=500, end_epoch=2000, cyclical=True
524
+ ),
525
+ ),
526
+ temporal_losses=[
527
+ TemporalLossConfig("privileged_action", 0.05),
528
+ TemporalLossConfig("solution_condition_features", 0.001),
529
+ TemporalLossConfig(
530
+ "decoder_condition",
531
+ 0.001,
532
+ prediction_key="latent_dynamics_predicted",
533
+ forward=True,
534
+ ),
535
+ ],
536
+ ),
537
+ evaluator=MaskedMimicEvaluatorConfig(),
538
+ batch_size=args.batch_size,
539
+ training_max_steps=args.training_max_steps,
540
+ )
541
+
542
+
543
+ def apply_inference_overrides(configs: ExperimentConfigs, args: Namespace) -> None:
544
+ """Keep the saved sensor mounts and use deterministic prior inference."""
545
+ configs.simulator.domain_randomization = None
546
+ configs.agent.model.vae.vae_noise_type = VAENoiseType.ZEROS
G1/inference_last.ckpt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:e5fc2e47a8f9ee9b96a674cabbf236b3c510f887427645a14bc1779b10f0b43a
3
+ size 459455983
G1/provenance.json ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "name": "Metatron v1",
3
+ "robot": "g1",
4
+ "inference_checkpoint": "inference_last.ckpt",
5
+ "inference_checkpoint_sha256": "e5fc2e47a8f9ee9b96a674cabbf236b3c510f887427645a14bc1779b10f0b43a",
6
+ "inference_checkpoint_bytes": 459455983,
7
+ "model_tensor_count": 278,
8
+ "resumable": false
9
+ }
G1/resolved_configs.json ADDED
@@ -0,0 +1,2601 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "format_version": 1,
3
+ "protomotions": "3.1",
4
+ "configs": {
5
+ "robot": {
6
+ "$type": "protomotions.robot_configs.g1.G1RobotConfig",
7
+ "asset": {
8
+ "$type": "protomotions.robot_configs.base.RobotAssetConfig",
9
+ "asset_root": "protomotions/data/assets",
10
+ "self_collisions": true,
11
+ "asset_file_name": "mjcf/g1_holo_compat.xml",
12
+ "replace_cylinder_with_capsule": true,
13
+ "thickness": 0.01,
14
+ "max_angular_velocity": 1000.0,
15
+ "max_linear_velocity": 1000.0,
16
+ "density": 0.001,
17
+ "angular_damping": 0.0,
18
+ "linear_damping": 0.0,
19
+ "disable_gravity": null,
20
+ "fix_base_link": null
21
+ },
22
+ "common_naming_to_robot_body_names": {
23
+ "all_left_foot_bodies": [
24
+ "left_ankle_roll_link"
25
+ ],
26
+ "all_right_foot_bodies": [
27
+ "right_ankle_roll_link"
28
+ ],
29
+ "all_left_hand_bodies": [
30
+ "left_rubber_hand"
31
+ ],
32
+ "all_right_hand_bodies": [
33
+ "right_rubber_hand"
34
+ ],
35
+ "head_body_name": [
36
+ "head"
37
+ ],
38
+ "torso_body_name": [
39
+ "torso_link"
40
+ ]
41
+ },
42
+ "default_root_height": 0.8,
43
+ "semantic_forward_axis_xy": [
44
+ 1.0,
45
+ 0.0
46
+ ],
47
+ "default_dof_pos": {
48
+ "$tensor": [
49
+ -0.31200000643730164,
50
+ 0.0,
51
+ 0.0,
52
+ 0.6690000295639038,
53
+ -0.3630000054836273,
54
+ 0.0,
55
+ -0.31200000643730164,
56
+ 0.0,
57
+ 0.0,
58
+ 0.6690000295639038,
59
+ -0.3630000054836273,
60
+ 0.0,
61
+ 0.0,
62
+ 0.0,
63
+ 0.0,
64
+ 0.20000000298023224,
65
+ 0.20000000298023224,
66
+ 0.0,
67
+ 0.6000000238418579,
68
+ 0.0,
69
+ 0.0,
70
+ 0.0,
71
+ 0.20000000298023224,
72
+ -0.20000000298023224,
73
+ 0.0,
74
+ 0.6000000238418579,
75
+ 0.0,
76
+ 0.0,
77
+ 0.0
78
+ ],
79
+ "dtype": "float32"
80
+ },
81
+ "contact_bodies": [],
82
+ "contact_partners": [],
83
+ "trackable_bodies_subset": [
84
+ "torso_link",
85
+ "right_ankle_roll_link",
86
+ "left_ankle_roll_link",
87
+ "left_rubber_hand",
88
+ "right_rubber_hand"
89
+ ],
90
+ "non_termination_contact_bodies": "all",
91
+ "init_state": null,
92
+ "reset_noise": null,
93
+ "mimic_small_marker_bodies": null,
94
+ "anchor_body_name": "torso_link",
95
+ "imu_body_name": "pelvis",
96
+ "imu_mount_quat": [
97
+ 0.0,
98
+ 0.0,
99
+ 0.0,
100
+ 1.0
101
+ ],
102
+ "contact_pairs_multiplier": 16,
103
+ "control": {
104
+ "$type": "protomotions.robot_configs.base.ControlConfig",
105
+ "override_control_info": {
106
+ ".*_hip_(pitch|yaw)_joint": {
107
+ "$type": "protomotions.components.pose_lib.ControlInfo",
108
+ "stiffness": 40.17923847137318,
109
+ "damping": 2.5578897650279457,
110
+ "armature": 0.01017752,
111
+ "friction": null,
112
+ "effort_limit": 88,
113
+ "velocity_limit": 32
114
+ },
115
+ ".*_hip_roll_joint": {
116
+ "$type": "protomotions.components.pose_lib.ControlInfo",
117
+ "stiffness": 99.09842777666113,
118
+ "damping": 6.3088018534966395,
119
+ "armature": 0.025101925,
120
+ "friction": null,
121
+ "effort_limit": 139,
122
+ "velocity_limit": 20
123
+ },
124
+ ".*_knee_joint": {
125
+ "$type": "protomotions.components.pose_lib.ControlInfo",
126
+ "stiffness": 99.09842777666113,
127
+ "damping": 6.3088018534966395,
128
+ "armature": 0.025101925,
129
+ "friction": null,
130
+ "effort_limit": 139,
131
+ "velocity_limit": 20
132
+ },
133
+ ".*_ankle_.*": {
134
+ "$type": "protomotions.components.pose_lib.ControlInfo",
135
+ "stiffness": 28.50124619574858,
136
+ "damping": 1.814445686584846,
137
+ "armature": 0.00721945,
138
+ "friction": null,
139
+ "effort_limit": 50,
140
+ "velocity_limit": 37
141
+ },
142
+ "waist_yaw_joint": {
143
+ "$type": "protomotions.components.pose_lib.ControlInfo",
144
+ "stiffness": 40.17923847137318,
145
+ "damping": 2.5578897650279457,
146
+ "armature": 0.01017752,
147
+ "friction": null,
148
+ "effort_limit": 88,
149
+ "velocity_limit": 32
150
+ },
151
+ "waist_(roll|pitch)_joint": {
152
+ "$type": "protomotions.components.pose_lib.ControlInfo",
153
+ "stiffness": 28.50124619574858,
154
+ "damping": 1.814445686584846,
155
+ "armature": 0.00721945,
156
+ "friction": null,
157
+ "effort_limit": 50,
158
+ "velocity_limit": 37
159
+ },
160
+ ".*_(shoulder|elbow)_.*": {
161
+ "$type": "protomotions.components.pose_lib.ControlInfo",
162
+ "stiffness": 14.25062309787429,
163
+ "damping": 0.907222843292423,
164
+ "armature": 0.003609725,
165
+ "friction": null,
166
+ "effort_limit": 25,
167
+ "velocity_limit": 37
168
+ },
169
+ ".*_wrist_roll_joint": {
170
+ "$type": "protomotions.components.pose_lib.ControlInfo",
171
+ "stiffness": 14.25062309787429,
172
+ "damping": 0.907222843292423,
173
+ "armature": 0.003609725,
174
+ "friction": null,
175
+ "effort_limit": 25,
176
+ "velocity_limit": 37
177
+ },
178
+ ".*_wrist_pitch_joint": {
179
+ "$type": "protomotions.components.pose_lib.ControlInfo",
180
+ "stiffness": 16.77832748089279,
181
+ "damping": 1.06814150219,
182
+ "armature": 0.00425,
183
+ "friction": null,
184
+ "effort_limit": 5,
185
+ "velocity_limit": 22
186
+ },
187
+ ".*_wrist_yaw_joint": {
188
+ "$type": "protomotions.components.pose_lib.ControlInfo",
189
+ "stiffness": 16.77832748089279,
190
+ "damping": 1.06814150219,
191
+ "armature": 0.00425,
192
+ "friction": null,
193
+ "effort_limit": 5,
194
+ "velocity_limit": 22
195
+ }
196
+ },
197
+ "control_type": {
198
+ "$enum": "protomotions.robot_configs.base.ControlType",
199
+ "name": "BUILT_IN_PD"
200
+ },
201
+ "soft_pos_limit": 0.9,
202
+ "asset_default_joints": []
203
+ },
204
+ "control_hz": 50,
205
+ "simulation_params": {
206
+ "$type": "protomotions.robot_configs.base.SimulatorParams",
207
+ "isaacgym": {
208
+ "$type": "protomotions.simulator.isaacgym.config.IsaacGymSimParams",
209
+ "fps": 100,
210
+ "substeps": 2,
211
+ "physx": {
212
+ "$type": "protomotions.simulator.isaacgym.config.IsaacGymPhysXParams",
213
+ "num_threads": 4,
214
+ "solver_type": 1,
215
+ "num_position_iterations": 8,
216
+ "num_velocity_iterations": 4,
217
+ "contact_offset": 0.02,
218
+ "rest_offset": 0.0,
219
+ "bounce_threshold_velocity": 0.2,
220
+ "max_depenetration_velocity": 1,
221
+ "default_buffer_size_multiplier": 10.0
222
+ },
223
+ "flex": {
224
+ "$type": "protomotions.simulator.isaacgym.config.IsaacGymFlexParams",
225
+ "num_inner_iterations": 10,
226
+ "warm_start": 0.25
227
+ }
228
+ },
229
+ "isaaclab": {
230
+ "$type": "protomotions.simulator.isaaclab.config.IsaacLabSimParams",
231
+ "fps": 200,
232
+ "physx": {
233
+ "$type": "protomotions.simulator.isaaclab.config.IsaacLabPhysXParams",
234
+ "num_threads": 4,
235
+ "solver_type": 1,
236
+ "num_position_iterations": 8,
237
+ "num_velocity_iterations": 4,
238
+ "contact_offset": 0.02,
239
+ "rest_offset": 0.0,
240
+ "bounce_threshold_velocity": 0.2,
241
+ "max_depenetration_velocity": 1,
242
+ "default_buffer_size_multiplier": 10.0,
243
+ "gpu_found_lost_pairs_capacity": 2097152,
244
+ "gpu_max_rigid_contact_count": 8388608,
245
+ "gpu_found_lost_aggregate_pairs_capacity": 33554432,
246
+ "gpu_max_rigid_patch_count": 163840,
247
+ "gpu_collision_stack_size": 67108864
248
+ }
249
+ },
250
+ "newton": {
251
+ "$type": "protomotions.simulator.newton.config.NewtonSimParams",
252
+ "fps": 200,
253
+ "solver": "newton",
254
+ "integrator": "implicitfast",
255
+ "iterations": 100,
256
+ "ls_iterations": 50,
257
+ "ls_parallel": true,
258
+ "impratio": 10.0,
259
+ "njmax": 450,
260
+ "nconmax": 300,
261
+ "cone": "pyramidal",
262
+ "ccd_iterations": 200
263
+ },
264
+ "mujoco": {
265
+ "$type": "protomotions.simulator.mujoco.config.MujocoSimParams",
266
+ "fps": 1000,
267
+ "integrator": null
268
+ }
269
+ }
270
+ },
271
+ "simulator": {
272
+ "$type": "protomotions.simulator.mujoco.config.MujocoSimulatorConfig",
273
+ "_target_": "protomotions.simulator.mujoco.simulator.MujocoSimulator",
274
+ "w_last": false,
275
+ "default_robot_friction": 1.0,
276
+ "headless": true,
277
+ "num_envs": 1,
278
+ "sim": {
279
+ "$type": "protomotions.simulator.mujoco.config.MujocoSimParams",
280
+ "fps": 1000,
281
+ "integrator": null
282
+ },
283
+ "experiment_name": "metatron_v1_playback",
284
+ "camera": null,
285
+ "record_viewer": false,
286
+ "viewer_record_dir": "output/recordings/viewer",
287
+ "domain_randomization": null,
288
+ "projectile": {
289
+ "$type": "protomotions.simulator.base_simulator.config.ProjectileConfig",
290
+ "num_projectiles": 0,
291
+ "cube_half_size_range": [
292
+ 0.05,
293
+ 0.15
294
+ ],
295
+ "density": 500.0,
296
+ "speed_range": [
297
+ 30.0,
298
+ 40.0
299
+ ],
300
+ "spawn_distance_range": [
301
+ 4.0,
302
+ 5.0
303
+ ],
304
+ "spawn_height_range": [
305
+ -0.65,
306
+ 1.1
307
+ ],
308
+ "direction_noise_std": 0.1,
309
+ "hide_delay": 2.0,
310
+ "hide_z": -2.0,
311
+ "hide_spacing": 4.0
312
+ },
313
+ "pd_target_max_accel": null,
314
+ "use_implicit_pd": true
315
+ },
316
+ "terrain": {
317
+ "$type": "protomotions.components.terrains.config.TerrainConfig",
318
+ "_target_": "protomotions.components.terrains.terrain.Terrain",
319
+ "map_length": 20.0,
320
+ "map_width": 20.0,
321
+ "border_size": 40.0,
322
+ "num_levels": 10,
323
+ "num_terrains": 10,
324
+ "terrain_proportions": [
325
+ 0.0,
326
+ 0.0,
327
+ 0.0,
328
+ 0.0,
329
+ 0.0,
330
+ 0.0,
331
+ 0.0,
332
+ 1.0
333
+ ],
334
+ "slope_threshold": 0.9,
335
+ "num_samples_per_axis": 16,
336
+ "sample_width": 1.0,
337
+ "terrain_obs_num_samples": 256,
338
+ "horizontal_scale": 0.1,
339
+ "vertical_scale": 0.005,
340
+ "spacing_between_scenes": 10.0,
341
+ "minimal_humanoid_spacing": 1.0,
342
+ "terrain_path": null,
343
+ "load_terrain": false,
344
+ "save_terrain": false,
345
+ "sim_config": {
346
+ "$type": "protomotions.components.terrains.config.TerrainSimConfig",
347
+ "static_friction": 1.0,
348
+ "dynamic_friction": 1.0,
349
+ "restitution": 0.0,
350
+ "height_offset": 0.0,
351
+ "combine_mode": {
352
+ "$enum": "protomotions.components.terrains.config.CombineMode",
353
+ "name": "AVERAGE"
354
+ }
355
+ }
356
+ },
357
+ "scene_lib": {
358
+ "$type": "protomotions.components.scene_lib.SceneLibConfig",
359
+ "_target_": "protomotions.components.scene_lib.SceneLib",
360
+ "scene_file": null,
361
+ "asset_root": null,
362
+ "subset_method": {
363
+ "$enum": "protomotions.components.scene_lib.SubsetMethod",
364
+ "name": "FIRST"
365
+ },
366
+ "replicate_method": {
367
+ "$enum": "protomotions.components.scene_lib.ReplicationMethod",
368
+ "name": "WEIGHTED"
369
+ },
370
+ "pointcloud_samples_per_object": null,
371
+ "num_objects_per_env": null,
372
+ "mesh_collision_approximation": null,
373
+ "mesh_collision_max_convex_hulls": null,
374
+ "mesh_collision_hull_vertex_limit": null,
375
+ "mesh_collision_voxel_resolution": null,
376
+ "scene_indices": null,
377
+ "inline_scenes": null
378
+ },
379
+ "motion_lib": {
380
+ "$type": "protomotions.components.motion_lib.MotionLibConfig",
381
+ "_target_": "protomotions.components.motion_lib.MotionLib",
382
+ "motion_file": "examples/data/g1_crouch_to_run.motion",
383
+ "motion_file_shard_indices": null,
384
+ "motion_file_switch_mode": "fixed",
385
+ "get_motion_state_use_blend": true,
386
+ "max_seconds": null,
387
+ "clip_delta": 3.0,
388
+ "clip_seed": 42
389
+ },
390
+ "env": {
391
+ "$type": "protomotions.envs.base_env.config.EnvConfig",
392
+ "max_episode_length": 300,
393
+ "reset_grace_period": 5,
394
+ "_target_": "protomotions.envs.base_env.env.BaseEnv",
395
+ "motion_manager": {
396
+ "$type": "protomotions.envs.motion_manager.config.MimicMotionManagerConfig",
397
+ "_target_": "protomotions.envs.motion_manager.mimic_motion_manager.MimicMotionManager",
398
+ "init_start_prob": 1.0,
399
+ "sample_time_truncate_s": null,
400
+ "subset_method": null,
401
+ "exclude_motion_ids": null,
402
+ "exclude_motions_file": null,
403
+ "realign_motion_with_humanoid_on_each_step": false,
404
+ "resample_on_reset": true
405
+ },
406
+ "ref_respawn_offset": 0.05,
407
+ "ref_object_respawn_offset": 0.0,
408
+ "ref_contact_smooth_window": 0,
409
+ "recovery_reset": {
410
+ "$type": "protomotions.envs.base_env.config.RecoveryResetConfig",
411
+ "recovery_prob": 0.0,
412
+ "fall_sim_steps": 150
413
+ },
414
+ "skip_correct_terrain_height_on_flat": true,
415
+ "show_terrain_markers": false,
416
+ "save_dir": "",
417
+ "reward_components": {},
418
+ "control_components": {
419
+ "masked_mimic": {
420
+ "$type": "protomotions.envs.control.masked_mimic_control.MaskedMimicControlConfig",
421
+ "_target_": "protomotions.envs.control.masked_mimic_control.MaskedMimicControl",
422
+ "bootstrap_on_episode_end": true,
423
+ "future_steps": [
424
+ 1,
425
+ 2,
426
+ 5,
427
+ 7,
428
+ 12,
429
+ 18,
430
+ 25
431
+ ],
432
+ "reference_height_smoothing_seconds": 0.1,
433
+ "low_pose_grace_seconds": 0.0,
434
+ "num_masked_future_steps": 5,
435
+ "target_profile_probabilities": [
436
+ 0.2,
437
+ 0.6,
438
+ 0.2
439
+ ],
440
+ "target_gap_min_seconds": 0.1,
441
+ "target_gap_max_seconds": 2.0,
442
+ "visible_target_pose_prob": 0.8,
443
+ "fixed_conditioning": null,
444
+ "sparse_target_condition_probability": 0.5,
445
+ "local_target_condition_probability": 0.5,
446
+ "anchor_pose_submasking": true,
447
+ "style": {
448
+ "$type": "protomotions.envs.control.masked_mimic_control.MaskedMimicStyleConfig",
449
+ "window_seconds": 2.0,
450
+ "num_frames": 5,
451
+ "near_time_bias_power": 2.0,
452
+ "velocity_probability": 0.5,
453
+ "visible_frame_count_probabilities": [
454
+ 0.5,
455
+ 0.1,
456
+ 0.1,
457
+ 0.1,
458
+ 0.1,
459
+ 0.1
460
+ ]
461
+ },
462
+ "velocity_command": {
463
+ "$type": "protomotions.envs.control.masked_mimic_control.MaskedMimicVelocityCommandConfig",
464
+ "horizon_seconds": 0.5,
465
+ "probability": 0.5
466
+ }
467
+ }
468
+ },
469
+ "termination_components": {},
470
+ "observation_components": {
471
+ "max_coords_obs": {
472
+ "$kernel": "protomotions.envs.obs.humanoid.compute_humanoid_max_coords_observations",
473
+ "bindings": {
474
+ "body_pos": "current.rigid_body_pos",
475
+ "body_rot": "current.rigid_body_rot",
476
+ "body_vel": "current.rigid_body_vel",
477
+ "body_ang_vel": "current.rigid_body_ang_vel",
478
+ "ground_height": "current.ground_heights",
479
+ "anchor_body_index": "current.anchor_idx"
480
+ },
481
+ "params": {
482
+ "body_contacts": null,
483
+ "local_obs": true,
484
+ "root_height_obs": true,
485
+ "observe_contacts": false,
486
+ "w_last": true
487
+ }
488
+ },
489
+ "mimic_target_poses": {
490
+ "$kernel": "protomotions.envs.obs.target_poses.build_max_coords_target_poses",
491
+ "bindings": {
492
+ "current_state_body_pos": "current.rigid_body_pos",
493
+ "current_state_body_rot": "current.rigid_body_rot",
494
+ "current_state_body_vel": "current.rigid_body_vel",
495
+ "current_state_body_ang_vel": "current.rigid_body_ang_vel",
496
+ "mimic_ref_pos": "mimic.future_pos",
497
+ "mimic_ref_rot": "mimic.future_rot",
498
+ "mimic_ref_vel": "mimic.future_vel",
499
+ "mimic_ref_ang_vel": "mimic.future_ang_vel",
500
+ "anchor_body_index": "mimic.anchor_idx"
501
+ },
502
+ "params": {
503
+ "w_last": true,
504
+ "future_steps": null,
505
+ "body_indices": null,
506
+ "with_velocities": true,
507
+ "with_relative": true
508
+ }
509
+ },
510
+ "masked_mimic_target_poses": {
511
+ "$kernel": "protomotions.envs.obs.masked_mimic.compute_target_poses_only",
512
+ "bindings": {
513
+ "current_state_body_pos": "current.rigid_body_pos",
514
+ "current_state_body_rot": "current.rigid_body_rot",
515
+ "masked_mimic_ref_pos": "masked_mimic.ref_pos",
516
+ "masked_mimic_ref_rot": "masked_mimic.ref_rot",
517
+ "masked_mimic_target_bodies_masks": "masked_mimic.target_bodies_masks",
518
+ "anchor_body_index": "mimic.anchor_idx",
519
+ "anchor_translation_mask": "masked_mimic.anchor_translation_mask",
520
+ "anchor_rotation_mask": "masked_mimic.anchor_rotation_mask"
521
+ },
522
+ "params": {
523
+ "future_steps": null,
524
+ "ground_independently": false,
525
+ "conditionable_body_ids": {
526
+ "$type": "protomotions.envs.body_selection.BodySelection",
527
+ "names": [
528
+ "torso_link",
529
+ "right_ankle_roll_link",
530
+ "left_ankle_roll_link",
531
+ "left_rubber_hand",
532
+ "right_rubber_hand"
533
+ ],
534
+ "groups": [],
535
+ "pattern": null
536
+ },
537
+ "include_root_relative": false
538
+ }
539
+ },
540
+ "masked_mimic_local_target_poses": {
541
+ "$kernel": "protomotions.envs.obs.masked_mimic.compute_local_target_poses",
542
+ "bindings": {
543
+ "masked_mimic_ref_pos": "masked_mimic.local_ref_pos",
544
+ "masked_mimic_ref_rot": "masked_mimic.local_ref_rot",
545
+ "masked_mimic_target_bodies_masks": "masked_mimic.local_target_bodies_masks",
546
+ "masked_mimic_target_poses_masks": "masked_mimic.local_target_poses_masks",
547
+ "anchor_body_index": "mimic.anchor_idx"
548
+ },
549
+ "params": {
550
+ "future_steps": null,
551
+ "conditionable_body_ids": {
552
+ "$type": "protomotions.envs.body_selection.BodySelection",
553
+ "names": [
554
+ "torso_link",
555
+ "right_ankle_roll_link",
556
+ "left_ankle_roll_link",
557
+ "left_rubber_hand",
558
+ "right_rubber_hand"
559
+ ],
560
+ "groups": [],
561
+ "pattern": null
562
+ }
563
+ }
564
+ },
565
+ "previous_actions": {
566
+ "$kernel": "protomotions.envs.obs.cast.to_float",
567
+ "bindings": {
568
+ "x": "current_action"
569
+ },
570
+ "params": {}
571
+ },
572
+ "scene_box_corners": {
573
+ "$kernel": "examples.inference.metatron.empty_scene_corners",
574
+ "bindings": {
575
+ "dof_pos": "current.dof_pos"
576
+ },
577
+ "params": {}
578
+ },
579
+ "scene_box_mask": {
580
+ "$kernel": "examples.inference.metatron.empty_scene_mask",
581
+ "bindings": {
582
+ "dof_pos": "current.dof_pos"
583
+ },
584
+ "params": {}
585
+ },
586
+ "fk_max_coords_obs": {
587
+ "$kernel_object": "protomotions.utils.baked_fk.BakedAnchorFK",
588
+ "init": {
589
+ "anchor_idx": 16,
590
+ "trackable_body_indices": [
591
+ 16,
592
+ 13,
593
+ 7,
594
+ 24,
595
+ 32
596
+ ]
597
+ },
598
+ "bindings": {
599
+ "dof_pos": "noisy.dof_pos",
600
+ "current_anchor_rot": "noisy.anchor_rot"
601
+ },
602
+ "params": {}
603
+ },
604
+ "reduced_coords_obs": {
605
+ "$kernel": "protomotions.envs.obs.humanoid.compute_humanoid_reduced_coords_observations",
606
+ "bindings": {
607
+ "dof_pos": "noisy.dof_pos",
608
+ "dof_vel": "noisy.dof_vel",
609
+ "anchor_rot": "noisy.anchor_rot",
610
+ "root_local_ang_vel": "noisy.root_local_ang_vel"
611
+ },
612
+ "params": {
613
+ "w_last": true,
614
+ "root_rot": null,
615
+ "root_pos": null,
616
+ "root_vel": null,
617
+ "ground_height": null,
618
+ "root_height_obs": false,
619
+ "root_vel_obs": false
620
+ }
621
+ },
622
+ "last_action": {
623
+ "$kernel": "protomotions.envs.obs.cast.to_float",
624
+ "bindings": {
625
+ "x": "current_action"
626
+ },
627
+ "params": {}
628
+ },
629
+ "historical_proprioception": {
630
+ "$kernel": "protomotions.envs.obs.humanoid_historical.compute_historical_proprioception",
631
+ "bindings": {
632
+ "historical_dof_pos": "noisy_historical.dof_pos",
633
+ "historical_dof_vel": "noisy_historical.dof_vel",
634
+ "historical_root_local_ang_vel": "noisy_historical.root_local_ang_vel",
635
+ "historical_anchor_rot": "noisy_historical.anchor_rot",
636
+ "historical_actions": "noisy_historical.raw_actions",
637
+ "dt": "dt"
638
+ },
639
+ "params": {
640
+ "time_origin": "current",
641
+ "fk": {
642
+ "$kernel_object": "protomotions.utils.baked_fk.BakedAnchorFK",
643
+ "init": {
644
+ "anchor_idx": 16,
645
+ "trackable_body_indices": [
646
+ 16,
647
+ 13,
648
+ 7,
649
+ 24,
650
+ 32
651
+ ]
652
+ }
653
+ },
654
+ "history_steps": [
655
+ 8,
656
+ 4,
657
+ 3,
658
+ 2,
659
+ 1
660
+ ]
661
+ }
662
+ },
663
+ "fk_masked_mimic_target_poses": {
664
+ "$kernel": "protomotions.envs.obs.masked_mimic.compute_target_poses_only",
665
+ "bindings": {
666
+ "current_state_body_pos": "noisy.rigid_body_pos",
667
+ "current_state_body_rot": "noisy.rigid_body_rot",
668
+ "masked_mimic_ref_pos": "masked_mimic.ref_pos",
669
+ "masked_mimic_ref_rot": "masked_mimic.ref_rot",
670
+ "masked_mimic_target_bodies_masks": "masked_mimic.target_bodies_masks",
671
+ "anchor_body_index": "mimic.anchor_idx",
672
+ "anchor_translation_mask": "masked_mimic.anchor_translation_mask",
673
+ "anchor_rotation_mask": "masked_mimic.anchor_rotation_mask"
674
+ },
675
+ "params": {
676
+ "future_steps": null,
677
+ "conditionable_body_ids": {
678
+ "$tensor": [
679
+ 16,
680
+ 13,
681
+ 7,
682
+ 24,
683
+ 32
684
+ ],
685
+ "dtype": "int64"
686
+ },
687
+ "ground_independently": true,
688
+ "include_root_relative": false
689
+ }
690
+ },
691
+ "masked_mimic_velocity_command": {
692
+ "$kernel": "protomotions.envs.obs.masked_mimic_velocity_command.compute_masked_mimic_velocity_command_obs",
693
+ "bindings": {
694
+ "anchor_rot": "noisy.anchor_rot",
695
+ "average_velocity": "masked_mimic.average_velocity",
696
+ "velocity_command_mask": "masked_mimic.velocity_command_mask"
697
+ },
698
+ "params": {}
699
+ },
700
+ "masked_mimic_velocity_command_mask": {
701
+ "$kernel": "protomotions.envs.obs.cast.to_float",
702
+ "bindings": {
703
+ "x": "masked_mimic.velocity_command_mask"
704
+ },
705
+ "params": {}
706
+ },
707
+ "masked_mimic_style_poses": {
708
+ "$kernel": "protomotions.envs.obs.cast.to_float",
709
+ "bindings": {
710
+ "x": "masked_mimic.style_pose_samples"
711
+ },
712
+ "params": {}
713
+ },
714
+ "masked_mimic_style_velocities": {
715
+ "$kernel": "protomotions.envs.obs.cast.to_float",
716
+ "bindings": {
717
+ "x": "masked_mimic.style_velocity_samples"
718
+ },
719
+ "params": {}
720
+ },
721
+ "masked_mimic_style_masks": {
722
+ "$kernel": "protomotions.envs.obs.cast.to_float",
723
+ "bindings": {
724
+ "x": "masked_mimic.style_condition_masks"
725
+ },
726
+ "params": {}
727
+ },
728
+ "masked_mimic_style_frame_masks": {
729
+ "$kernel": "protomotions.envs.obs.cast.to_float",
730
+ "bindings": {
731
+ "x": "masked_mimic.style_frame_masks"
732
+ },
733
+ "params": {}
734
+ },
735
+ "masked_mimic_target_masks": {
736
+ "$kernel": "protomotions.envs.obs.masked_mimic.compute_target_masks_only",
737
+ "bindings": {
738
+ "masked_mimic_target_bodies_masks": "masked_mimic.target_bodies_masks",
739
+ "anchor_translation_mask": "masked_mimic.anchor_translation_mask",
740
+ "anchor_rotation_mask": "masked_mimic.anchor_rotation_mask"
741
+ },
742
+ "params": {
743
+ "future_steps": null,
744
+ "conditionable_body_ids": {
745
+ "$type": "protomotions.envs.body_selection.BodySelection",
746
+ "names": [
747
+ "torso_link",
748
+ "right_ankle_roll_link",
749
+ "left_ankle_roll_link",
750
+ "left_rubber_hand",
751
+ "right_rubber_hand"
752
+ ],
753
+ "groups": [],
754
+ "pattern": null
755
+ }
756
+ }
757
+ },
758
+ "masked_mimic_target_times": {
759
+ "$kernel": "protomotions.envs.obs.masked_mimic.compute_target_time_offsets",
760
+ "bindings": {
761
+ "masked_mimic_time_offsets": "masked_mimic.time_offsets"
762
+ },
763
+ "params": {
764
+ "future_steps": null
765
+ }
766
+ },
767
+ "masked_mimic_target_poses_masks": {
768
+ "$kernel": "protomotions.envs.obs.cast.to_float",
769
+ "bindings": {
770
+ "x": "masked_mimic.target_poses_masks"
771
+ },
772
+ "params": {}
773
+ },
774
+ "masked_mimic_local_target_masks": {
775
+ "$kernel": "protomotions.envs.obs.masked_mimic.compute_target_masks_only",
776
+ "bindings": {
777
+ "masked_mimic_target_bodies_masks": "masked_mimic.local_target_bodies_masks"
778
+ },
779
+ "params": {
780
+ "future_steps": null,
781
+ "anchor_translation_mask": null,
782
+ "anchor_rotation_mask": null,
783
+ "conditionable_body_ids": {
784
+ "$type": "protomotions.envs.body_selection.BodySelection",
785
+ "names": [
786
+ "torso_link",
787
+ "right_ankle_roll_link",
788
+ "left_ankle_roll_link",
789
+ "left_rubber_hand",
790
+ "right_rubber_hand"
791
+ ],
792
+ "groups": [],
793
+ "pattern": null
794
+ }
795
+ }
796
+ },
797
+ "masked_mimic_local_target_times": {
798
+ "$kernel": "protomotions.envs.obs.masked_mimic.compute_target_time_offsets",
799
+ "bindings": {
800
+ "masked_mimic_time_offsets": "masked_mimic.local_time_offsets"
801
+ },
802
+ "params": {
803
+ "future_steps": null
804
+ }
805
+ },
806
+ "masked_mimic_local_target_poses_masks": {
807
+ "$kernel": "protomotions.envs.obs.cast.to_float",
808
+ "bindings": {
809
+ "x": "masked_mimic.local_target_poses_masks"
810
+ },
811
+ "params": {}
812
+ }
813
+ },
814
+ "action_config": {
815
+ "$type": "protomotions.envs.action.config.ActionConfig",
816
+ "fn": {
817
+ "$function": "protomotions.envs.action.action_functions.bm_pd_action"
818
+ },
819
+ "params": {
820
+ "pd_action_offset": {
821
+ "$tensor": [
822
+ -0.31200000643730164,
823
+ 0.0,
824
+ 0.0,
825
+ 0.6690000295639038,
826
+ -0.3630000054836273,
827
+ 0.0,
828
+ -0.31200000643730164,
829
+ 0.0,
830
+ 0.0,
831
+ 0.6690000295639038,
832
+ -0.3630000054836273,
833
+ 0.0,
834
+ 0.0,
835
+ 0.0,
836
+ 0.0,
837
+ 0.20000000298023224,
838
+ 0.20000000298023224,
839
+ 0.0,
840
+ 0.6000000238418579,
841
+ 0.0,
842
+ 0.0,
843
+ 0.0,
844
+ 0.20000000298023224,
845
+ -0.20000000298023224,
846
+ 0.0,
847
+ 0.6000000238418579,
848
+ 0.0,
849
+ 0.0,
850
+ 0.0
851
+ ],
852
+ "dtype": "float32"
853
+ },
854
+ "action_scale": {
855
+ "$tensor": [
856
+ 0.5475465059280396,
857
+ 0.3506614565849304,
858
+ 0.5475465059280396,
859
+ 0.3506614565849304,
860
+ 0.4385773241519928,
861
+ 0.4385773241519928,
862
+ 0.5475465059280396,
863
+ 0.3506614565849304,
864
+ 0.5475465059280396,
865
+ 0.3506614565849304,
866
+ 0.4385773241519928,
867
+ 0.4385773241519928,
868
+ 0.5475465059280396,
869
+ 0.4385773241519928,
870
+ 0.4385773241519928,
871
+ 0.4385773241519928,
872
+ 0.4385773241519928,
873
+ 0.4385773241519928,
874
+ 0.4385773241519928,
875
+ 0.4385773241519928,
876
+ 0.07450086623430252,
877
+ 0.07450086623430252,
878
+ 0.4385773241519928,
879
+ 0.4385773241519928,
880
+ 0.4385773241519928,
881
+ 0.4385773241519928,
882
+ 0.4385773241519928,
883
+ 0.07450086623430252,
884
+ 0.07450086623430252
885
+ ],
886
+ "dtype": "float32"
887
+ },
888
+ "stiffness": {
889
+ "$tensor": [
890
+ 40.179237365722656,
891
+ 99.09842681884766,
892
+ 40.179237365722656,
893
+ 99.09842681884766,
894
+ 28.501245498657227,
895
+ 28.501245498657227,
896
+ 40.179237365722656,
897
+ 99.09842681884766,
898
+ 40.179237365722656,
899
+ 99.09842681884766,
900
+ 28.501245498657227,
901
+ 28.501245498657227,
902
+ 40.179237365722656,
903
+ 28.501245498657227,
904
+ 28.501245498657227,
905
+ 14.250622749328613,
906
+ 14.250622749328613,
907
+ 14.250622749328613,
908
+ 14.250622749328613,
909
+ 14.250622749328613,
910
+ 16.77832794189453,
911
+ 16.77832794189453,
912
+ 14.250622749328613,
913
+ 14.250622749328613,
914
+ 14.250622749328613,
915
+ 14.250622749328613,
916
+ 14.250622749328613,
917
+ 16.77832794189453,
918
+ 16.77832794189453
919
+ ],
920
+ "dtype": "float32"
921
+ },
922
+ "damping": {
923
+ "$tensor": [
924
+ 2.557889699935913,
925
+ 6.308801651000977,
926
+ 2.557889699935913,
927
+ 6.308801651000977,
928
+ 1.8144457340240479,
929
+ 1.8144457340240479,
930
+ 2.557889699935913,
931
+ 6.308801651000977,
932
+ 2.557889699935913,
933
+ 6.308801651000977,
934
+ 1.8144457340240479,
935
+ 1.8144457340240479,
936
+ 2.557889699935913,
937
+ 1.8144457340240479,
938
+ 1.8144457340240479,
939
+ 0.9072228670120239,
940
+ 0.9072228670120239,
941
+ 0.9072228670120239,
942
+ 0.9072228670120239,
943
+ 0.9072228670120239,
944
+ 1.0681414604187012,
945
+ 1.0681414604187012,
946
+ 0.9072228670120239,
947
+ 0.9072228670120239,
948
+ 0.9072228670120239,
949
+ 0.9072228670120239,
950
+ 0.9072228670120239,
951
+ 1.0681414604187012,
952
+ 1.0681414604187012
953
+ ],
954
+ "dtype": "float32"
955
+ }
956
+ }
957
+ },
958
+ "sensors": {
959
+ "$type": "protomotions.envs.sensors.config.SensorConfig",
960
+ "joint_encoders": {
961
+ "$type": "protomotions.envs.sensors.config.JointEncoderSensor",
962
+ "pos_noise": {
963
+ "$type": "protomotions.envs.sensors.config.NoNoise",
964
+ "reason": "inference"
965
+ },
966
+ "vel_noise": {
967
+ "$type": "protomotions.envs.sensors.config.NoNoise",
968
+ "reason": "inference"
969
+ }
970
+ },
971
+ "imu": {
972
+ "$type": "protomotions.envs.sensors.config.IMUSensor",
973
+ "quat_noise": {
974
+ "$type": "protomotions.envs.sensors.config.NoNoise",
975
+ "reason": "inference"
976
+ },
977
+ "gyro_noise": {
978
+ "$type": "protomotions.envs.sensors.config.NoNoise",
979
+ "reason": "inference"
980
+ }
981
+ },
982
+ "localization": {
983
+ "$type": "protomotions.envs.sensors.config.LocalizationSensor",
984
+ "body_name": "pelvis",
985
+ "noise": {
986
+ "$type": "protomotions.envs.sensors.config.NoNoise",
987
+ "reason": "inference"
988
+ },
989
+ "offset": [
990
+ 0.0,
991
+ 0.0,
992
+ 0.0
993
+ ],
994
+ "drift": null
995
+ },
996
+ "base_velocity": null,
997
+ "height": null,
998
+ "seed": null
999
+ }
1000
+ },
1001
+ "agent": {
1002
+ "$type": "protomotions.agents.supervised.masked_mimic_config.MaskedMimicSupervisedAgentConfig",
1003
+ "batch_size": 4,
1004
+ "training_max_steps": 10000000000000,
1005
+ "training_max_iterations": null,
1006
+ "_target_": "protomotions.agents.supervised.agent.SupervisedAgent",
1007
+ "model": {
1008
+ "$type": "protomotions.agents.supervised.masked_mimic_config.MaskedMimicModelConfig",
1009
+ "_target_": "protomotions.agents.supervised.masked_mimic_model.MaskedMimicModel",
1010
+ "in_keys": [],
1011
+ "out_keys": [],
1012
+ "encoder": {
1013
+ "$type": "protomotions.agents.common.config.ModuleContainerConfig",
1014
+ "models": [
1015
+ {
1016
+ "$type": "protomotions.agents.common.config.ObsProcessorConfig",
1017
+ "normalize_obs": true,
1018
+ "norm_clamp_value": 5.0,
1019
+ "norm_ema_decay": 0.999,
1020
+ "_target_": "protomotions.agents.common.common.ObsProcessor",
1021
+ "in_keys": [
1022
+ "max_coords_obs"
1023
+ ],
1024
+ "out_keys": [
1025
+ "max_coords_obs_norm"
1026
+ ],
1027
+ "module_operations": [
1028
+ {
1029
+ "$type": "protomotions.agents.common.config.ModuleOperationForwardConfig"
1030
+ }
1031
+ ]
1032
+ },
1033
+ {
1034
+ "$type": "protomotions.agents.common.config.ObsProcessorConfig",
1035
+ "normalize_obs": true,
1036
+ "norm_clamp_value": 5.0,
1037
+ "norm_ema_decay": 0.999,
1038
+ "_target_": "protomotions.agents.common.common.ObsProcessor",
1039
+ "in_keys": [
1040
+ "mimic_target_poses"
1041
+ ],
1042
+ "out_keys": [
1043
+ "mimic_target_poses_norm"
1044
+ ],
1045
+ "module_operations": [
1046
+ {
1047
+ "$type": "protomotions.agents.common.config.ModuleOperationForwardConfig"
1048
+ }
1049
+ ]
1050
+ },
1051
+ {
1052
+ "$type": "protomotions.agents.common.config.ObsProcessorConfig",
1053
+ "normalize_obs": true,
1054
+ "norm_clamp_value": 5.0,
1055
+ "norm_ema_decay": 0.999,
1056
+ "_target_": "protomotions.agents.common.common.ObsProcessor",
1057
+ "in_keys": [
1058
+ "masked_mimic_local_target_poses"
1059
+ ],
1060
+ "out_keys": [
1061
+ "masked_mimic_local_target_poses_norm"
1062
+ ],
1063
+ "module_operations": [
1064
+ {
1065
+ "$type": "protomotions.agents.common.config.ModuleOperationForwardConfig"
1066
+ }
1067
+ ]
1068
+ },
1069
+ {
1070
+ "$type": "protomotions.agents.common.config.ObsProcessorConfig",
1071
+ "normalize_obs": true,
1072
+ "norm_clamp_value": 5.0,
1073
+ "norm_ema_decay": 0.999,
1074
+ "_target_": "protomotions.agents.common.common.ObsProcessor",
1075
+ "in_keys": [
1076
+ "masked_mimic_target_poses"
1077
+ ],
1078
+ "out_keys": [
1079
+ "masked_mimic_global_target_poses_norm"
1080
+ ],
1081
+ "module_operations": [
1082
+ {
1083
+ "$type": "protomotions.agents.common.config.ModuleOperationForwardConfig"
1084
+ }
1085
+ ]
1086
+ },
1087
+ {
1088
+ "$type": "protomotions.agents.common.config.ObsProcessorConfig",
1089
+ "normalize_obs": true,
1090
+ "norm_clamp_value": 5.0,
1091
+ "norm_ema_decay": 0.999,
1092
+ "_target_": "protomotions.agents.common.common.ObsProcessor",
1093
+ "in_keys": [
1094
+ "masked_mimic_target_times"
1095
+ ],
1096
+ "out_keys": [
1097
+ "masked_mimic_target_times_norm"
1098
+ ],
1099
+ "module_operations": [
1100
+ {
1101
+ "$type": "protomotions.agents.common.config.ModuleOperationForwardConfig"
1102
+ }
1103
+ ]
1104
+ },
1105
+ {
1106
+ "$type": "protomotions.agents.common.config.ObsProcessorConfig",
1107
+ "normalize_obs": true,
1108
+ "norm_clamp_value": 5.0,
1109
+ "norm_ema_decay": 0.999,
1110
+ "_target_": "protomotions.agents.common.common.ObsProcessor",
1111
+ "in_keys": [
1112
+ "masked_mimic_local_target_times"
1113
+ ],
1114
+ "out_keys": [
1115
+ "masked_mimic_local_target_times_norm"
1116
+ ],
1117
+ "module_operations": [
1118
+ {
1119
+ "$type": "protomotions.agents.common.config.ModuleOperationForwardConfig"
1120
+ }
1121
+ ]
1122
+ },
1123
+ {
1124
+ "$type": "protomotions.agents.common.config.ObsProcessorConfig",
1125
+ "normalize_obs": true,
1126
+ "norm_clamp_value": 5.0,
1127
+ "norm_ema_decay": 0.999,
1128
+ "_target_": "protomotions.agents.common.common.ObsProcessor",
1129
+ "in_keys": [
1130
+ "masked_mimic_style_poses"
1131
+ ],
1132
+ "out_keys": [
1133
+ "masked_mimic_style_poses_norm"
1134
+ ],
1135
+ "module_operations": [
1136
+ {
1137
+ "$type": "protomotions.agents.common.config.ModuleOperationForwardConfig"
1138
+ }
1139
+ ]
1140
+ },
1141
+ {
1142
+ "$type": "protomotions.agents.common.config.ObsProcessorConfig",
1143
+ "normalize_obs": true,
1144
+ "norm_clamp_value": 5.0,
1145
+ "norm_ema_decay": 0.999,
1146
+ "_target_": "protomotions.agents.common.common.ObsProcessor",
1147
+ "in_keys": [
1148
+ "masked_mimic_style_velocities"
1149
+ ],
1150
+ "out_keys": [
1151
+ "masked_mimic_style_velocities_norm"
1152
+ ],
1153
+ "module_operations": [
1154
+ {
1155
+ "$type": "protomotions.agents.common.config.ModuleOperationForwardConfig"
1156
+ }
1157
+ ]
1158
+ },
1159
+ {
1160
+ "$type": "protomotions.agents.common.config.ObsProcessorConfig",
1161
+ "normalize_obs": false,
1162
+ "norm_clamp_value": 5.0,
1163
+ "norm_ema_decay": 0.999,
1164
+ "_target_": "protomotions.agents.common.common.ObsProcessor",
1165
+ "in_keys": [
1166
+ "masked_mimic_style_masks"
1167
+ ],
1168
+ "out_keys": [
1169
+ "masked_mimic_style_masks_flat"
1170
+ ],
1171
+ "module_operations": [
1172
+ {
1173
+ "$type": "protomotions.agents.common.config.ModuleOperationReshapeConfig",
1174
+ "new_shape": [
1175
+ "batch_size",
1176
+ -1
1177
+ ]
1178
+ }
1179
+ ]
1180
+ },
1181
+ {
1182
+ "$type": "protomotions.agents.common.config.MLPWithConcatConfig",
1183
+ "normalize_obs": false,
1184
+ "norm_clamp_value": 5.0,
1185
+ "norm_ema_decay": 0.999,
1186
+ "num_out": 256,
1187
+ "layers": [
1188
+ {
1189
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
1190
+ "units": 512,
1191
+ "activation": "silu",
1192
+ "use_layer_norm": false
1193
+ },
1194
+ {
1195
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
1196
+ "units": 512,
1197
+ "activation": "silu",
1198
+ "use_layer_norm": false
1199
+ }
1200
+ ],
1201
+ "_target_": "protomotions.agents.common.mlp.MLPWithConcat",
1202
+ "in_keys": [
1203
+ "masked_mimic_local_target_poses_norm",
1204
+ "masked_mimic_local_target_masks",
1205
+ "masked_mimic_local_target_times_norm",
1206
+ "masked_mimic_local_target_poses_masks"
1207
+ ],
1208
+ "out_keys": [
1209
+ "encoder_local_target_features"
1210
+ ],
1211
+ "output_activation": null,
1212
+ "module_operations": [
1213
+ {
1214
+ "$type": "protomotions.agents.common.config.ModuleOperationForwardConfig"
1215
+ }
1216
+ ]
1217
+ },
1218
+ {
1219
+ "$type": "protomotions.agents.common.config.MLPWithConcatConfig",
1220
+ "normalize_obs": false,
1221
+ "norm_clamp_value": 5.0,
1222
+ "norm_ema_decay": 0.999,
1223
+ "num_out": 256,
1224
+ "layers": [
1225
+ {
1226
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
1227
+ "units": 512,
1228
+ "activation": "silu",
1229
+ "use_layer_norm": false
1230
+ },
1231
+ {
1232
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
1233
+ "units": 512,
1234
+ "activation": "silu",
1235
+ "use_layer_norm": false
1236
+ }
1237
+ ],
1238
+ "_target_": "protomotions.agents.common.mlp.MLPWithConcat",
1239
+ "in_keys": [
1240
+ "masked_mimic_global_target_poses_norm",
1241
+ "masked_mimic_target_masks",
1242
+ "masked_mimic_target_times_norm",
1243
+ "masked_mimic_target_poses_masks"
1244
+ ],
1245
+ "out_keys": [
1246
+ "encoder_global_target_features"
1247
+ ],
1248
+ "output_activation": null,
1249
+ "module_operations": [
1250
+ {
1251
+ "$type": "protomotions.agents.common.config.ModuleOperationForwardConfig"
1252
+ }
1253
+ ]
1254
+ },
1255
+ {
1256
+ "$type": "protomotions.agents.common.config.MLPWithConcatConfig",
1257
+ "normalize_obs": false,
1258
+ "norm_clamp_value": 5.0,
1259
+ "norm_ema_decay": 0.999,
1260
+ "num_out": 512,
1261
+ "layers": [
1262
+ {
1263
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
1264
+ "units": 1024,
1265
+ "activation": "silu",
1266
+ "use_layer_norm": false
1267
+ },
1268
+ {
1269
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
1270
+ "units": 1024,
1271
+ "activation": "silu",
1272
+ "use_layer_norm": false
1273
+ },
1274
+ {
1275
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
1276
+ "units": 1024,
1277
+ "activation": "silu",
1278
+ "use_layer_norm": false
1279
+ },
1280
+ {
1281
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
1282
+ "units": 1024,
1283
+ "activation": "silu",
1284
+ "use_layer_norm": false
1285
+ },
1286
+ {
1287
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
1288
+ "units": 1024,
1289
+ "activation": "silu",
1290
+ "use_layer_norm": false
1291
+ }
1292
+ ],
1293
+ "_target_": "protomotions.agents.common.mlp.MLPWithConcat",
1294
+ "in_keys": [
1295
+ "max_coords_obs_norm",
1296
+ "mimic_target_poses_norm",
1297
+ "encoder_local_target_features",
1298
+ "encoder_global_target_features",
1299
+ "masked_mimic_style_poses_norm",
1300
+ "masked_mimic_style_velocities_norm",
1301
+ "masked_mimic_style_masks_flat",
1302
+ "masked_mimic_style_frame_masks",
1303
+ "masked_mimic_velocity_command",
1304
+ "masked_mimic_velocity_command_mask"
1305
+ ],
1306
+ "out_keys": [
1307
+ "encoder_trunk_out"
1308
+ ],
1309
+ "output_activation": "silu",
1310
+ "module_operations": [
1311
+ {
1312
+ "$type": "protomotions.agents.common.config.ModuleOperationForwardConfig"
1313
+ }
1314
+ ]
1315
+ },
1316
+ {
1317
+ "$type": "protomotions.agents.common.config.MLPWithConcatConfig",
1318
+ "normalize_obs": false,
1319
+ "norm_clamp_value": 5.0,
1320
+ "norm_ema_decay": 0.999,
1321
+ "num_out": 64,
1322
+ "layers": [
1323
+ {
1324
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
1325
+ "units": 512,
1326
+ "activation": "silu",
1327
+ "use_layer_norm": false
1328
+ },
1329
+ {
1330
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
1331
+ "units": 256,
1332
+ "activation": "silu",
1333
+ "use_layer_norm": false
1334
+ },
1335
+ {
1336
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
1337
+ "units": 128,
1338
+ "activation": "silu",
1339
+ "use_layer_norm": false
1340
+ }
1341
+ ],
1342
+ "_target_": "protomotions.agents.common.mlp.MLPWithConcat",
1343
+ "in_keys": [
1344
+ "encoder_trunk_out"
1345
+ ],
1346
+ "out_keys": [
1347
+ "encoder_mu"
1348
+ ],
1349
+ "output_activation": null,
1350
+ "module_operations": [
1351
+ {
1352
+ "$type": "protomotions.agents.common.config.ModuleOperationForwardConfig"
1353
+ }
1354
+ ]
1355
+ },
1356
+ {
1357
+ "$type": "protomotions.agents.common.config.MLPWithConcatConfig",
1358
+ "normalize_obs": false,
1359
+ "norm_clamp_value": 5.0,
1360
+ "norm_ema_decay": 0.999,
1361
+ "num_out": 64,
1362
+ "layers": [
1363
+ {
1364
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
1365
+ "units": 512,
1366
+ "activation": "silu",
1367
+ "use_layer_norm": false
1368
+ },
1369
+ {
1370
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
1371
+ "units": 256,
1372
+ "activation": "silu",
1373
+ "use_layer_norm": false
1374
+ },
1375
+ {
1376
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
1377
+ "units": 128,
1378
+ "activation": "silu",
1379
+ "use_layer_norm": false
1380
+ }
1381
+ ],
1382
+ "_target_": "protomotions.agents.common.mlp.MLPWithConcat",
1383
+ "in_keys": [
1384
+ "encoder_trunk_out"
1385
+ ],
1386
+ "out_keys": [
1387
+ "encoder_logvar"
1388
+ ],
1389
+ "output_activation": null,
1390
+ "module_operations": [
1391
+ {
1392
+ "$type": "protomotions.agents.common.config.ModuleOperationForwardConfig"
1393
+ }
1394
+ ]
1395
+ }
1396
+ ],
1397
+ "_target_": "protomotions.agents.common.common.ModuleContainer",
1398
+ "in_keys": [
1399
+ "max_coords_obs",
1400
+ "mimic_target_poses",
1401
+ "masked_mimic_local_target_poses",
1402
+ "masked_mimic_target_poses",
1403
+ "masked_mimic_target_times",
1404
+ "masked_mimic_local_target_times",
1405
+ "masked_mimic_style_poses",
1406
+ "masked_mimic_style_velocities",
1407
+ "masked_mimic_style_masks",
1408
+ "masked_mimic_local_target_masks",
1409
+ "masked_mimic_local_target_poses_masks",
1410
+ "masked_mimic_target_masks",
1411
+ "masked_mimic_target_poses_masks",
1412
+ "masked_mimic_style_frame_masks",
1413
+ "masked_mimic_velocity_command",
1414
+ "masked_mimic_velocity_command_mask"
1415
+ ],
1416
+ "out_keys": [
1417
+ "encoder_mu",
1418
+ "encoder_logvar"
1419
+ ]
1420
+ },
1421
+ "prior": {
1422
+ "$type": "protomotions.agents.common.config.ModuleContainerConfig",
1423
+ "models": [
1424
+ {
1425
+ "$type": "protomotions.agents.common.config.ObsProcessorConfig",
1426
+ "normalize_obs": true,
1427
+ "norm_clamp_value": 5.0,
1428
+ "norm_ema_decay": 0.999,
1429
+ "_target_": "protomotions.agents.common.common.ObsProcessor",
1430
+ "in_keys": [
1431
+ "scene_box_corners"
1432
+ ],
1433
+ "out_keys": [
1434
+ "scene_box_norm"
1435
+ ],
1436
+ "module_operations": [
1437
+ {
1438
+ "$type": "protomotions.agents.common.config.ModuleOperationForwardConfig"
1439
+ }
1440
+ ]
1441
+ },
1442
+ {
1443
+ "$type": "protomotions.agents.common.config.MLPWithConcatConfig",
1444
+ "normalize_obs": false,
1445
+ "norm_clamp_value": 5.0,
1446
+ "norm_ema_decay": 0.999,
1447
+ "num_out": 1024,
1448
+ "layers": [
1449
+ {
1450
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
1451
+ "units": 1024,
1452
+ "activation": "silu",
1453
+ "use_layer_norm": false
1454
+ }
1455
+ ],
1456
+ "_target_": "protomotions.agents.common.mlp.MLPWithConcat",
1457
+ "in_keys": [
1458
+ "scene_box_norm"
1459
+ ],
1460
+ "out_keys": [
1461
+ "scene_box_tokens"
1462
+ ],
1463
+ "output_activation": null,
1464
+ "module_operations": [
1465
+ {
1466
+ "$type": "protomotions.agents.common.config.ModuleOperationForwardConfig"
1467
+ }
1468
+ ]
1469
+ },
1470
+ {
1471
+ "$type": "protomotions.agents.common.config.ObsProcessorConfig",
1472
+ "normalize_obs": true,
1473
+ "norm_clamp_value": 5.0,
1474
+ "norm_ema_decay": 0.999,
1475
+ "_target_": "protomotions.agents.common.common.ObsProcessor",
1476
+ "in_keys": [
1477
+ "previous_actions"
1478
+ ],
1479
+ "out_keys": [
1480
+ "prior_previous_actions_norm"
1481
+ ],
1482
+ "module_operations": [
1483
+ {
1484
+ "$type": "protomotions.agents.common.config.ModuleOperationForwardConfig"
1485
+ }
1486
+ ]
1487
+ },
1488
+ {
1489
+ "$type": "protomotions.agents.common.config.ObsProcessorConfig",
1490
+ "normalize_obs": true,
1491
+ "norm_clamp_value": 5.0,
1492
+ "norm_ema_decay": 0.999,
1493
+ "_target_": "protomotions.agents.common.common.ObsProcessor",
1494
+ "in_keys": [
1495
+ "reduced_coords_obs"
1496
+ ],
1497
+ "out_keys": [
1498
+ "prior_reduced_coords_norm"
1499
+ ],
1500
+ "module_operations": [
1501
+ {
1502
+ "$type": "protomotions.agents.common.config.ModuleOperationForwardConfig"
1503
+ }
1504
+ ]
1505
+ },
1506
+ {
1507
+ "$type": "protomotions.agents.common.config.ObsProcessorConfig",
1508
+ "normalize_obs": true,
1509
+ "norm_clamp_value": 5.0,
1510
+ "norm_ema_decay": 0.999,
1511
+ "_target_": "protomotions.agents.common.common.ObsProcessor",
1512
+ "in_keys": [
1513
+ "masked_mimic_local_target_poses"
1514
+ ],
1515
+ "out_keys": [
1516
+ "local_target_poses_seq"
1517
+ ],
1518
+ "module_operations": [
1519
+ {
1520
+ "$type": "protomotions.agents.common.config.ModuleOperationReshapeConfig",
1521
+ "new_shape": [
1522
+ "batch_size",
1523
+ 5,
1524
+ -1
1525
+ ]
1526
+ },
1527
+ {
1528
+ "$type": "protomotions.agents.common.config.ModuleOperationForwardConfig"
1529
+ }
1530
+ ]
1531
+ },
1532
+ {
1533
+ "$type": "protomotions.agents.common.config.ObsProcessorConfig",
1534
+ "normalize_obs": true,
1535
+ "norm_clamp_value": 5.0,
1536
+ "norm_ema_decay": 0.999,
1537
+ "_target_": "protomotions.agents.common.common.ObsProcessor",
1538
+ "in_keys": [
1539
+ "fk_masked_mimic_target_poses"
1540
+ ],
1541
+ "out_keys": [
1542
+ "global_target_poses_seq"
1543
+ ],
1544
+ "module_operations": [
1545
+ {
1546
+ "$type": "protomotions.agents.common.config.ModuleOperationReshapeConfig",
1547
+ "new_shape": [
1548
+ "batch_size",
1549
+ 5,
1550
+ -1
1551
+ ]
1552
+ },
1553
+ {
1554
+ "$type": "protomotions.agents.common.config.ModuleOperationForwardConfig"
1555
+ }
1556
+ ]
1557
+ },
1558
+ {
1559
+ "$type": "protomotions.agents.common.config.ObsProcessorConfig",
1560
+ "normalize_obs": false,
1561
+ "norm_clamp_value": 5.0,
1562
+ "norm_ema_decay": 0.999,
1563
+ "_target_": "protomotions.agents.common.common.ObsProcessor",
1564
+ "in_keys": [
1565
+ "masked_mimic_local_target_masks"
1566
+ ],
1567
+ "out_keys": [
1568
+ "local_target_masks_seq"
1569
+ ],
1570
+ "module_operations": [
1571
+ {
1572
+ "$type": "protomotions.agents.common.config.ModuleOperationReshapeConfig",
1573
+ "new_shape": [
1574
+ "batch_size",
1575
+ 5,
1576
+ -1
1577
+ ]
1578
+ }
1579
+ ]
1580
+ },
1581
+ {
1582
+ "$type": "protomotions.agents.common.config.ObsProcessorConfig",
1583
+ "normalize_obs": false,
1584
+ "norm_clamp_value": 5.0,
1585
+ "norm_ema_decay": 0.999,
1586
+ "_target_": "protomotions.agents.common.common.ObsProcessor",
1587
+ "in_keys": [
1588
+ "masked_mimic_target_masks"
1589
+ ],
1590
+ "out_keys": [
1591
+ "global_target_masks_seq"
1592
+ ],
1593
+ "module_operations": [
1594
+ {
1595
+ "$type": "protomotions.agents.common.config.ModuleOperationReshapeConfig",
1596
+ "new_shape": [
1597
+ "batch_size",
1598
+ 5,
1599
+ -1
1600
+ ]
1601
+ }
1602
+ ]
1603
+ },
1604
+ {
1605
+ "$type": "protomotions.agents.common.config.ObsProcessorConfig",
1606
+ "normalize_obs": true,
1607
+ "norm_clamp_value": 5.0,
1608
+ "norm_ema_decay": 0.999,
1609
+ "_target_": "protomotions.agents.common.common.ObsProcessor",
1610
+ "in_keys": [
1611
+ "masked_mimic_target_times"
1612
+ ],
1613
+ "out_keys": [
1614
+ "target_times_seq"
1615
+ ],
1616
+ "module_operations": [
1617
+ {
1618
+ "$type": "protomotions.agents.common.config.ModuleOperationReshapeConfig",
1619
+ "new_shape": [
1620
+ "batch_size",
1621
+ 5,
1622
+ -1
1623
+ ]
1624
+ },
1625
+ {
1626
+ "$type": "protomotions.agents.common.config.ModuleOperationForwardConfig"
1627
+ }
1628
+ ]
1629
+ },
1630
+ {
1631
+ "$type": "protomotions.agents.common.config.ObsProcessorConfig",
1632
+ "normalize_obs": true,
1633
+ "norm_clamp_value": 5.0,
1634
+ "norm_ema_decay": 0.999,
1635
+ "_target_": "protomotions.agents.common.common.ObsProcessor",
1636
+ "in_keys": [
1637
+ "masked_mimic_local_target_times"
1638
+ ],
1639
+ "out_keys": [
1640
+ "local_target_times_seq"
1641
+ ],
1642
+ "module_operations": [
1643
+ {
1644
+ "$type": "protomotions.agents.common.config.ModuleOperationReshapeConfig",
1645
+ "new_shape": [
1646
+ "batch_size",
1647
+ 5,
1648
+ -1
1649
+ ]
1650
+ },
1651
+ {
1652
+ "$type": "protomotions.agents.common.config.ModuleOperationForwardConfig"
1653
+ }
1654
+ ]
1655
+ },
1656
+ {
1657
+ "$type": "protomotions.agents.common.config.ObsProcessorConfig",
1658
+ "normalize_obs": true,
1659
+ "norm_clamp_value": 5.0,
1660
+ "norm_ema_decay": 0.999,
1661
+ "_target_": "protomotions.agents.common.common.ObsProcessor",
1662
+ "in_keys": [
1663
+ "historical_proprioception"
1664
+ ],
1665
+ "out_keys": [
1666
+ "historical_pose_obs_seq"
1667
+ ],
1668
+ "module_operations": [
1669
+ {
1670
+ "$type": "protomotions.agents.common.config.ModuleOperationReshapeConfig",
1671
+ "new_shape": [
1672
+ "batch_size",
1673
+ 5,
1674
+ -1
1675
+ ]
1676
+ },
1677
+ {
1678
+ "$type": "protomotions.agents.common.config.ModuleOperationForwardConfig"
1679
+ }
1680
+ ]
1681
+ },
1682
+ {
1683
+ "$type": "protomotions.agents.common.config.ObsProcessorConfig",
1684
+ "normalize_obs": true,
1685
+ "norm_clamp_value": 5.0,
1686
+ "norm_ema_decay": 0.999,
1687
+ "_target_": "protomotions.agents.common.common.ObsProcessor",
1688
+ "in_keys": [
1689
+ "masked_mimic_style_poses"
1690
+ ],
1691
+ "out_keys": [
1692
+ "style_poses_seq"
1693
+ ],
1694
+ "module_operations": [
1695
+ {
1696
+ "$type": "protomotions.agents.common.config.ModuleOperationReshapeConfig",
1697
+ "new_shape": [
1698
+ "batch_size",
1699
+ 5,
1700
+ -1
1701
+ ]
1702
+ },
1703
+ {
1704
+ "$type": "protomotions.agents.common.config.ModuleOperationForwardConfig"
1705
+ }
1706
+ ]
1707
+ },
1708
+ {
1709
+ "$type": "protomotions.agents.common.config.ObsProcessorConfig",
1710
+ "normalize_obs": true,
1711
+ "norm_clamp_value": 5.0,
1712
+ "norm_ema_decay": 0.999,
1713
+ "_target_": "protomotions.agents.common.common.ObsProcessor",
1714
+ "in_keys": [
1715
+ "masked_mimic_style_velocities"
1716
+ ],
1717
+ "out_keys": [
1718
+ "style_velocities_seq"
1719
+ ],
1720
+ "module_operations": [
1721
+ {
1722
+ "$type": "protomotions.agents.common.config.ModuleOperationReshapeConfig",
1723
+ "new_shape": [
1724
+ "batch_size",
1725
+ 5,
1726
+ -1
1727
+ ]
1728
+ },
1729
+ {
1730
+ "$type": "protomotions.agents.common.config.ModuleOperationForwardConfig"
1731
+ }
1732
+ ]
1733
+ },
1734
+ {
1735
+ "$type": "protomotions.agents.common.config.ObsProcessorConfig",
1736
+ "normalize_obs": false,
1737
+ "norm_clamp_value": 5.0,
1738
+ "norm_ema_decay": 0.999,
1739
+ "_target_": "protomotions.agents.common.common.ObsProcessor",
1740
+ "in_keys": [
1741
+ "masked_mimic_style_masks"
1742
+ ],
1743
+ "out_keys": [
1744
+ "style_condition_masks_seq"
1745
+ ],
1746
+ "module_operations": [
1747
+ {
1748
+ "$type": "protomotions.agents.common.config.ModuleOperationReshapeConfig",
1749
+ "new_shape": [
1750
+ "batch_size",
1751
+ 5,
1752
+ -1
1753
+ ]
1754
+ }
1755
+ ]
1756
+ },
1757
+ {
1758
+ "$type": "protomotions.agents.common.config.ObsProcessorConfig",
1759
+ "normalize_obs": false,
1760
+ "norm_clamp_value": 5.0,
1761
+ "norm_ema_decay": 0.999,
1762
+ "_target_": "protomotions.agents.common.common.ObsProcessor",
1763
+ "in_keys": [
1764
+ "masked_mimic_style_frame_masks"
1765
+ ],
1766
+ "out_keys": [
1767
+ "style_frame_masks_seq"
1768
+ ],
1769
+ "module_operations": [
1770
+ {
1771
+ "$type": "protomotions.agents.common.config.ModuleOperationReshapeConfig",
1772
+ "new_shape": [
1773
+ "batch_size",
1774
+ 5,
1775
+ -1
1776
+ ]
1777
+ }
1778
+ ]
1779
+ },
1780
+ {
1781
+ "$type": "protomotions.agents.common.config.ObsProcessorConfig",
1782
+ "normalize_obs": true,
1783
+ "norm_clamp_value": 5.0,
1784
+ "norm_ema_decay": 0.999,
1785
+ "_target_": "protomotions.agents.common.common.ObsProcessor",
1786
+ "in_keys": [
1787
+ "fk_max_coords_obs"
1788
+ ],
1789
+ "out_keys": [
1790
+ "prior_fk_max_coords_obs_norm"
1791
+ ],
1792
+ "module_operations": [
1793
+ {
1794
+ "$type": "protomotions.agents.common.config.ModuleOperationForwardConfig"
1795
+ }
1796
+ ]
1797
+ },
1798
+ {
1799
+ "$type": "protomotions.agents.common.config.MLPWithConcatConfig",
1800
+ "normalize_obs": false,
1801
+ "norm_clamp_value": 5.0,
1802
+ "norm_ema_decay": 0.999,
1803
+ "num_out": 1024,
1804
+ "layers": [
1805
+ {
1806
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
1807
+ "units": 1024,
1808
+ "activation": "silu",
1809
+ "use_layer_norm": false
1810
+ },
1811
+ {
1812
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
1813
+ "units": 1024,
1814
+ "activation": "silu",
1815
+ "use_layer_norm": false
1816
+ },
1817
+ {
1818
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
1819
+ "units": 1024,
1820
+ "activation": "silu",
1821
+ "use_layer_norm": false
1822
+ }
1823
+ ],
1824
+ "_target_": "protomotions.agents.common.mlp.MLPWithConcat",
1825
+ "in_keys": [
1826
+ "prior_fk_max_coords_obs_norm",
1827
+ "prior_reduced_coords_norm",
1828
+ "prior_previous_actions_norm"
1829
+ ],
1830
+ "out_keys": [
1831
+ "current_state_token"
1832
+ ],
1833
+ "output_activation": null,
1834
+ "module_operations": [
1835
+ {
1836
+ "$type": "protomotions.agents.common.config.ModuleOperationReshapeConfig",
1837
+ "new_shape": [
1838
+ "batch_size",
1839
+ 1,
1840
+ -1
1841
+ ]
1842
+ },
1843
+ {
1844
+ "$type": "protomotions.agents.common.config.ModuleOperationForwardConfig"
1845
+ }
1846
+ ]
1847
+ },
1848
+ {
1849
+ "$type": "protomotions.agents.common.config.MLPWithConcatConfig",
1850
+ "normalize_obs": false,
1851
+ "norm_clamp_value": 5.0,
1852
+ "norm_ema_decay": 0.999,
1853
+ "num_out": 1024,
1854
+ "layers": [
1855
+ {
1856
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
1857
+ "units": 1024,
1858
+ "activation": "silu",
1859
+ "use_layer_norm": false
1860
+ },
1861
+ {
1862
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
1863
+ "units": 1024,
1864
+ "activation": "silu",
1865
+ "use_layer_norm": false
1866
+ },
1867
+ {
1868
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
1869
+ "units": 1024,
1870
+ "activation": "silu",
1871
+ "use_layer_norm": false
1872
+ }
1873
+ ],
1874
+ "_target_": "protomotions.agents.common.mlp.MLPWithConcat",
1875
+ "in_keys": [
1876
+ "masked_mimic_velocity_command",
1877
+ "masked_mimic_velocity_command_mask"
1878
+ ],
1879
+ "out_keys": [
1880
+ "masked_mimic_velocity_command_token"
1881
+ ],
1882
+ "output_activation": null,
1883
+ "module_operations": [
1884
+ {
1885
+ "$type": "protomotions.agents.common.config.ModuleOperationReshapeConfig",
1886
+ "new_shape": [
1887
+ "batch_size",
1888
+ 1,
1889
+ -1
1890
+ ]
1891
+ },
1892
+ {
1893
+ "$type": "protomotions.agents.common.config.ModuleOperationForwardConfig"
1894
+ }
1895
+ ]
1896
+ },
1897
+ {
1898
+ "$type": "protomotions.agents.common.config.MLPWithConcatConfig",
1899
+ "normalize_obs": false,
1900
+ "norm_clamp_value": 5.0,
1901
+ "norm_ema_decay": 0.999,
1902
+ "num_out": 1024,
1903
+ "layers": [
1904
+ {
1905
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
1906
+ "units": 1024,
1907
+ "activation": "silu",
1908
+ "use_layer_norm": false
1909
+ },
1910
+ {
1911
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
1912
+ "units": 1024,
1913
+ "activation": "silu",
1914
+ "use_layer_norm": false
1915
+ },
1916
+ {
1917
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
1918
+ "units": 1024,
1919
+ "activation": "silu",
1920
+ "use_layer_norm": false
1921
+ }
1922
+ ],
1923
+ "_target_": "protomotions.agents.common.mlp.MLPWithConcat",
1924
+ "in_keys": [
1925
+ "style_poses_seq",
1926
+ "style_velocities_seq",
1927
+ "style_condition_masks_seq"
1928
+ ],
1929
+ "out_keys": [
1930
+ "masked_mimic_style_frame_tokens"
1931
+ ],
1932
+ "output_activation": null,
1933
+ "module_operations": [
1934
+ {
1935
+ "$type": "protomotions.agents.common.config.ModuleOperationReshapeConfig",
1936
+ "new_shape": [
1937
+ "batch_size",
1938
+ 5,
1939
+ -1
1940
+ ]
1941
+ },
1942
+ {
1943
+ "$type": "protomotions.agents.common.config.ModuleOperationForwardConfig"
1944
+ }
1945
+ ]
1946
+ },
1947
+ {
1948
+ "$type": "protomotions.agents.common.config.MaskedMeanConfig",
1949
+ "_target_": "protomotions.agents.common.common.MaskedMean",
1950
+ "in_keys": [
1951
+ "masked_mimic_style_frame_tokens",
1952
+ "style_frame_masks_seq"
1953
+ ],
1954
+ "out_keys": [
1955
+ "masked_mimic_style_token"
1956
+ ]
1957
+ },
1958
+ {
1959
+ "$type": "protomotions.agents.common.config.MLPWithConcatConfig",
1960
+ "normalize_obs": false,
1961
+ "norm_clamp_value": 5.0,
1962
+ "norm_ema_decay": 0.999,
1963
+ "num_out": 1024,
1964
+ "layers": [
1965
+ {
1966
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
1967
+ "units": 1024,
1968
+ "activation": "silu",
1969
+ "use_layer_norm": false
1970
+ },
1971
+ {
1972
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
1973
+ "units": 1024,
1974
+ "activation": "silu",
1975
+ "use_layer_norm": false
1976
+ },
1977
+ {
1978
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
1979
+ "units": 1024,
1980
+ "activation": "silu",
1981
+ "use_layer_norm": false
1982
+ }
1983
+ ],
1984
+ "_target_": "protomotions.agents.common.mlp.MLPWithConcat",
1985
+ "in_keys": [
1986
+ "local_target_poses_seq",
1987
+ "local_target_masks_seq",
1988
+ "local_target_times_seq"
1989
+ ],
1990
+ "out_keys": [
1991
+ "masked_mimic_local_target_token"
1992
+ ],
1993
+ "output_activation": null,
1994
+ "module_operations": [
1995
+ {
1996
+ "$type": "protomotions.agents.common.config.ModuleOperationReshapeConfig",
1997
+ "new_shape": [
1998
+ "batch_size",
1999
+ 5,
2000
+ -1
2001
+ ]
2002
+ },
2003
+ {
2004
+ "$type": "protomotions.agents.common.config.ModuleOperationForwardConfig"
2005
+ }
2006
+ ]
2007
+ },
2008
+ {
2009
+ "$type": "protomotions.agents.common.config.MLPWithConcatConfig",
2010
+ "normalize_obs": false,
2011
+ "norm_clamp_value": 5.0,
2012
+ "norm_ema_decay": 0.999,
2013
+ "num_out": 1024,
2014
+ "layers": [
2015
+ {
2016
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
2017
+ "units": 1024,
2018
+ "activation": "silu",
2019
+ "use_layer_norm": false
2020
+ },
2021
+ {
2022
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
2023
+ "units": 1024,
2024
+ "activation": "silu",
2025
+ "use_layer_norm": false
2026
+ },
2027
+ {
2028
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
2029
+ "units": 1024,
2030
+ "activation": "silu",
2031
+ "use_layer_norm": false
2032
+ }
2033
+ ],
2034
+ "_target_": "protomotions.agents.common.mlp.MLPWithConcat",
2035
+ "in_keys": [
2036
+ "global_target_poses_seq",
2037
+ "global_target_masks_seq",
2038
+ "target_times_seq"
2039
+ ],
2040
+ "out_keys": [
2041
+ "masked_mimic_global_target_token"
2042
+ ],
2043
+ "output_activation": null,
2044
+ "module_operations": [
2045
+ {
2046
+ "$type": "protomotions.agents.common.config.ModuleOperationReshapeConfig",
2047
+ "new_shape": [
2048
+ "batch_size",
2049
+ 5,
2050
+ -1
2051
+ ]
2052
+ },
2053
+ {
2054
+ "$type": "protomotions.agents.common.config.ModuleOperationForwardConfig"
2055
+ }
2056
+ ]
2057
+ },
2058
+ {
2059
+ "$type": "protomotions.agents.common.config.MLPWithConcatConfig",
2060
+ "normalize_obs": false,
2061
+ "norm_clamp_value": 5.0,
2062
+ "norm_ema_decay": 0.999,
2063
+ "num_out": 1024,
2064
+ "layers": [
2065
+ {
2066
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
2067
+ "units": 1024,
2068
+ "activation": "silu",
2069
+ "use_layer_norm": false
2070
+ },
2071
+ {
2072
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
2073
+ "units": 1024,
2074
+ "activation": "silu",
2075
+ "use_layer_norm": false
2076
+ },
2077
+ {
2078
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
2079
+ "units": 1024,
2080
+ "activation": "silu",
2081
+ "use_layer_norm": false
2082
+ }
2083
+ ],
2084
+ "_target_": "protomotions.agents.common.mlp.MLPWithConcat",
2085
+ "in_keys": [
2086
+ "historical_pose_obs_seq"
2087
+ ],
2088
+ "out_keys": [
2089
+ "historical_pose_obs_token"
2090
+ ],
2091
+ "output_activation": null,
2092
+ "module_operations": [
2093
+ {
2094
+ "$type": "protomotions.agents.common.config.ModuleOperationReshapeConfig",
2095
+ "new_shape": [
2096
+ "batch_size",
2097
+ 5,
2098
+ -1
2099
+ ]
2100
+ },
2101
+ {
2102
+ "$type": "protomotions.agents.common.config.ModuleOperationForwardConfig"
2103
+ }
2104
+ ]
2105
+ },
2106
+ {
2107
+ "$type": "protomotions.agents.common.config.TransformerConfig",
2108
+ "_target_": "protomotions.agents.common.transformer.Transformer",
2109
+ "in_keys": [
2110
+ "current_state_token",
2111
+ "masked_mimic_velocity_command_token",
2112
+ "masked_mimic_local_target_token",
2113
+ "masked_mimic_global_target_token",
2114
+ "masked_mimic_style_token",
2115
+ "historical_pose_obs_token",
2116
+ "masked_mimic_velocity_command_mask",
2117
+ "masked_mimic_local_target_poses_masks",
2118
+ "masked_mimic_target_poses_masks",
2119
+ "masked_mimic_style_frame_masks",
2120
+ "scene_box_tokens",
2121
+ "scene_box_mask"
2122
+ ],
2123
+ "out_keys": [
2124
+ "transformer_out"
2125
+ ],
2126
+ "input_and_mask_mapping": {
2127
+ "masked_mimic_velocity_command_token": "masked_mimic_velocity_command_mask",
2128
+ "masked_mimic_local_target_token": "masked_mimic_local_target_poses_masks",
2129
+ "masked_mimic_global_target_token": "masked_mimic_target_poses_masks",
2130
+ "masked_mimic_style_token": "masked_mimic_style_frame_masks",
2131
+ "scene_box_tokens": "scene_box_mask"
2132
+ },
2133
+ "transformer_token_size": 1024,
2134
+ "latent_dim": 1024,
2135
+ "num_heads": 4,
2136
+ "ff_size": 4096,
2137
+ "num_layers": 6,
2138
+ "dropout": 0.0,
2139
+ "activation": "silu",
2140
+ "output_activation": "silu"
2141
+ },
2142
+ {
2143
+ "$type": "protomotions.agents.common.config.MLPWithConcatConfig",
2144
+ "normalize_obs": false,
2145
+ "norm_clamp_value": 5.0,
2146
+ "norm_ema_decay": 0.999,
2147
+ "num_out": 64,
2148
+ "layers": [
2149
+ {
2150
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
2151
+ "units": 512,
2152
+ "activation": "silu",
2153
+ "use_layer_norm": false
2154
+ },
2155
+ {
2156
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
2157
+ "units": 256,
2158
+ "activation": "silu",
2159
+ "use_layer_norm": false
2160
+ },
2161
+ {
2162
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
2163
+ "units": 128,
2164
+ "activation": "silu",
2165
+ "use_layer_norm": false
2166
+ }
2167
+ ],
2168
+ "_target_": "protomotions.agents.common.mlp.MLPWithConcat",
2169
+ "in_keys": [
2170
+ "transformer_out"
2171
+ ],
2172
+ "out_keys": [
2173
+ "decoder_condition"
2174
+ ],
2175
+ "output_activation": null,
2176
+ "module_operations": [
2177
+ {
2178
+ "$type": "protomotions.agents.common.config.ModuleOperationForwardConfig"
2179
+ }
2180
+ ]
2181
+ },
2182
+ {
2183
+ "$type": "protomotions.agents.common.config.MLPWithConcatConfig",
2184
+ "normalize_obs": false,
2185
+ "norm_clamp_value": 5.0,
2186
+ "norm_ema_decay": 0.999,
2187
+ "num_out": 64,
2188
+ "layers": [
2189
+ {
2190
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
2191
+ "units": 512,
2192
+ "activation": "silu",
2193
+ "use_layer_norm": false
2194
+ },
2195
+ {
2196
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
2197
+ "units": 256,
2198
+ "activation": "silu",
2199
+ "use_layer_norm": false
2200
+ },
2201
+ {
2202
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
2203
+ "units": 128,
2204
+ "activation": "silu",
2205
+ "use_layer_norm": false
2206
+ }
2207
+ ],
2208
+ "_target_": "protomotions.agents.common.mlp.MLPWithConcat",
2209
+ "in_keys": [
2210
+ "transformer_out"
2211
+ ],
2212
+ "out_keys": [
2213
+ "prior_mu"
2214
+ ],
2215
+ "output_activation": null,
2216
+ "module_operations": [
2217
+ {
2218
+ "$type": "protomotions.agents.common.config.ModuleOperationForwardConfig"
2219
+ }
2220
+ ]
2221
+ },
2222
+ {
2223
+ "$type": "protomotions.agents.common.config.MLPWithConcatConfig",
2224
+ "normalize_obs": false,
2225
+ "norm_clamp_value": 5.0,
2226
+ "norm_ema_decay": 0.999,
2227
+ "num_out": 64,
2228
+ "layers": [
2229
+ {
2230
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
2231
+ "units": 512,
2232
+ "activation": "silu",
2233
+ "use_layer_norm": false
2234
+ },
2235
+ {
2236
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
2237
+ "units": 256,
2238
+ "activation": "silu",
2239
+ "use_layer_norm": false
2240
+ },
2241
+ {
2242
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
2243
+ "units": 128,
2244
+ "activation": "silu",
2245
+ "use_layer_norm": false
2246
+ }
2247
+ ],
2248
+ "_target_": "protomotions.agents.common.mlp.MLPWithConcat",
2249
+ "in_keys": [
2250
+ "transformer_out"
2251
+ ],
2252
+ "out_keys": [
2253
+ "prior_logvar"
2254
+ ],
2255
+ "output_activation": null,
2256
+ "module_operations": [
2257
+ {
2258
+ "$type": "protomotions.agents.common.config.ModuleOperationForwardConfig"
2259
+ }
2260
+ ]
2261
+ }
2262
+ ],
2263
+ "_target_": "protomotions.agents.common.common.ModuleContainer",
2264
+ "in_keys": [
2265
+ "scene_box_corners",
2266
+ "previous_actions",
2267
+ "reduced_coords_obs",
2268
+ "masked_mimic_local_target_poses",
2269
+ "fk_masked_mimic_target_poses",
2270
+ "masked_mimic_local_target_masks",
2271
+ "masked_mimic_target_masks",
2272
+ "masked_mimic_target_times",
2273
+ "masked_mimic_local_target_times",
2274
+ "historical_proprioception",
2275
+ "masked_mimic_style_poses",
2276
+ "masked_mimic_style_velocities",
2277
+ "masked_mimic_style_masks",
2278
+ "masked_mimic_style_frame_masks",
2279
+ "fk_max_coords_obs",
2280
+ "masked_mimic_velocity_command",
2281
+ "masked_mimic_velocity_command_mask",
2282
+ "masked_mimic_local_target_poses_masks",
2283
+ "masked_mimic_target_poses_masks",
2284
+ "scene_box_mask"
2285
+ ],
2286
+ "out_keys": [
2287
+ "prior_mu",
2288
+ "prior_logvar",
2289
+ "decoder_condition"
2290
+ ]
2291
+ },
2292
+ "trunk": {
2293
+ "$type": "protomotions.agents.common.config.ModuleContainerConfig",
2294
+ "models": [
2295
+ {
2296
+ "$type": "protomotions.agents.common.config.ObsProcessorConfig",
2297
+ "normalize_obs": true,
2298
+ "norm_clamp_value": 5.0,
2299
+ "norm_ema_decay": 0.999,
2300
+ "_target_": "protomotions.agents.common.common.ObsProcessor",
2301
+ "in_keys": [
2302
+ "reduced_coords_obs"
2303
+ ],
2304
+ "out_keys": [
2305
+ "decoder_reduced_coords_norm"
2306
+ ],
2307
+ "module_operations": [
2308
+ {
2309
+ "$type": "protomotions.agents.common.config.ModuleOperationForwardConfig"
2310
+ }
2311
+ ]
2312
+ },
2313
+ {
2314
+ "$type": "protomotions.agents.common.config.ObsProcessorConfig",
2315
+ "normalize_obs": true,
2316
+ "norm_clamp_value": 5.0,
2317
+ "norm_ema_decay": 0.999,
2318
+ "_target_": "protomotions.agents.common.common.ObsProcessor",
2319
+ "in_keys": [
2320
+ "fk_max_coords_obs"
2321
+ ],
2322
+ "out_keys": [
2323
+ "fk_max_coords_obs_norm"
2324
+ ],
2325
+ "module_operations": [
2326
+ {
2327
+ "$type": "protomotions.agents.common.config.ModuleOperationForwardConfig"
2328
+ }
2329
+ ]
2330
+ },
2331
+ {
2332
+ "$type": "protomotions.agents.common.config.ObsProcessorConfig",
2333
+ "normalize_obs": true,
2334
+ "norm_clamp_value": 5.0,
2335
+ "norm_ema_decay": 0.999,
2336
+ "_target_": "protomotions.agents.common.common.ObsProcessor",
2337
+ "in_keys": [
2338
+ "previous_actions"
2339
+ ],
2340
+ "out_keys": [
2341
+ "previous_actions_norm"
2342
+ ],
2343
+ "module_operations": [
2344
+ {
2345
+ "$type": "protomotions.agents.common.config.ModuleOperationForwardConfig"
2346
+ }
2347
+ ]
2348
+ },
2349
+ {
2350
+ "$type": "protomotions.agents.common.config.MLPWithConcatConfig",
2351
+ "normalize_obs": false,
2352
+ "norm_clamp_value": 5.0,
2353
+ "norm_ema_decay": 0.999,
2354
+ "num_out": 64,
2355
+ "layers": [
2356
+ {
2357
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
2358
+ "units": 512,
2359
+ "activation": "silu",
2360
+ "use_layer_norm": false
2361
+ },
2362
+ {
2363
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
2364
+ "units": 256,
2365
+ "activation": "silu",
2366
+ "use_layer_norm": false
2367
+ },
2368
+ {
2369
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
2370
+ "units": 128,
2371
+ "activation": "silu",
2372
+ "use_layer_norm": false
2373
+ }
2374
+ ],
2375
+ "_target_": "protomotions.agents.common.mlp.MLPWithConcat",
2376
+ "in_keys": [
2377
+ "decoder_condition",
2378
+ "vae_latent"
2379
+ ],
2380
+ "out_keys": [
2381
+ "solution_condition_features"
2382
+ ],
2383
+ "output_activation": null,
2384
+ "module_operations": [
2385
+ {
2386
+ "$type": "protomotions.agents.common.config.ModuleOperationForwardConfig"
2387
+ }
2388
+ ]
2389
+ },
2390
+ {
2391
+ "$type": "protomotions.agents.common.config.MLPWithConcatConfig",
2392
+ "normalize_obs": false,
2393
+ "norm_clamp_value": 5.0,
2394
+ "norm_ema_decay": 0.999,
2395
+ "num_out": 64,
2396
+ "layers": [
2397
+ {
2398
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
2399
+ "units": 512,
2400
+ "activation": "silu",
2401
+ "use_layer_norm": false
2402
+ },
2403
+ {
2404
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
2405
+ "units": 256,
2406
+ "activation": "silu",
2407
+ "use_layer_norm": false
2408
+ },
2409
+ {
2410
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
2411
+ "units": 128,
2412
+ "activation": "silu",
2413
+ "use_layer_norm": false
2414
+ }
2415
+ ],
2416
+ "_target_": "protomotions.agents.common.mlp.MLPWithConcat",
2417
+ "in_keys": [
2418
+ "solution_condition_features"
2419
+ ],
2420
+ "out_keys": [
2421
+ "latent_dynamics_predicted"
2422
+ ],
2423
+ "output_activation": null,
2424
+ "module_operations": [
2425
+ {
2426
+ "$type": "protomotions.agents.common.config.ModuleOperationForwardConfig"
2427
+ }
2428
+ ]
2429
+ },
2430
+ {
2431
+ "$type": "protomotions.agents.common.config.MLPWithConcatConfig",
2432
+ "normalize_obs": false,
2433
+ "norm_clamp_value": 5.0,
2434
+ "norm_ema_decay": 0.999,
2435
+ "num_out": 29,
2436
+ "layers": [
2437
+ {
2438
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
2439
+ "units": 1024,
2440
+ "activation": "silu",
2441
+ "use_layer_norm": false
2442
+ },
2443
+ {
2444
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
2445
+ "units": 1024,
2446
+ "activation": "silu",
2447
+ "use_layer_norm": false
2448
+ },
2449
+ {
2450
+ "$type": "protomotions.agents.common.config.MLPLayerConfig",
2451
+ "units": 1024,
2452
+ "activation": "silu",
2453
+ "use_layer_norm": false
2454
+ }
2455
+ ],
2456
+ "_target_": "protomotions.agents.common.mlp.MLPWithConcat",
2457
+ "in_keys": [
2458
+ "fk_max_coords_obs_norm",
2459
+ "previous_actions_norm",
2460
+ "solution_condition_features",
2461
+ "decoder_reduced_coords_norm"
2462
+ ],
2463
+ "out_keys": [
2464
+ "actor_trunk_out"
2465
+ ],
2466
+ "output_activation": null,
2467
+ "module_operations": [
2468
+ {
2469
+ "$type": "protomotions.agents.common.config.ModuleOperationForwardConfig"
2470
+ }
2471
+ ]
2472
+ }
2473
+ ],
2474
+ "_target_": "protomotions.agents.common.common.ModuleContainer",
2475
+ "in_keys": [
2476
+ "reduced_coords_obs",
2477
+ "fk_max_coords_obs",
2478
+ "previous_actions",
2479
+ "decoder_condition",
2480
+ "vae_latent"
2481
+ ],
2482
+ "out_keys": [
2483
+ "actor_trunk_out",
2484
+ "solution_condition_features",
2485
+ "latent_dynamics_predicted"
2486
+ ]
2487
+ },
2488
+ "vae": {
2489
+ "$type": "protomotions.agents.supervised.masked_mimic_config.MaskedMimicVAEConfig",
2490
+ "kld_schedule": {
2491
+ "$type": "protomotions.agents.supervised.masked_mimic_config.KLDScheduleConfig",
2492
+ "init_kld_coeff": 0.0001,
2493
+ "end_kld_coeff": 0.01,
2494
+ "start_epoch": 500,
2495
+ "end_epoch": 2000,
2496
+ "cyclical": true
2497
+ },
2498
+ "vae_latent_dim": 64,
2499
+ "vae_noise_type": {
2500
+ "$enum": "protomotions.agents.supervised.masked_mimic_config.VAENoiseType",
2501
+ "name": "ZEROS"
2502
+ },
2503
+ "latent_geometry": {
2504
+ "$enum": "protomotions.agents.supervised.masked_mimic_config.LatentGeometry",
2505
+ "name": "SPHERE"
2506
+ },
2507
+ "prior_mean_unit_norm_coeff": 0.001
2508
+ },
2509
+ "temporal_losses": [
2510
+ {
2511
+ "$type": "protomotions.agents.supervised.masked_mimic_config.TemporalLossConfig",
2512
+ "key": "privileged_action",
2513
+ "coefficient": 0.05,
2514
+ "prediction_key": "privileged_action",
2515
+ "forward": false
2516
+ },
2517
+ {
2518
+ "$type": "protomotions.agents.supervised.masked_mimic_config.TemporalLossConfig",
2519
+ "key": "solution_condition_features",
2520
+ "coefficient": 0.001,
2521
+ "prediction_key": "solution_condition_features",
2522
+ "forward": false
2523
+ },
2524
+ {
2525
+ "$type": "protomotions.agents.supervised.masked_mimic_config.TemporalLossConfig",
2526
+ "key": "decoder_condition",
2527
+ "coefficient": 0.001,
2528
+ "prediction_key": "latent_dynamics_predicted",
2529
+ "forward": true
2530
+ }
2531
+ ],
2532
+ "optimizer": {
2533
+ "$type": "protomotions.agents.base_agent.config.OptimizerConfig",
2534
+ "_target_": "torch.optim.Adam",
2535
+ "lr": 2e-05,
2536
+ "weight_decay": 0.0,
2537
+ "eps": 1e-08,
2538
+ "betas": [
2539
+ 0.9,
2540
+ 0.999
2541
+ ]
2542
+ }
2543
+ },
2544
+ "num_steps": 32,
2545
+ "gradient_clip_val": 0.0,
2546
+ "fail_on_bad_grads": false,
2547
+ "check_grad_mag": true,
2548
+ "gamma": 0.99,
2549
+ "bounds_loss_coef": 0.0,
2550
+ "task_reward_w": 1.0,
2551
+ "num_mini_epochs": 1,
2552
+ "training_early_termination": null,
2553
+ "save_epoch_checkpoint_every": 1000,
2554
+ "save_last_checkpoint_every": 10,
2555
+ "save_inference_checkpoint": false,
2556
+ "max_episode_length_manager": null,
2557
+ "evaluator": {
2558
+ "$type": "protomotions.agents.evaluators.config.MaskedMimicEvaluatorConfig",
2559
+ "_target_": "protomotions.agents.evaluators.masked_mimic_evaluator.MaskedMimicEvaluator",
2560
+ "metric_components": {},
2561
+ "failure_components": {},
2562
+ "score_key": null,
2563
+ "max_eval_steps": 600,
2564
+ "eval_metrics_every": 200,
2565
+ "save_predicted_motion_lib_every": 3,
2566
+ "motion_weights_rules": {
2567
+ "$type": "protomotions.agents.evaluators.config.MotionWeightsRulesConfig",
2568
+ "motion_weights_update_success_discount": 0.999,
2569
+ "motion_weights_update_failure_discount": 0.999,
2570
+ "min_motion_weight": "1/num_motions"
2571
+ },
2572
+ "action_source": {
2573
+ "$enum": "protomotions.agents.evaluators.config.MaskedMimicActionSource",
2574
+ "name": "POSTERIOR"
2575
+ }
2576
+ },
2577
+ "normalize_rewards": true,
2578
+ "normalized_reward_clamp_value": 5.0,
2579
+ "reward_norm_ema_decay": null,
2580
+ "expert_model_path": null,
2581
+ "rollout_actor": {
2582
+ "$enum": "protomotions.agents.supervised.config.RolloutActor",
2583
+ "name": "STUDENT"
2584
+ },
2585
+ "loss": {
2586
+ "$type": "protomotions.agents.common.supervision.SupervisionLossConfig",
2587
+ "loss_type": "mse",
2588
+ "prediction_key": "privileged_action",
2589
+ "target_key": "expert_actions",
2590
+ "prediction_logvar_key": null,
2591
+ "target_logvar_key": null,
2592
+ "label_smoothing": 0.0,
2593
+ "weight": 1.0,
2594
+ "log_prefix": "masked_mimic",
2595
+ "enabled": true,
2596
+ "extra": {}
2597
+ },
2598
+ "expert_rollout_probability": 0.0
2599
+ }
2600
+ }
2601
+ }
README.md CHANGED
@@ -1,7 +1,7 @@
1
  ---
2
  license: other
3
  license_name: nvidia-open-model-license
4
- license_link: https://huggingface.co/nvidia/metatron-browser/blob/main/LICENSE.pdf
5
  language:
6
  - en
7
  library_name: onnx
@@ -13,7 +13,42 @@ tags:
13
  - metatron
14
  ---
15
 
16
- # Metatron v1 — G1 Browser Exports
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
17
 
18
  ## Overview
19
 
@@ -129,3 +164,13 @@ of the associated application bundles, motion clips and other assets.
129
  - [ProtoMotions](https://github.com/NVlabs/ProtoMotions)
130
  - [ProtoMotions documentation](https://protomotions.github.io/)
131
  - [NVIDIA Open Model License](https://www.nvidia.com/en-us/agreements/enterprise-software/nvidia-open-model-license/)
 
 
 
 
 
 
 
 
 
 
 
1
  ---
2
  license: other
3
  license_name: nvidia-open-model-license
4
+ license_link: https://huggingface.co/nvidia/Metatron-v1/blob/main/LICENSE.pdf
5
  language:
6
  - en
7
  library_name: onnx
 
13
  - metatron
14
  ---
15
 
16
+ # Metatron v1
17
+
18
+ ## Choose an artifact
19
+
20
+ | Package | Use | Documentation |
21
+ | --- | --- | --- |
22
+ | [G1/](G1/) | Native PyTorch G1 inference: checkpoint, resolved config, reconstruction recipe and legal files | [G1 model card](G1/MODEL_CARD.md), [download and run](G1/README.md) |
23
+ | `demo/model.onnx` | Single-robot browser scene/recovery pipeline | Browser export card below |
24
+ | `racer/network.onnx` | Six-robot batched G1 Racer network | Browser export card below |
25
+
26
+ The native checkpoint is 459,455,983 bytes (SHA256
27
+ `e5fc2e47a8f9ee9b96a674cabbf236b3c510f887427645a14bc1779b10f0b43a`).
28
+ It retains the posterior and normalization statistics; the deterministic browser
29
+ graphs export the prior/decoder path. Interfaces are not interchangeable.
30
+ The native recipe masks scene inputs; see its card before re-exporting.
31
+
32
+ `config.json` is a machine-readable artifact index with file sizes and SHA256
33
+ digests, consumed by ProtoMotions' pinned native downloader. Model files are
34
+ hosted here, not served by GitHub Pages. The existing browser paths are unchanged.
35
+
36
+ ## License
37
+
38
+ Model license: NVIDIA Open Model License. The [full agreement](LICENSE.pdf) and
39
+ [attribution notice](NOTICE.txt) govern model artifacts, including native weights
40
+ and serialized configurations. Source code remains Apache-2.0. Dataset and asset
41
+ rights are separate; this repository does not redistribute training motion clips.
42
+
43
+ - Deployment Geography: Global.
44
+ - Use Case: Researchers and developers running interactive humanoid control in a
45
+ browser; the separate native G1 package also supports simulator and supervised
46
+ real-G1 deployment workflows.
47
+ - Release: Metatron v1, hosted in this repository and integrated with
48
+ [ProtoMotions](https://github.com/NVlabs/ProtoMotions). Pin a Hub revision; no
49
+ public ProtoMotions release tag is asserted here.
50
+
51
+ # Browser export model card
52
 
53
  ## Overview
54
 
 
164
  - [ProtoMotions](https://github.com/NVlabs/ProtoMotions)
165
  - [ProtoMotions documentation](https://protomotions.github.io/)
166
  - [NVIDIA Open Model License](https://www.nvidia.com/en-us/agreements/enterprise-software/nvidia-open-model-license/)
167
+
168
+ ## Download statistics
169
+
170
+ Hub download totals are server-side query-file request counts, not unique users
171
+ or game sessions. The native downloader reads the functional `config.json`
172
+ artifact index; it does not send a separate analytics request. Locally cached
173
+ loads do not request model files again. The existing ONNX loaders remain pinned
174
+ to their own artifacts; adding the native package does not retroactively measure
175
+ browser usage. Library-specific counting can differ; see
176
+ [Hugging Face download statistics](https://huggingface.co/docs/hub/models-download-stats).
config.json ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "schema_version": 1,
3
+ "model": "Metatron v1",
4
+ "repo_id": "nvidia/Metatron-v1",
5
+ "packages": {
6
+ "G1": {
7
+ "files": [
8
+ {
9
+ "path": "G1/LICENSE.pdf",
10
+ "size": 79005,
11
+ "sha256": "4d2fb590aa9b30c47f2058bff17291df7fa2aa0c1bd775a20703da9bb267cfab"
12
+ },
13
+ {
14
+ "path": "G1/MODEL_CARD.md",
15
+ "size": 7125,
16
+ "sha256": "7b209dc7d24e34de9d34e002a43ef86f94b0676e973191e059cf0a5028ad57e5"
17
+ },
18
+ {
19
+ "path": "G1/NOTICE.txt",
20
+ "size": 345,
21
+ "sha256": "156bc21cf2ef9959c172cc903db26391f4c2c189244bbb17fd71a11f025d3899"
22
+ },
23
+ {
24
+ "path": "G1/README.md",
25
+ "size": 1562,
26
+ "sha256": "3a642332b2c8be0aad48a047a1022a76ae6aa5e6272d788791bb7b1387a5ad97"
27
+ },
28
+ {
29
+ "path": "G1/config.yaml",
30
+ "size": 428,
31
+ "sha256": "af1ed1dbbc9b92520e108bea585cf94036941e63ded51618d7dd8c8632194745"
32
+ },
33
+ {
34
+ "path": "G1/experiment_config.py",
35
+ "size": 20409,
36
+ "sha256": "90c0a6411f7717e8e699ebb419fabb66000010445c92464c7c05c60fc160bb06"
37
+ },
38
+ {
39
+ "path": "G1/inference_last.ckpt",
40
+ "size": 459455983,
41
+ "sha256": "e5fc2e47a8f9ee9b96a674cabbf236b3c510f887427645a14bc1779b10f0b43a"
42
+ },
43
+ {
44
+ "path": "G1/provenance.json",
45
+ "size": 289,
46
+ "sha256": "084f3a1e87514ba15fa03428fd2c851efef1b6f32dc7571e3624a4a1e5f408dd"
47
+ },
48
+ {
49
+ "path": "G1/resolved_configs.json",
50
+ "size": 91427,
51
+ "sha256": "2665afcf1d789fec1b979ce235413943e65e12ba67baa759d0bbfa7dc62f18cc"
52
+ }
53
+ ]
54
+ }
55
+ },
56
+ "browser_exports": [
57
+ {
58
+ "path": "demo/model.onnx",
59
+ "size": 403375789,
60
+ "sha256": "7180e82cae7ec04ff7766c262d430f57573d93678e025d8a71916885072a0cd4"
61
+ },
62
+ {
63
+ "path": "racer/network.onnx",
64
+ "size": 403036698,
65
+ "sha256": "130a22718a34c0da488e2157553b40efedfefcf6ca6cb6b97cfdd67f8dfbeaf3"
66
+ }
67
+ ]
68
+ }