dair_pll.drake_utils
Drake simulation setup for multibody systems.
This file implements MultibodyPlantDiagram, which instantiates
Drake simulation and visualization system for a given group of URDF files.
Visualization is done via Drake’s VideoWriter. Details on using the VideoWriter
are available in the documentation for dair_pll.vis_utils.
In order to make the Drake states compatible with available
StateSpace inheriting classes,
users must define the drake system by a collection of URDF files, each of
which contains a model for exactly one floating- or fixed-base rigid
multibody chain. This allows for the system to be modeled as having a
ProductSpace state space, where each
factor space is a
FloatingBaseSpace
or FixedBaseSpace.
- dair_pll.drake_utils.SceneGraphInspectorFloat
 
- dair_pll.drake_utils.DiagramBuilderFloat
 
- dair_pll.drake_utils.UniqueBodyIdentifier
 
- dair_pll.drake_utils.get_bodies_in_model_instance(plant, model_instance_index)[source]
 Get list of body names associated with model instance.
- Parameters:
 plant (
Union[MultibodyPlant,MultibodyPlant_𝓣AutoDiffXd𝓤,MultibodyPlant_𝓣Expression𝓤]) –model_instance_index (
ModelInstanceIndex) –
- Return type:
 List[Union[RigidBody,RigidBody_𝓣AutoDiffXd𝓤,RigidBody_𝓣Expression𝓤]]
- dair_pll.drake_utils.get_body_names_in_model_instance(plant, model_instance_index)[source]
 Get list of body names associated with model instance.
- dair_pll.drake_utils.unique_body_identifier(plant, body)[source]
 Unique string identifier for given
Body_.- Return type:
 
- dair_pll.drake_utils.get_all_bodies(plant, model_instance_indices)[source]
 Get all bodies in plant’s models.
- dair_pll.drake_utils.get_all_inertial_bodies(plant, model_instance_indices)[source]
 Get all bodies that should have inertial parameters in plant.
- class dair_pll.drake_utils.CollisionGeometrySet(ids=<factory>, frictions=<factory>, collision_candidates=<factory>)[source]
 Bases:
objectdataclasses.dataclass()for tracking object collisions.- 
ids: 
typing.List[pydrake.geometry.GeometryId] List of geometries that may collide.
- 
frictions: 
typing.List[pydrake.multibody.plant.CoulombFriction] List of coulomb friction coefficients for the geometries.
- 
collision_candidates: 
typing.List[typing.Tuple[int,int]] Pairs of geometries that may collide.
- 
ids: 
 
- dair_pll.drake_utils.get_collision_geometry_set(inspector)[source]
 Get colliding geometries, frictional properties, and corresponding collision pairs in a scene.
- Parameters:
 inspector (
Union[SceneGraphInspector,SceneGraphInspector_𝓣AutoDiffXd𝓤]) – Inspector of scene graph.- Return type:
 - Returns:
 List of geometries that are candidates for at least one collision. Pairs of indices in geometry list that potentially collide.
- dair_pll.drake_utils.add_plant_from_urdfs(builder, urdfs, dt)[source]
 Add plant to builder with prescribed URDF models.
Generates a world containing each given URDF as a model instance.
- Parameters:
 - Return type:
 - Returns:
 Named dictionary of model instances returned by
AddModelFromFile. New plant, which has been added to builder. Scene graph associated with new plant.
- class dair_pll.drake_utils.MultibodyPlantDiagram(urdfs, dt=0.001, visualization_file=None)[source]
 Bases:
objectConstructs and manages a diagram, simulator, and optionally a visualizer for a multibody system described in a list of URDF’s.
This minimal diagram consists of a
MultibodyPlant,SceneGraph, and optionally aVideoWriterhooked up in the typical fashion.From the
MultibodyPlant,MultibodyPlantDiagramcan infer the correspondingStateSpacefrom the dimension of the associated velocity vectors in the plant’s context, via the one-chain-per-file assumption.Initialization generates a world containing each given URDF as a model instance, and a corresponding Drake
Simulatorset up to trigger a state update everydt.By default, a ground plane is added at world height
z = 0.- Parameters:
 
- 
collision_geometry_set: 
dair_pll.drake_utils.CollisionGeometrySet 
- 
scene_graph: 
pydrake.geometry.SceneGraph 
- 
visualizer: 
typing.Optional[pydrake.visualization._video.VideoWriter]