pylabrobot.brooks.precise_flex.PreciseFlexConfiguration#

class pylabrobot.brooks.precise_flex.PreciseFlexConfiguration(manufacturer: str, controller_model: str, hardware_version: str, gpl_version: str, controller_serial: str, robot_name: str, robot_type: int, tcs_version: str, modules: tuple, num_axes: int, extra_axes: int, axis_mask: int, soft_limits: ~typing.Dict[~pylabrobot.brooks.precise_flex.config.Axis, tuple], hard_limits: ~typing.Dict[~pylabrobot.brooks.precise_flex.config.Axis, tuple], max_joint_speed: ~typing.Dict[~pylabrobot.brooks.precise_flex.config.Axis, float], max_joint_acceleration: ~typing.Dict[~pylabrobot.brooks.precise_flex.config.Axis, float], max_joint_deceleration: ~typing.Dict[~pylabrobot.brooks.precise_flex.config.Axis, float], max_cartesian_speed: float, max_cartesian_acceleration: float, power_state: int, kinematics: ~pylabrobot.brooks.precise_flex.kinematics.PF400Params = <factory>, kinematics_source: ~typing.Literal['device', 'provided', 'default'] = 'default', has_rail: bool = False, is_dual_gripper: bool = False, is_vision_gripper: bool = False, reach_class: ~typing.Literal['standard', 'extended', 'unknown'] = 'extended')#

Bases: object

Device configuration resolved once at setup; immutable afterwards.

The identity/limit/envelope fields are read from the controller (pd <DataID> via request_parameter and the version command). The kinematics/flags tier is supplied at construction or derived: link lengths are not on the arm, has_rail comes from the joint set, is_dual_gripper from the axis_mask &H80 bit, is_vision_gripper from the model name, and reach_class from the controller-read link lengths.

Attributes

Methods

__init__(manufacturer, controller_model, ...)

Parameters: