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)orsystem.set_simulating(True) - Device-level:
device.set_simulating(True)or passsim=Trueto 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
- Transporters - Robotic arm configuration and teachpoints
- Actions - Operations you can perform on devices
- Running Workflows - Simulation and execution options