UniteLabs

Gripper Module

Moving labware with the integrated CO-RE gripper.

During liquid handling workflows, the need often arises to reposition labware across the deck. Whether you want to cover microplates or transport them to and from positions on the deck, e.g. into a reader, an efficient method to achieve this is through the integrated CO-RE gripper. Comprising two paddles, which are picked up by two pipetting channels during operation, this gripper streamlines the task. Instruments with an Fluid Motion arm and X1 channels also support the Quad CO-RE gripper, whose paddles are each picked up by two channels (four channels total) — see Quad CO-RE Gripper below.

For more complex scenarios, such as labware rotation or transferring into stacked plate hotels, exploring the capabilities of the iSWAP gripper module is recommended.

This guide serves as a comprehensive walkthrough for utilizing the integrated CO-RE gripper on the Hamilton Microlab STAR. By adhering to these instructions, users can effortlessly and precisely maneuver labware around the deck with assurance.

Prerequisites

Connect and Initialize

Ensure that the Hamilton STAR is powered on and ready for operation. Verify that the connector is running and connected to the UniteLabs platform.

from unitelabs.liquid_handling.hamilton import MicrolabSTAR

# Initialize the Hamilton Microlab STAR
hamilton = MicrolabSTAR(name="Microlab STAR")
await hamilton.initialize()

Arrange the Deck

Arrange the deck layout using the components from the labware library. This guide uses a plate carrier with one standard 96 well microtiter plate that we move from one carrier site to another.

from unitelabs.labware import Standard96Plate, Vector
from unitelabs.labware.hamilton import PLT_CAR_L5MD_A00

plate_carrier = PLT_CAR_L5MD_A00()
plate = Standard96Plate()

plate_carrier[0] = plate
hamilton.deck.add(plate_carrier, track=1)
Safety tip: For testing purposes, the actual deck can be left empty. Only the CO-RE gripper is required to run this guide without hardware errors.

Configure the Gripper

The storage location of the CO-RE gripper may vary in different environments. Therefore, configure the gripper module first by providing the locations for your setup. Learn how to teach the gripper paddle positions in the Teaching Gripper Paddle Positions guide.

from unitelabs.labware import Vector

core_gripper_locations = (
    Vector(x=796, y=105, z=225),
    Vector(x=796, y=79, z=225),
)

await hamilton.core_gripper.configure(
    park_location=core_gripper_locations,
    channels=(6, 7),
)

Pick up the Gripper

Pick up the gripper from its configured location.

await hamilton.core_gripper.pick_up_gripper()

Pick up the Labware

Labware can be picked up from carrier sites. Make sure that the plate is placed on the site and pass it to the gripper's pick_up method. The gripper moves on a safe traverse height to the site and picks up the plate. Grip strength, move speed, and close speed are set to defaults in this example and can be left out.

await hamilton.core_gripper.pick_up_from(
    plate_carrier[0],
    # The pressure to apply on the plate ranging from 0 (low) to 99 (high).
    strength=30,
    # The speed in mm/s when moving along the z-axis.
    move_speed=128.7,
    # The speed in mm/s along the y-axis when closing the gripper.
    close_speed=277.8,
)

The parameters such as grip width and grip height are determined based on the definition of the labware that is being picked up while others have default values. All parameters can be specified explicitly if desired:

  • strength: Grip pressure ranging from 0 (low) to 99 (high). Default: 60.
  • move_speed: Speed in mm/s when moving along the z-axis. Default: 128.7.
  • close_speed: Speed in mm/s along the y-axis when closing the gripper. Default: 277.8.
  • pick_up_offset: A Vector(dx, dy) offset in mm to adjust the pick up location. Default: None.
  • width_offset: Offset in mm to adjust the labware size for grip width calculation. Default: 0.
  • grip_gap: Initial gap in mm between the gripper and the labware, i.e. how wide the gripper opens before reaching for the labware. Default: 6.
  • min_traverse_height: Minimum traverse height in mm. Default: None (uses global setting).
grab_height is read from the labware definition and is not exposed as a pick-up parameter. To adjust the grip height, either edit the grab_height field on your labware definition or use pick_up_offset for fine-tuning.

The plate is now accessible on the gripper and the carrier site should be empty.

assert plate_carrier[0].get() == None
assert hamilton.core_gripper.get() == plate

Move to Position

Now that the plate is picked up, it can be moved to another position. The plate's center will be placed at the provided location.

# Location 20 mm above the 5th carrier site's center
target_location = plate_carrier[4].absolute_location \
    + plate_carrier[4].center.update(z=20)

await hamilton.core_gripper.move_to(location=target_location)
Note: The gripper can be moved to any location even without carrying labware.

Release the Labware

Labware can only be placed on carrier sites. Make sure that the site is empty and pass it to the gripper's put_down method. The method automatically transfers the plate from the gripper module to the site. Gripper pressure and move speed are set to defaults in this example and can be left out.

await hamilton.core_gripper.put_down(
    # The carrier's 5th site
    carrier_site=plate_carrier[4],
    # The pressure in mm to apply on the bottom.
    pressure=0,
    # The speed in mm/s when moving along the z-axis.
    move_speed=128.7,
)

The plate is now accessible on the carrier site and the gripper should be empty again.

assert hamilton.core_gripper.get() == None
assert plate_carrier[4].get() == plate

Put Down the Gripper

Repeat the above steps as necessary to manipulate additional labware. To return the CO-RE gripper to its storing location,

await hamilton.core_gripper.put_down_gripper()

Quad CO-RE Gripper

Instruments equipped with an X1 channels support the Quad CO-RE gripper. Instead of two single-channel paddles, each paddle is picked up by two channels, so the gripper occupies four channels in total. This provides a more robust grip for heavier or taller labware. Once picked up, plate handling (pick_up_from, move_to, put_down) works exactly as with the standard gripper.

To use it, pass the gripper tip type to configure(). Two variants are available from the labware library:

  • QuadCoReGripperTip — the standard gripper where the paddles sit closer to the outermost channels.
  • DeepQuadCoReGripperTip — the Deep Grasp Quad CO-RE Gripper where the paddles sit closer to the innermost channels, used for gripping hight labware like Tip Boxes.
from unitelabs.labware import Vector
from unitelabs.labware.hamilton import QuadCoReGripperTip

await hamilton.core_gripper.configure(
    park_location=(
        Vector(x=796, y=105, z=225),
        Vector(x=796, y=105, z=225),
    ),
    # The lowest and highest of the four channels used to pick up the gripper.
    channels=(4, 7),
    gripper_type=QuadCoReGripperTip,
)
For the Quad CO-RE gripper, only the firstVector of park_location is used. It defines the tool center — the midpoint of the paddle set as it sits parked on the deck — from which the firmware derives each channel's pick-up and put-down position. The second Vector is ignored, so pass a copy of the first (as shown above).

The channels tuple gives the outermost channel indices — for a quad gripper this must span four channels (e.g. (4, 7)). If channels is omitted, it defaults to the last four channels of the instrument. Configuring a quad gripper on an instrument whose firmware does not report an NGC arm raises a ValueError.

When picking up the gripper, you can optionally verify plate presence during the pick-up. This feature is supported for Quad CO-RE grippers only.

await hamilton.core_gripper.pick_up_gripper(check_plate_presence=True)

Troubleshooting

Conclusion

You should now be able to utilize the integrated CO-RE gripper as an efficient solution for transporting labware during liquid handling workflows.