dair_pll.drake_experiment
Wrappers for Drake/ContactNets multibody experiments.
- class dair_pll.drake_experiment.DrakeSystemConfig(urdfs=<factory>)[source]
Bases:
SystemConfig
-
urdfs:
typing.Dict
[str
,str
]
-
urdfs:
- class dair_pll.drake_experiment.MultibodyLosses(value, names=None, *, module=None, qualname=None, type=None, start=1, boundary=None)[source]
Bases:
Enum
- PREDICTION_LOSS = 1
- CONTACTNETS_LOSS = 2
- class dair_pll.drake_experiment.MultibodyLearnableSystemConfig(urdfs=<factory>, loss=MultibodyLosses.PREDICTION_LOSS)[source]
Bases:
DrakeSystemConfig
-
loss:
dair_pll.drake_experiment.MultibodyLosses
= 1 Whether to use ContactNets or prediction loss.
-
loss:
- class dair_pll.drake_experiment.DrakeMultibodyLearnableExperimentConfig(data_config=<factory>, base_config=<factory>, learnable_config=<factory>, optimizer_config=<factory>, storage='./', run_name='experiment_run', run_wandb=True, wandb_project=None, full_evaluation_period=1, full_evaluation_samples=5, update_geometry_in_videos=False, visualize_learned_geometry=True)[source]
- class dair_pll.drake_experiment.DrakeExperiment(config)[source]
Bases:
SupervisedLearningExperiment
,ABC
-
visualization_system:
typing.Optional
[dair_pll.drake_system.DrakeSystem
]
-
base_drake_system:
typing.Optional
[dair_pll.drake_system.DrakeSystem
]
- get_base_system()[source]
Abstract callback function to construct base system from system config.
- Return type:
- Returns:
Experiment’s base system.
- get_learned_drake_system(learned_system)[source]
If possible, constructs a
DrakeSystem
-equivalent model of the given learned system, such as when the learned system is aMultibodyLearnableSystem
.- Parameters:
learned_system (
System
) – System being learned in experiment.- Return type:
- Returns:
Drake version of learned system.
- visualizer_regeneration_is_required()[source]
Checks if visualizer should be regenerated, e.g. if learned geometries have been updated and need to be pushed to the visulizer.
- Return type:
- get_visualization_system(learned_system)[source]
Generate a dummy
DrakeSystem
for visualizing comparisons between trajectories generated by the base system and something else, e.g. data.Implemented as a thin wrapper of
vis_utils.generate_visualization_system()
, which generates a drake system where each model in the baseDrakeSystem
has a duplicate, and visualization elements are repainted for visual distinction.- Parameters:
learned_system (
System
) – Current trained learnable system.- Return type:
- Returns:
New
DrakeSystem
with doubled state and repainted elements.
- base_and_learned_comparison_summary(statistics, learned_system)[source]
Extracts a
SystemSummary
that compares the base system to the learned system.For Drake-based experiments, this comparison is implemented as overlaid videos of corresponding ground-truth and predicted trajectories. The nature of this video is described further in
dair_pll.vis_utils
.- Parameters:
- Return type:
- Returns:
Summary containing overlaid video(s).
-
visualization_system:
- class dair_pll.drake_experiment.DrakeMultibodyLearnableExperiment(config)[source]
Bases:
DrakeExperiment
- get_learned_system(_)[source]
Abstract callback function to construct learnable system for experiment.
Optionally, learned system can be initialized to depend on the training dataset.
- Parameters:
train_states –
(*, space.n_x)
batch of all states in training set.- Return type:
- Returns:
Experiment’s learnable system.
- visualizer_regeneration_is_required()[source]
Checks if visualizer should be regenerated, e.g. if learned geometries have been updated and need to be pushed to the visulizer.
- Return type:
- get_learned_drake_system(learned_system)[source]
If possible, constructs a
DrakeSystem
-equivalent model of the given learned system, such as when the learned system is aMultibodyLearnableSystem
.- Parameters:
learned_system (
System
) – System being learned in experiment.- Return type:
- Returns:
Drake version of learned system.
- contactnets_loss(x_past, x_future, system, keep_batch=False)[source]
LossCallbackCallable
which applies the ContactNets [1] loss to the system.References
[1] S. Pfrommer*, M. Halm*, and M. Posa. “ContactNets: Learning Discontinuous Contact Dynamics with Smooth, Implicit Representations,” Conference on Robotic Learning, 2020, https://proceedings.mlr.press/v155/pfrommer21a.html
- Return type: