a distributed component-based software architecture and framework for laboratory automation systems...

56
A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

Upload: lucinda-reeves

Post on 18-Dec-2015

225 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

A Distributed Component-based Software Architecture and Framework for

Laboratory Automation Systems

Venkataramanan Kuppuswamy

Page 2: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

Meanwhile….

Page 3: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

Guidelines for a good Lab Automation System s/w

• Extensible

• Not tied to a specific vendor or manufacturer

• Distributed across multiple computers or across different

process spaces, to enhance robustness & performance

• Responsive: Provides timely feedback to client & handles

multiple requests simultaneously

• Thread-Safe

Page 4: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

Existing Software

• Commercial lab automation software

• Open source robotics frameworks. E.g. Orcos Robotics, Orca

Robotics & Robot Operating System (ROS).

• Other robotics frameworks such as Microsoft Robotics

Developer Studio (MSRDS)

• Open source microscopy software like μManager

• Device abstractions such as Interchangeable Virtual

Instruments

Page 5: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

Drawbacks

• Expensive, closed source & not extensible

• Domain specific. E.g. μManager for Microscopy

• Do not provide a comprehensive design solution to develop

thread-safe & responsive software

Page 6: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

Contributions of The Thesis

• Developed Component Oriented Distributed Architecture

(CODA)

• Developed CODA Framework

Page 7: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

CODA

• Architecture to develop laboratory automation system software

• Based on autonomous components that could be distributed

• Provides design solution for developing thread-safe &

responsive components

• Provides a consistent way to create, use & destroy components

Page 8: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

CODA Component

• Autonomous software module that performs an useful task, or

related set of tasks (control devices, imaging etc.)

• Can support multithreading

• Communicates by message passing. Every message has Body,

ACK Port & Operation Complete (OPC) Port

• Stateful

• Does not use shared memory

Page 9: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

Component High Level Design

User LayerNotification Messages

Component API Messages

Notification Port Main Message Port

Exclusive Message Processing DispatcherNotification Mechanism

Component Infrastructure Layer

Component Implementation Layer Operation Requests

Notification Requests

State data

Message Validation

Operation Implementation

Component Specific Implementation

Page 10: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

Operation Implementation

• Actions

• Quick, not prone to errors. Ex: updating state data of a device.

• Executed synchronously w.r.t dispatcher (hence thread safe)

• Tasks

• Lengthy, prone to error. Ex: device communication, reading from file,

database etc.

• Executed asynchronously, hence making component responsive

• Does not update state data directly, but utilizes message passing, hence

ensuring thread safety

Page 11: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

Message Passing

User Software

Create Messages & Notif ication

Ports

User Component

Wait for ACK

OPC Notif ication

Action Message

Component

ACK Notif ication

Wait for OPC

Wait for ACK

OPC Notif ication

Task Message

ACK Notif ication

Page 12: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

Interface Object

• Simplifies component use

• Used by clients to communicate with the component

• Provides an uniform way of accessing the component

irrespective of local or remote

• Local: Component in same process space as client

• Remote: Component in different process space (executable) on

same computer, or on a entirely different computer

Page 13: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

Interface Object (cont.)

Interface Object

Create Message & Notif ication

Ports

Interface Object

Component

Component

ACK Notif ication

Wait for ACK

OPC Notif ication

API Message

Client Software

Client

API 'Wrapper Routine'

(Returns OPC Port)

Page 14: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

Minimum Component Behavior

• Configure

• Setting values needed to successfully “Open” the component. Ex:

setting comm port for a serial device (e.g. stage controller)

• Open

• Setting up component for use. Ex: opening a serial port

• Close

• Cleans up component after use. Ex: closing a serial port.

• Component can be safely destroyed only after “Close”

Page 15: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

Minimum Component Behavior (cont.)

Ready

Configured

Shutdown

OpenClose

Error Opening

Error Configuring

*Note: Configure refers to any of the family of Configure Messages

Configure

ConfigureError Configuring

Page 16: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

CODA Summary

• An architecture to develop distributed component based

software that is responsive & thread-safe

• Based on stateful, asynchronous message passing components

• Components execute Actions & Tasks in response to messages

• Interface object simplifies component usage

• All components must implement a required minimum

behavior defined by CODA

Page 17: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

CODA Framework

• Helps develop CODA compliant components

• Enables development of responsive, thread-safe & extensible

software.

• Develop code that conforms to Unified Modeling Language

(UML) state charts

