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.