Work in progress: this documentation is still being written and reviewed. Check details against the source code.

Pipettor driver adapter

Forward high-level pipettor commands to the pipettor_operation action; this layer does not build MTC motion tasks.

beambot.stages.pipettor_stages · Source

Tools and end effectors · Guide · Symbol index

How it is used

PipettorActionServer calls run() to forward a high-level request to the driver’s pipettor_operation action. The adapter waits for acceptance and completion and checks both the ROS action status and driver result.

This class follows the action server’s run(goal) error-string contract, but does not inherit BaseStages or construct arm-motion plans.

Start here

Callable

Purpose

PipettorStages.run

Log the requested operation, formatting SET_LED color channels as 0–255 integers, then forward the command to the driver.

PipettorStages

Adapter between the EROBS pipettor action and the device driver. It owns a driver action client and returns None on success or an error string on failure.

PipettorStages.run()

Log the requested operation, formatting SET_LED color channels as 0–255 integers, then forward the command to the driver.

Entry point · Source

run(self, goal) -> str | None

Parameter

Meaning

goal

Pipettor goal with operation, volume_pct and normalized ColorRGBA channels.

Returns: None on driver success or an error string.

Errors: Color formatting/conversion and action transport exceptions can propagate; operation validation is delegated to the driver.

Side effects: Logs and sends a hardware pipettor command.

PipettorStages.__init__()

Bind the ROS logger and create the pipettor_operation driver action client.

Lifecycle · Source

__init__(self, rclpy_node: Node)

Parameter

Meaning

rclpy_node

Owning ROS node.

Errors: ROS client construction errors propagate.

Side effects: Creates an action client and logs initialization.

Referenced in source (1)

Internal callbacks and helpers

PipettorStages._execute_pipettor_action()

Wait for the driver, send a goal and require both SUCCEEDED action status and a successful driver result.

Internal helper · Source

_execute_pipettor_action(
    self,
    operation: str,
    volume_pct: float,
    led_color: ColorRGBA,
) -> str | None

Parameter

Meaning

operation

Driver operation string.

volume_pct

Volume fraction forwarded unchanged; the current driver ignores it.

led_color

ColorRGBA forwarded unchanged for SET_LED.

Returns: None on success; descriptive string for absence, rejection, timeout, action-status or driver-result failure.

Errors: No broad exception handler. Waits 5 s for server, 5 s for acceptance and 60 s for result; result timeout requests cancellation without waiting for confirmation.

Side effects: Commands the pipettor/LED and may request cancellation; logs status.

Referenced in source (1)