Source code for brom_drake.utils.puppetmaker.puppet_signature
from dataclasses import dataclass
from pydrake.all import (
ModelInstanceIndex,
Joint,
JointActuator
)
from typing import List
[docs]
@dataclass
class PuppeteerJointSignature:
joint: Joint
joint_actuator: JointActuator
[docs]
@dataclass
class AllJointSignatures:
prismatic: List[PuppeteerJointSignature]
revolute: List[PuppeteerJointSignature]
@property
def n_joints(self) -> int:
return len(self.prismatic) + len(self.revolute)
[docs]
@dataclass
class PuppetSignature:
name: str
model_instance_index: ModelInstanceIndex
prismatic_ghost_bodies: List[ModelInstanceIndex]
revolute_ghost_bodies: List[ModelInstanceIndex]
joints: AllJointSignatures
@property
def all_joint_actuators(self) -> List[JointActuator]:
return [sig.joint_actuator for sig in self.joints.prismatic + self.joints.revolute]
@property
def all_models(self) -> List[ModelInstanceIndex]:
return self.prismatic_ghost_bodies + self.revolute_ghost_bodies + [self.model_instance_index]
@property
def n_joints(self) -> int:
return self.joints.n_joints
@property
def n_models(self) -> int:
return len(self.all_models)