• Very easy to make components remotely accessible

• Abstractions for devices such as stage controller & camera

Page 18: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

CODA Framework (cont.)

• Concrete implementations for several common stage

controllers & IMAQdx compatible cameras

• Software developed using the framework is scalable with

number of cores (Microsoft Robotics Studio (MSRDS))

• Developed using MSRDS Concurrency Coordination Runtime

(CCR) & Decentralized Software Services (DSS)

• Compatible with LabVIEW

Page 19: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

Framework Component High Level Design

Page 20: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

Transition Execution

Page 21: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

Transport

• Abstracts out details involved in passing message to

component.

• Deep clones every data that is passed to & from component –

ensures components are decoupled & completely autonomous

• Two implementations

• Local: Communicate with local components

• DSS: Communicate with remote components

Page 22: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

Passing Message to a Local Component

Page 23: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

Passing Message to a Remote Component

Page 24: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

Camera Abstraction

Page 25: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

Stage Controller Abstraction

Page 26: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

Imaging Application - A Case Study

• Models a physical system consisting of a camera mounted on a

stage controller

• Focus Adjustment

• Auto Focus

• Focus Positioning

Page 27: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

Without using the framework

• Camera Interfacing & state machine like control code

• Stage Controller interfacing & state machine like control code

• Imaging Application that talks to camera & stage controller

having state machine like control code

• Networking infrastructure to make components distributable

Page 28: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

Using the Framework

• Stage Controller Implementation

• Camera Implementation

• Imaging Application talking to abstract stage controller &

camera

• Very little networking code

Page 29: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

CODA Framework Summary

• Implements the concepts described in CODA

• Helps develop software that is distributed, responsive, thread-

safe & scalable

• Has device abstractions for camera & stage controller, and

concrete implementations for several manufacturers,

• Imaging Component

• Can be extended to support additional functionalities

Page 30: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

Contributions of The Thesis

• Developed Component Oriented Distributed Architecture

(CODA)

• Developed CODA Framework

Page 31: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

Future Work

• Improve the state machine design to include

hierarchical/composite states

• Device abstractions for laser, pumps etc.

• More subsystems such as multi-axis motion

• Strategy to prevent deadlocks

Page 32: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

Acknowledgements

• Dr. Deirdre Meldrum, Dr. Roger Johnson, Mr. Dean Smith, Dr.

James Collofello & Dr. Hessam Sarjoughian

• All CBDA lab members & in particular Vivek, Inian & Sai

• Engineers at MSRDS forums

• My parents, sister & brother in law

• Friends, in particular Ganesh, Sriram, Parth, Venkatakrishnan,

Aravindan, Dilip, Raj, Vaibhav, Nikhil, Glenn, Sathish &

Tosha

Page 33: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

Back Up Slides

Page 34: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

Messages

• Has ACK port and Operation Complete (OPC) Ports

• Port: Receives message and transfers to another

module for processing

• ACK: Indicates a message has been successfully

received by component & sent for processing

• OPC: Indicates a processing of message has been

complete

Page 35: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

Framework

• Talk a bit about UML state machines and robotics studio

• Advantages of state machines• Used robotics studio to get scalability.• State machines, deterministic• Already written lot of code that the developer

does not have to write• How actions and tasks are implemented• 2-3 minute video of the imaging software

Page 36: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

Demo of a Imaging application

• TODO: Add video of the imaging application

Page 37: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

About the demo Software

• Typical automation scenario

• Sophisticated

• Responsive

• Change deployment without code change

• Works with any camera & stage compatible with our

framework

Page 38: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

Development & Test Strategy

• Developed the base abstract component

• Implemented a test component that covered all uses

cases for a simple use of a state machine

• Developed a test application and tested the test

component. Found issues & fixed it

• Developed a camera abstraction

• Developed an implementation for an Imaqdx compatible

camera

Page 39: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

Test SuitesTest Suite Features Tested

TestComponent Tested the entire infrastructure. This includes testing the base component, base component state machine, state machine creation, state machine engine processing of tasks & actions, error handling, base component interface object, local & DSS transport.

StageControllerTest Functionalities of stage controller which includes open, Configure, Close, Velocity Move, Position Moves, Setting Properties such as Acceleration & Velocity, Stopping Motion & Homing

CameraTest Functionalities of camera which includes Open, Configure, Close, Setting Properties such as exposure time, Grabbing Images & Stop Grabbing Images

