Experiments¶
ProtoMotions implements several state-of-the-art algorithms for physics-based character animation. This page provides a high-level overview of each approach and when to use them.
Mimic¶
Paper: DeepMimic: Example-Guided Deep Reinforcement Learning of Physics-Based Character Skills (Peng et al., 2018)
Mimic trains agents to imitate reference motion clips through reinforcement learning. The agent receives rewards for matching the reference pose at each timestep, learning to reproduce the motion while maintaining physical plausibility.
Experiment Variants:
mlp.py- MLP policy for flat terrainmlp_complex_terrain.py- MLP policy for complex terrains (stairs, slopes, etc.)mlp_domain_rand.py- Reduced coordinate observations with domain randomization for sim2realtransformer.py,transformer_complex_terrain.py- Transformer variants with more future observation frames
Example command:
python protomotions/train_agent.py \
--experiment-path examples/experiments/mimic/mlp.py \
--robot-name smpl \
--simulator isaacgym \
--motion-file <path_to_motion_file> \
--experiment-name smpl_mimic
ADD (Adversarial Differential Discriminators)¶
Paper: ADD: Physics-Based Motion Imitation with Adversarial Differential Discriminators
ADD is an adversarial approach to motion tracking that automatically balances multiple tracking objectives without manual reward weight tuning. It uses a discriminator to learn how to combine tracking errors dynamically.
Example command:
python protomotions/train_agent.py \
--experiment-path examples/experiments/add/mlp.py \
--robot-name smpl \
--simulator isaacgym \
--motion-file <path_to_motion_file> \
--experiment-name smpl_add
MaskedMimic¶
Paper: MaskedMimic: Unified Physics-Based Character Control Through Masked Motion Inpainting (Tessler et al., SIGGRAPH Asia 2024)
MaskedMimic formulates character control as a motion inpainting problem. A single unified controller learns to synthesize full-body motions from partial observations (masked keyframes, text descriptions, or scene information).
Note
MaskedMimic requires a pre-trained Mimic expert model. First, train Mimic on multiple motions, then provide
the checkpoint path via --overrides.
Example command:
python protomotions/train_agent.py \
--experiment-path examples/experiments/masked_mimic/transformer.py \
--robot-name smpl \
--simulator isaacgym \
--motion-file <path_to_motions> \
--overrides "agent.config.expert_model_path='<path_to_expert_model>/last.ckpt'" \
--experiment-name smpl_masked_mimic
AMP (Adversarial Motion Priors)¶
Paper: AMP: Adversarial Motion Priors for Stylized Physics-Based Character Control (Peng et al., 2021)
AMP uses a discriminator to learn a motion prior from reference data. Instead of tracking specific poses, the agent learns to move in a style similar to the reference motions while accomplishing task objectives.
Example command:
python protomotions/train_agent.py \
--experiment-path examples/experiments/amp/mlp.py \
--robot-name g1 \
--simulator isaacgym \
--motion-file <path_to_motion> \
--experiment-name g1_amp
Steering¶
Steering combines AMP-style motion priors with directional control objectives. The agent learns to walk/run in user-specified directions while maintaining natural motion style.
Example command:
python protomotions/train_agent.py \
--experiment-path examples/experiments/steering/mlp.py \
--robot-name g1 \
--simulator isaacgym \
--motion-file <path_to_motion> \
--experiment-name g1_steering
ASE (Adversarial Skill Embeddings)¶
Paper: ASE: Large-Scale Reusable Adversarial Skill Embeddings for Physically Simulated Characters (Peng et al., 2022)
ASE extends AMP by learning a latent skill space. The policy is conditioned on latent codes, allowing a single controller to perform many different skills by varying the latent input.
Note
ASE requires a diverse motion dataset with many different motion types. It does not work with a single motion clip - the skill embedding relies on having varied behaviors to learn meaningful latent codes.
Example command:
python protomotions/train_agent.py \
--experiment-path examples/experiments/ase/mlp.py \
--robot-name smpl \
--simulator isaacgym \
--motion-file <path_to_motions> \
--experiment-name smpl_ase
See Also¶
Configuration System - Configuration system
Code Tutorials (Progressive Series) - Step-by-step tutorials
Quick Start - Quick start guide