A typical robot perceives it’s surrounding through an array sensors and interacts with its environment by orchestrating the reaction across one or many actuators. For a decent operation these activities must be performed simultaneously and possibly across multiple compute units.  Though this may sound simple, concurrent processing of sensory input, making decisions and controlling the actions can get fairly complex very quickly when bound to classical threading and synchronization mechanisms.

 

Microsoft Robotics Studio (MSRS) simplifies the orchestration and the distribution of computation by the introduction of service-oriented application architecture and a light weight runtime.  This architecture facilitates the composition of structured applications through the assembly of software pieces – called services that provide device level abstraction, isolation, concurrency, distribution and failure tolerance. In this environment applications are a collection of services that orchestrates the interaction between these services by implementing the program logic.

 

To execute these concurrent and distributed applications the runtime offers the following:

 

A Concurrency and Coordination Runtime (CCR):

CCR enables the coordination of messages without the use of threading, locks, semaphores, etc. The CCR is based on asynchronous message passing and provides an execution context for services including a set of high-level primitives for synchronizing messages.

 

Decentralized System Services (DSS):

DSS provides a service hosting environment and a set of basic services facilitating tasks such as debugging, logging, monitoring, security, discovery, and data persistence.

 

The interested reader is referred to the following technical article: 

http://msdn.microsoft.com/robotics/getstarted/runtime/default.aspx