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:
object
dataclasses.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:
object
Constructs 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 aVideoWriter
hooked up in the typical fashion.From the
MultibodyPlant
,MultibodyPlantDiagram
can infer the correspondingStateSpace
from 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
Simulator
set 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
]