Co-Re Grippers#
This tutorial demonstrates how to use the Co-Re grippers on Hamilton STAR liquid handling robots with PyLabRobot.
The Co-Re grippers mount on pipetting channels and allow for moving labware around the deck.
Deck setup#
There are two different types of core grippers:

from pylabrobot.liquid_handling import LiquidHandler, STARBackend
from pylabrobot.liquid_handling.backends.hamilton.STAR_chatterbox import STARChatterboxBackend
from pylabrobot.resources import STARDeck # STARLetDeck
deck = STARDeck(
core_grippers="1000uL-at-waste" # or "1000uL-5mL-on-waste"
) # STARLetDeck()
# star_backend = STARChatterboxBackend()
star_backend = STARBackend()
lh = LiquidHandler(backend=star_backend, deck=deck) # STARLetDeck())
Let’s also set up a dummy plate carrier and plate.
from pylabrobot.resources import PLT_CAR_L5AC_A00, CellTreat_96_wellplate_350ul_Ub
plate_carrier = PLT_CAR_L5AC_A00(name="plate_carrier")
plate_carrier[0] = plate = CellTreat_96_wellplate_350ul_Ub(name="plate")
deck.assign_child_resource(plate_carrier, rails=14)
Finally call setup to initialize the robot:
await lh.setup()
Moving resources#
There are two apis:
move_resource: a single call, simple to read. This function callspick_up_resourceanddrop_resourceinternally.pick_up_resourceanddrop_resource: two calls, more control over the timing of operations.
move_resource api#
This API is the simplest to read:
await lh.move_resource(
plate,
plate_carrier[1],
pickup_distance_from_top=10,
# Specify to use the core arm.
use_arm="core",
# use two channels to pick up the core gripper tools. Channels are 0-indexed.
# specify only the front channel. In this case the back channel will be 6.
core_front_channel=7,
)
pick_up_resource and drop_resource apis#
These APIs give more control over the pick up and drop actions:
await lh.pick_up_resource(
plate,
pickup_distance_from_top=10,
# Backend kwargs:
# Specify to use the core arm.
use_arm="core",
# use two channels to pick up the core gripper tools. Channels are 0-indexed.
# specify only the front channel. In this case the back channel will be 6.
core_front_channel=7,
)
await lh.drop_resource(
plate_carrier[1],
# Backend kwargs:
use_arm="core",
return_core_gripper=True,
)
Manual control over grippers#
await star_backend.pick_up_core_gripper_tools(front_channel=7)
await star_backend.return_core_gripper_tools()