Workcells
A Workcell is a collection of Modules (instruments, robots, and other devices) that work in unison to conduct automated Workflows.
Abstractly, a Workcell is defined by three different things: its Modules, its Locations, and its Configuration. All of this is specified in a .yaml
file, which is loaded by the WEI instance that runs the Workcell.
Metadata
You can optionally include Metadata
in your Workcell file. This metadata can be used to store information about the Workcell, such as its version, description, and author. This metadata can be accessed by the WEI instance that loads the Workcell.
Modules
Modules are the individual components that make up a Workcell. These can be anything from a robot arm to a camera to a PCR machine. Each Module has a number of properties, including a name, a model, an interface, and a configuration.
The name of a module in the Workcell is also used in Workflow definitions to specify which module should take an action for a given step.
Locations
A Workcell will often have a number of defined Locations. These Locations correspond to physical points in the space of the Workcell, and often include multiple different representations corresponding to the different coordinate systems used by the various Modules.
Configuration
Finally, a Workcell has a configuration, which is used to specify various properties and behaviors of the WEI instance that loads the Workcell. These values can also be overridden by the user at runtime using command line parameters.
Example
Here is an example of a Workcell file:
name: Test_Workcell
#Info about data processing and location of the workcell
config:
workcell_origin_coordinates: [0, 0, 0, 0, 0, 0]
redis_host: "test_wei_redis"
server_host: "test_wei_server"
server_port: 8000
use_diaspora: False
autostart_engine: True
update_interval: 1
#List of all components accessible in this workcell
modules:
- name: utilities
model: utility_module
config:
rest_node_address: "http://utilities:8001"
- name: synthesis
model: test_module
interface: wei_rest_node
config:
rest_node_address: "http://synthesis:2000"
workcell_coordinates: [0, 0, 0, 0, 0, 0]
- name: transfer
model: test_module
interface: wei_rest_node
config:
rest_node_address: "http://transfer:2001"
workcell_coordinates: [15, 0, 0, 0, 0, 0]
- name: measure
model: test_module
interface: wei_rest_node
config:
rest_node_address: "http://measure:2002"
workcell_coordinates: [15, 0, 0, 0, 0, 0]
locations:
transfer:
synthesis.pos: [0, 0, 0, 0, 0, 0]
transfer.pos: [0, 0, 0, 0, 0, 0]
measure.pos: [0, 0, 0, 0, 0, 0]
wc.trash: [0, 0, 0, 0, 0, 0]
Next Steps
To learn how to write your own Workcell file, consult How-To: Workcells.