ImagingTest Functionalities of camera which includes Open, Configure, Close, Grabbing Images, Stop Grabbing Images, Focus Move, Stop Focus Motion & Focus Adjustment

Page 40: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

Lab Automation System Software

• Controls & coordinates multiple different types of devices

• Ex: Motion control stages, cameras, lasers, pumps & valves

• Devices have own memory, processing unit, work independently &

have different manufacturers

• Certain devices & algorithms need specialized hardware and software

to run effectively

Page 41: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

Imaging Component - A Case Study

Page 42: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

Imaging Component Creation Steps

• Create all Main Messages & Internal Messages

• Create Main Message Port, Internal Message Port, State

Enumeration, Config Data & State Data classes

• Create new ImagingComponent deriving from base

component

• Compose with stage controller & camera interface objects

• Implement Open, Configure & Close methods

• Extend the base component state machine & add the imaging

component state machine

Page 43: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

Lab Automation System

• Automation

• Increases productivity

• Lab automation Software interfaces with devices

• Devices have own memory, processing unit, work independently &

have different manufacturers

• Certain devices & algorithms need specialized hardware & software

Page 44: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

Previous Work (cont.)

• μManager

• Open source, freely available software for automating microscope

operations

• Limited application domain

• Interchangeable Virtual Instruments

• Open instrument driver architecture

• Abstracts out common functionality available in instruments

• Used to automate test & measurement equipment

Page 45: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

Action

User Layer

Create Message & Notif ication

Ports

User

Component Infrastructure

Layer

Component Implementation

Layer

Message Processing & Dispatcher

Notification Mechanism

Message Validation

Operation Implementation

Operation Request(Message)

ACK Notif ication

Wait for ACK

Operation(Message)

OPC Notif ication

State Change Notif ication()

[ Message Valid ? ]

Component Specific

Implementation

State Change Notif ication

Validate(Message)

API Message

Page 46: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

Task

Component Infrastructure

Layer

Component Implementation

LayerNotification Mechanism

Message Validation

Operation Request( Message)

ACK Notif ication

StartTask( Message)

OPC Notif ication

[ Message Valid ? ]

Component Specific

Implementation

Message Processing & Dispatcher

Operation Implementation

Validate( Message)

API Message

Update State Data

UpdateStateData( Data)

State Change Notif ication State Change Notif ication()

State Change Notif ication()

State Change Notif ication

Task Finished

TaskFinished()

Page 47: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

Message Processing

Page 48: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

Transition Execution

Page 49: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

Decentralized Software Services (DSS) Classes

• DSS Client: Communicates to a remote component by sending

messages to the DSS server which in turn sends it to the

component.

• DSS Server: Composes a remote CODA Component. Clients

of the component can access the it only through DSS server.

• DSS client & DSS server translate component request &

response messages to DSS requests & responses, & vice-versa

• Takes care of creating & safely disposing DSS resources

Page 50: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

Abstract Base Component Class

• Abstracts out functionality needed by any component

• New components derive from the base CODA infrastructure,

and then add component specific details – this dramatically

decreases development time

• Derived components implement the required behavior & can

extend the base state machine and introduce new behavior

• Takes care of creating & safely disposing CCR resources

Page 51: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

Abstract Base Component Class (cont.)

• Main Message Port

• Internal Message Port

• State Machine

• State Data

• State Enumeration

• Config Data

Page 52: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

Abstract Base Component Interface Object

• Has API wrapper methods for Configure, Open & Close

• Has helper methods to talk to the transport

• Takes care of creating & safely disposing CCR resources

• Takes care of safely disposing the Transport

• Other interface objects derive from it & add component

specific API wrapper methods

Page 53: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

Component Creation Factory

• Single point of component creation, irrespective of local or

remote

• Component Creation Creation Steps

• Create a new local/remote component with the given creation details

(Name, Type, IP Adress, Port etc.)

• Create a new Transport & bind it to the Component

• Create a new Interface Object & bind it to the Transport

• Returns the interface object to the client

Page 54: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

Local Component Life Time Management

Page 55: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

Remote Component Life Time Management

Page 56: A Distributed Component-based Software Architecture and Framework for Laboratory Automation Systems Venkataramanan Kuppuswamy

Imaging Component Creation Steps (cont.)

• Create new DSS client & DSS server classes & register the

API messages for remote transport

• Create a new interface object class that derives from the base

interface object class & add the new API message wrappers

• The Imaging Component can work with any camera & stage

controller compatible with the framework