Software Engineering in Robotics
Introduction to Robotics Developer Studio (RDS)
Henrik I. Christensen hic@cc.gatech.edu
Outline
What is Robotics Developer Studio?
A bit of history / background
Overview of RDS
Decentralized Service Services
Concurrent and Coordination Runtime
Visual Programming Language
Visual Simulation Environment
Examples and the lay of the land.
Summary
Microsoft Robotics Developer Studio
Microsoft has a strong tradition for office/desktop
applications. More recently also on mobile devices
Has had a limited impact on industrial software
system for manufacturing
MS Windows is a reference platform for computer use
Using a windows like GUI makes sense for many
applications
MS has also a strong expertise in interface
technologies
How can MS core technologies be used for design of
robot systems?
RDS is a proposal from MS for a toolkit to design robot
systems
Microsoft Robotics Developer Studio
A fully integrated package for robot software
engineering
Includes facilities for
Design of software modules
Communication protocols
Methods for easy process monitoring
Simulation of systems
Distribution of systems across multiple hosts
Rapid prototyping
Significant number of standard components for IO,
control, basic processing, and interfaces
Programming support in C#, VB and VPL
A bit of history
Software architectures is an old problem in
robotics
Has similarities to distributed system design
The telecom industry tried to standardize this
with the Foundation for Intelligent Physical
Agents (FIPA), which is a standard by now,
largely implemented in Java.
Microsoft has a strong communications
framework with .NET
Designed a communications / synthesis
framework on top to allow high volume data
intensive applications
The system was CCR/DSS and has been used
Overview of RDS
Applications
DSS
Services
CCR
.NET
Hardware
VPL
VSE
PhysX
Decentralized Software Services (DSS)
DSS provides the structure and the plumbing
for building services
Services are composed to build applications
A service consists of components:
Contracts Messages you can exchange
Internal State Status information to control
operation
Behavior The operations the service can perform
and typically implemented as handlers
Execution Context The relation the service has
with other services and the initial state
Decentralized Software Services
Services communicate using DSS protocol
referred to as DSSP
The communication is based on the
Representational State Transfer (REST) model
The communication model is similar to SOAP
Simple Object Access Protocol.
DSSP only enable operations on the state
Services are orchestrated (combined) into
applications
See later
Representational State Transfer (REST)
Originally developed w. HTTP/1.1 protocol
World is composed of clients and servers
Clients generates requests
Servers receive requests and generate
responses
Responses enable transfer of data / resources
Clients are at rest or in transition between
states
REST architectures are based on a set of
constraints that define principles for design
REST constraints
Client Server
Stateless
Clients cannot tell if they are directly tied to a server
Code on Demand
Clients may cache responses
Layered System
Servers do not store information about client states
Cacheable
Clear separation by uniform interface
Servers may offload by code to clients (Applets, )
Uniform Interface
Definition of a uniform interface to decouple/simplify
REST Interfaces
A REST service relies on a uniform interface
Identification of resources
Manipulation of resources through requests
Resources are identified in requests
Example could be URI
Responses are adequate to identify/modify server
data if needed and allowed
Self-descriptive message format
Internet media type (formerly known as MIME)
Uniform Resource Identifier
Best known from URLs
A unique string to identify a resource
A URI is composed of a scheme, syntax and protocol
<schema> : <hierarchical name> [? <query>][#
<fragment>]
Schema
Name
http, file, ftp, mailto, ldap, nntp, samba, urn
www.cc.gatech.edu/~hic/Georgia-HomePage
Animal:Ferret:Nose
Query
Index.php?Robot
Decentralized Software Services
There are several services to support
deployment and orchestration
Services are orchestrated through an
application manifest
RDS includes a manifest editor
Manifests defines the services to be deployed
DssHost processes manifests and launches
applications
Easy generation of manifests for applications
The status of an application can be monitoring
through the web typically
http://localhost:50000
DSS basic status screen
Concurrency and Coordination Runtime
(CCR)
Provides basic communication and
concurrency support
Uses message passing as a basis
Communicates using ports
Messages are posted to ports
Receivers de-queue messages from ports
Arbiters handle message
coordination/synchronization
Tasks are queued to process data
Dispatcher launches handlers to execute tasks
CCR Structure
PortSe
t
PortSe
t
PortSe
t
Receiv
er
Receiv
er
Receiv
er
Arbiter
Task Queue
Dispatcher
Visual Programming Language (VPL)
Visual Simulation Environment (VSE)
C# vs Java
Concept
C#
Java
Virtual Machine
CLR
JVM
Name Space
namespace / using
package / import
Attributes
[attribute]
@annotation
Base class
Base
super
Abstract objects
Abstract
abstract
Sealed Objects
Sealed
final
Replacement
methods
New keyword
NA
Constants
const / readonly
final static
Generics
Class<type>
class<type>
Installation
Install a version of Microsoft Visual Studio
Express is OK (use the C# version)
Preferably the 2008 version (supported locally and
easier to use)
If you use the 2010 version note the need to
downgrade .NET to 3.1 (www.microsoft.com/net)
Download the latest version (R3) from
http://www.microsoft.com/robotics
You might also want the ProMRDS software
package available from downloads at
http://www.promrds.com/
A first simulation
Run simulation apartment / robot simulate to
play around.
There are quite a few good simulations to get
started
Will discuss the features more in next lecture
Running a DSS service
Start DSS Command Prompt setup
environment
Or in reallife
DssHost /p:50000 /t:50001
Access browser http://localhost:50000
DssHost /?
Check services,
Start a basic service to show an example
Our first software service
Lets create a dummy service
DssNewService /service:BasicExample
Could also be created directly in Visual Studio
In our example
BasicExample
Check the files created in the BasicExample
Directory
BasicExampleTypes.cs
BasicExample.cs
BasicExample.manifest.xml
Walk through the files to see the basic structure of
an empty service
Acknowledgement
This series of lectures has been developed
with generous support from the Microsoft
Corporation as part of the project Software
Engineering in Robotics Contract # 113873.
The support is gratefully acknowledged.