Source code for brom_drake.utils.initial_condition_manager.manager

from dataclasses import dataclass, field
import numpy as np
from pydrake.all import (
    Context,
    Frame,
    ModelInstanceIndex,
    MultibodyPlant,
    RigidTransform,
)
from typing import List

# Internal Imports
from brom_drake.utils.initial_condition_manager.initial_condition import InitialCondition

[docs] @dataclass class InitialConditionManager: _ic_tuples: List[InitialCondition] = field(default_factory=list) def add_initial_condition(self, ic_tuple: InitialCondition): self._ic_tuples.append(ic_tuple) def add_initial_configuration(self, model_instance_index: ModelInstanceIndex, configuration: np.ndarray): ic_tuple = InitialCondition( model_instance_index=model_instance_index, configuration=configuration ) self._ic_tuples.append(ic_tuple) def add_initial_pose(self, model_instance_index: ModelInstanceIndex, pose_wrt_parent: RigidTransform): ic_tuple = InitialCondition( model_instance_index=model_instance_index, pose_wrt_parent=pose_wrt_parent ) self._ic_tuples.append(ic_tuple)
[docs] def set_all_initial_conditions(self, plant: MultibodyPlant, diagram_context: Context = None): """ *Description* Set all initial conditions (both the pose and configuration) for the given plant. """ self.set_all_initial_configurations(plant, diagram_context=diagram_context) self.set_all_initial_poses(plant, diagram_context=diagram_context)
[docs] def set_all_initial_configurations(self, plant: MultibodyPlant, diagram_context: Context = None): """Set all known initial configurations for the given plant.""" for ic_tuple in self._ic_tuples: ic_tuple.set_initial_configuration(plant, diagram_context=diagram_context)
[docs] def set_all_initial_poses(self, plant: MultibodyPlant, diagram_context: Context = None): """Set all known initial poses for the given plant.""" for ic_tuple in self._ic_tuples: ic_tuple.set_initial_pose(plant, diagram_context=diagram_context)