Skip to main content

Devices

Devices represent laboratory instruments that perform operations on labware: shakers, centrifuges, sealers, liquid handlers, and more.

For robotic arms that move labware between devices, see Transporters.

SDK Exports

Import common devices from orca.sdk.devices:

from orca.sdk.devices import (
Device, # Base class
ResourcePool, # Pool of interchangeable devices
Transporter, # Robotic arms (see Transporters page)
Venus, # Hamilton MLSTAR/Vantage
Sealer, # Generic plate sealer
A4SSealer, # A4S sealer driver
Shaker, # Plate shaker
Centrifuge, # Centrifuge
HumanTransfer, # Manual transfer with prompts
)

Additional Devices (Direct Import)

These devices exist but aren't exported through orca.sdk.devices:

from orca.devices.devices import (
LiquidHandler, # Generic liquid handler
PlateWasher, # Plate washer
Delidder, # Lid removal device
Reader, # Plate reader
Storage, # Storage location
Waste, # Waste container
)

Creating Devices

Devices wrap drivers that communicate with hardware. Each device needs a name and a driver.

With PyLabRobot Backends

Orca automatically wraps PyLabRobot backends:

from orca.sdk.devices import Shaker
from pylabrobot.shaking import InhecoThermoShake

backend = InhecoThermoShake(port="/dev/ttyUSB0")
shaker = Shaker("shaker_1", backend)

With Cheshire Drivers

Or use cheshire-drivers directly:

from orca.sdk.devices import Sealer
from cheshire_drivers import A4SBackend

driver = A4SBackend(port="/dev/ttyUSB1", timeout=10)
sealer = Sealer("sealer_1", driver)

Device Types

Shaker

Plate shakers for mixing:

from orca.sdk.devices import Shaker

shaker = Shaker("shaker_1", driver)

Used with the Shake action.

Centrifuge

Centrifuges for separation:

from orca.sdk.devices import Centrifuge

centrifuge = Centrifuge("centrifuge_1", driver)

Used with the Spin action.

Sealer

Plate sealers:

from orca.sdk.devices import Sealer

sealer = Sealer("sealer_1", driver)

Used with the Seal action.

Venus (Hamilton)

Hamilton MLSTAR and Vantage liquid handlers:

from orca.sdk.devices import Venus

venus = Venus("hamilton", driver)

Used with RunProtocol to execute Hamilton protocol files. See Venus Integration for details.

HumanTransfer

Manual operations with operator prompts. HumanTransfer is a specialized Transporter that pauses execution and prompts the operator to manually move plates:

from orca.sdk.devices import HumanTransfer

human = HumanTransfer("manual_station", "teachpoints/manual_positions.json")

The operator sees prompts indicating source and destination, then confirms completion.

Reader (Direct Import)

Plate readers:

from orca.devices.devices import Reader

reader = Reader("reader_1", driver)

Used with the Read action.

Resource Pools

When you have multiple interchangeable devices, use ResourcePool:

from orca.sdk.devices import ResourcePool, Shaker

shaker_1 = Shaker("shaker_1", driver1)
shaker_2 = Shaker("shaker_2", driver2)

shaker_pool = ResourcePool("shakers", [shaker_1, shaker_2])

When an action targets a ResourcePool, Orca automatically selects an available device at runtime.

Simulation

Devices support simulation for testing without hardware. See Running Workflows for simulation options:

  • System-level: executor.start(sim=True) or system.set_simulating(True)
  • Device-level: device.set_simulating(True) or pass sim=True to constructor

Initialization

Before use, devices must be initialized:

await system.initialize_all()

Initialization opens connections, homes axes (for transporters), and runs self-checks.

Next Steps