Microsoft Robotics Developer Studio – Introduction

MICROSOFT Robotics Developer Studio web site !

Microsoft has released its Robotics Developer Studio. I take advantage of this ‘event’ to explore in a more detailed way this software dedicated to robotics. As always, you may find detailed and continually improved description about this technology at this blog page.
Let’s start downloading and installing MS RDS 2oo8 R3.


In order to be able to install directly Microsoft Robotics Developer Studio, it is recommended that the following technologies be present on your computer. But by default if not, the installation process will do it for you and will install :
¬ Microsoft XNA Framework (for 3D simulation)
¬ Microsoft CCR (for concurrency and coordination)
¬ Microsoft DSS (for REST services)


Visit NVIDIA PhysX web site !

NVIDIA PhysX provides game physics solutions for a variety of platforms including PC and all current major game consoles, in both software and hardware-accelerated configurations. Here are the official main features that NVIDIA PhysX offers :
¬ Complex rigid body object physics system
¬ Advanced character control
¬ Ray-cast and articulated vehicle dynamics
¬ Multi-threaded/Multi-platform/PPU Enabled
¬ Volumetric fluid creation and simulation
¬ Cloth and clothing authoring and playback
¬ Soft Bodies
¬ Volumetric Force Field Simulation

If you want to explore in a more detailed manner this technology, I recommend you to have a look at these links :

¬ Developer Zone
¬ NVIDIA UE3 PhysX Training Downloads
¬ NVIDIA PhysX SDK Downloads
¬ PhysX Developer Tools
¬ PhysX Developer Support

Microsoft XNA Framework

The XNA Framework class library is a library of classes, interfaces, and value types that are included in XNA Game Studio. The framework runs on a version of the Common Language Runtime that is optimized for gaming to provide a managed execution environment.

XNA Framework API overview

Namespaces Description
Microsoft.Xna.Framework Provides commonly needed game classes such as timers and game loops.
Microsoft.Xna.Framework.Audio Contains low-level application programming interface (API) methods that can load and manipulate XACT-created project and content files to play audio.
Microsoft.Xna.Framework.Content Contains the run-time components of the Content Pipeline.
Microsoft.Xna.Framework.Design Provides a unified way of converting types of values to other types.
Microsoft.Xna.Framework.GamerServices Contains classes that implement various services related to gamers. These services communicate directly with the gamer, the gamer’s data, or otherwise reflect choices the gamer makes. Gamer services include input device and profile data APIs.
Microsoft.Xna.Framework.Graphics Contains low-level application programming interface (API) methods that take advantage of hardware acceleration capabilities to display 3D objects.
Microsoft.Xna.Framework.Graphics.PackedVector Represents data types with components that are not multiples of 8 bits.
Microsoft.Xna.Framework.Input Contains classes to receive input from keyboard, mouse, and Xbox 360 Controller devices.
Microsoft.Xna.Framework.Media Contains classes to enumerate, play, and view songs, albums, playlists, and pictures.
Microsoft.Xna.Framework.Net Contains classes that implement support for Xbox LIVE, multiplayer, and networking for XNA Framework games.
Microsoft.Xna.Framework.Storage Contains classes that allow reading and writing of files.

The 3 following links will help you to go deeper in the mastery of the XNA Framework :

¬ Wikipedia definition
¬ XNA MSDN Developer Center
¬ Download XNA Framework

Microsoft CCR

As defined in the MSDN page about this feature, the CCR addresses the need of service-oriented applications to manage asynchronous operations, deal with concurrency, exploit parallel hardware and deal with partial failure.


Namespaces Description
Microsoft.Ccr.Core CCR containing concurrency scheduling and orchestration primitives
Microsoft.Ccr.Core.Arbiters CCR base classes and interfaces for arbiters

We will implement the CCR Api in a future post. Stay tuned !
Microsoft DSS

Decentralized Software Services (DSS) is a lightweight .NET-based runtime environment. DSS sits on top of the Concurrency and Coordination Runtime (CCR). It provides a lightweight, state-oriented service model that combines the notion of representational state transfer (REST) with a system-level approach.
The DSS runtime provides a hosting environment with built-in support for service composition, publish/subscribe, lifetime-management, security, monitoring, logging both within a single node and across the network. Services can be written in Visual Studio, or using Microsoft Visual Programming Language (VPL).

DSSP – Decentralized Software Services Protocol

DSS uses Decentralized Software Services Protocol (DSSP) and HTTP as the foundation for interacting with services. DSSP is a lightweight SOAP-based protocol that provides a clean, symetric state transfer application model with support for state manipulation and an event model driven by state changes.
DSSP is an extension of the application model provided by HTTP and is expected to be used as an addition to existing HTTP infrastructure.


Namespaces Description
Microsoft.Dss.Core DSS basic primitives
Microsoft.Dss.Core.Attributes DSS attributes for declaring service properties
Microsoft.Dss.Core.DsspHttp Message types for handling HTTP requests
Microsoft.Dss.Core.DsspHttpUtilities Utilities for reading and writing data to and from HTTP
Microsoft.Dss.ServiceModel.Dssp Message types defined by DSSP service model
Microsoft.Dss.ServiceModel.DsspServiceBase Base class for DSS service implementations

Go further

I recommend you to read the internal documentation and especially :
¬ DSS Introduction from the Microsoft Robotics Developer Studio 2008 R3 Documentation
¬ DSS API from Microsoft CCR and DSS Runtime 2008 R3 Class Reference Documentation
¬ Decentralized Software Services Protocol – DSSP/1.0
And the following online documentation :
¬ [MSDN] DSS Introduction
¬ RFC 2119 – Key words for use in RFCs to Indicate Requirement Levels
¬ RFC 2396 – Uniform Resource Identifiers (URI): Generic Syntax
¬ RFC 2616 – Hypertext Transfer Protocol — HTTP/1.1
¬ W3C REC – XML Information Set
¬ W3C REC – XML Schema Part 1: Structures
¬ W3C REC – XML Schema Part 2: Datatypes
¬ W3C REC – SOAP Version 1.2 Part 1: Messaging Framework


Installation process

MICROSOFT RDS Installation - Step 1 Step 1 :: Check pre-requisites installation

As I mentioned in the previous paragraph, before installing Microsoft RDS, some technologies must have already been installed. The system check whether Microsof XNA Framework, NVIDIA PhysX, CCR and DSS are present or not.

MICROSOFT RDS Installation - Step 2 Step 2 :: Wizard launch
MICROSOFT RDS Installation - Step 3 Step 3 :: Welcome
MICROSOFT RDS Installation - Step 4 Step 4 :: License agreement
MICROSOFT RDS Installation - Step 5 Step 5 :: Robotics Feedback & Update Programs

If you decide to participate to the Robotics Feedbacks program, the program collect information about how you use MSRDS so that Microsoft may know which features to improve.
By selecting the Automatic Update Checks option, you may be alerted when a new version becomes available.

MICROSOFT RDS Installation - Step 6 Step 6 :: Custom type

You may decide to install all features or to select which features you want to install or not.

MICROSOFT RDS Installation - Step 7 Step 7 :: Ready to install

Last step before launching installation.

MICROSOFT RDS Installation - Step 8 Step 8 :: Installing
MICROSOFT RDS Installation - Step 9 Step 9 :: Installed

Installation repository overview

Yes ! MS RDS is now installed. Well done ! Let’s have a look at the installation repository. You know that I like to do this to understand how is managed the software and it’s a very, very, very good source of documentation about technologies that has been used (licensing files), the data structure (XML file) and so on. I always learn a lot thanks to this approach.

Installation repository Sub-repositories description
MICROSOFT RDS Installation Repository ! bin
The ‘ bin ‘ repository contains all executables necessary to work with the Robotics Developer Studio. It’s always interesting to have a look at this repository, you always find information about technical possibilities or features. Among executables utilititaries like :

¬ Collada2Xml.exe
¬ Obj2Bos.exe
¬ LoadGenerator.exe
¬ UpdFdbkUtil.exe

various applications for DSS,
¬ DssDeploy.exe
¬ DssHost.exe
¬ DssLogAnalyzer.exe
¬ DssNewService.exe
¬ DssProjectMigration.exe
¬ DssProxy.exe

for visual programming application
¬ vpl.exe
¬ vplc.exe
¬ VplHost.exe
¬ VplToDotNet.exe

and specialized tools
¬ HttpReserve.exe
¬ PipeTransportHost.exe
¬ ServiceAdmin.exe
¬ UdpTransportHost.exe
¬ WebcamPipeServer.exe

Note also the presence of the XBoxCtrlViewer.xap file which is a Silverlight application dedicated to manage XBox interface.
At last the ‘ Pipeline ‘ repository contains libraries for pipeline management.

This repository contains the link and the content to the both local documentation : CCR and DSS Runtime Class Reference & Documentation (See below).
This repository contains elements about both Microsoft and Microsfot’s partners licenses agreement and global information. Among those partners you will find of course NVIDIA but also ANTLR and SimplySim.
ANTLR, according to the author Terence Parr’s definition ‘ ANother Tool for Language Recognition, is a language tool that provides a framework for constructing recognizers, interpreters, compilers, and translators from grammatical descriptions containing actions in a variety of target languages ‘.

ANTLR web site !

SimplySim is a French firm which is developing a simulation engine and 3D editors, see SimplyCube.

Try SIMPLYSIM Simply Cube all-in-one software tool !

By default this repository is empty.
This package contains the CRR and DSS installer.
¬ Microsoft CCR and DSS Runtime 2008 R3 Redistributable.exe

MICROSOFT RDS - CCR and DSS Runtime Installer

See below the First launch section
This repository contains all files for:
¬ cached data (in cache sub-repository)
¬ log information (in log sub-repository)
¬ images (.bmp, .jpg files), 3D object description file (.obj, .mtl [Alias/WaveFront], .fx [DirectX] files) and more (.x [Windows], .bos [Dynamite VSP], .dds) (in media sub-repository)
¬ XSL transformation (in transforms sub-repository)
This repository contains also the serviceSearchPaths.xml file which indicates configuration and DSS services paths.
This repository contains only one utilitary application :
¬ Microsoft .NET Strong Name Utility (sn.exe) which helps sign assemblies with strong names.

First launch

For the first launch, you will certainly be surprised by all applications you may launch. Here below is the program

MICROSOFT RDS - Menu Visual Simulation Environment
This repository allow you to launch any sample. Read below the next ‘ Samples ‘ paragraph.

MICROSOFT RDS - Visual Simulation Environment : Samples

Build All Samples
Here below is a detailed description of the samples supplied with the software.
CCR and DSS Runtime Class Reference
Open CCR and DSS Runtime Class Reference local html documentation
Open Microsoft Robotics Developer Studio 2008 R3 local documentation
DSS Command Prompt
Run the DSS Command Prompt.

MICROSOFT RDS - DSS Command Prompt

DSS Log Analyzer
Launch the DSS Log Analyzer. See the description below.
DSS Manifest Editor
Launch the DSS Manifest Editor. See the description below.
DSS Services Description
Open the local DSS Service Description Directory documentation. See the description below.
Open directly the ‘ packages ‘ subrepository at the installation location.
Robotics Developer Studio
Open directly the Microsoft RDS installation location in your local system.
Run DSS Node
Launch the Run DSS Node command. See the description below.
Update and Feedback Options
Launch the Update and Feedback Options window. As during the installation, you may decide to activate or desactivate here the automatic updates and the feedback process option.

MICROSOFT RDS - Robotics FeedBack and Update Programs window !

Visual Programming Language
Launch the Visual Programming Language IDE. See the description below.


Once Microsoft Robotics Developer Studio is installed you may build all samples and launch them. Here below is an overview of these samples and the possibility to program for external robot like iRobot Roomba, LEGO MINDSTORMS NXT 2 Tribot, KUKA LBR3 Arm Robot and Pioneer X3D.
By the way if you want to go further in the use of Microsoft RDS, I recommend you to begin with the online tutorials.

MICROSOFT RDS - Samples : iRobot Create Simulation ! iRobot Create Simulation

Visit iROBOT web site !


Visit KUKA web site about LBR3 Arm robot product !

MICROSOFT RDS - Samples : LegoNXT Tribot Simulation ! Lego NXT Tribot Simulation

Visit LEGO MINDSTORMS NXT 2 web site !

MICROSOFT RDS - Samples : Pioneer 3DX Simulation ! Pioneer 3DX Simulation

Others samples illustrates mainly the way the Microsoft RDS take advantage of the XNA Framework to generate 3D environment (based on standard like COLLADA for example). Architecture, Game, CAD simulation are the main domain in which these may be used.

MICROSOFT RDS - Samples : Apartment Environment ! Apartment Environment
MICROSOFT RDS - Samples : Collada Scene ! Collada Scene
COLLADA is a COLLAborative Design Activity for establishing an interchange file format for interactive 3D applications. COLLADA is managed by the not-for-profit technology consortium, the Khronos Group. Read more on Wikipedia
MICROSOFT RDS - Samples : Factory ! Factory
MICROSOFT  RDS - Samples : House Floor Plan ! House Floor Plan
MICROSOFT RDS - Samples : Modern House ! Modern House
MICROSOFT RDS - Samples : Outdoor Environment ! Outdoor environment
MICROSOFT RDS - Samples : Urban Environment ! Urban envionment

Another series of samples are dedicated to enhancing Microsoft RDS features like multi concurrency. This kind of samples are useful to understand how the Simulation environment may be controlled thanks UI like the Dashboard (see especially the ‘ Multiple Simulated Robots ‘ sample) or customized UI (see especially the ‘ Simulated Air Resistance Demo ‘ sample).

MICROSOFT RDS - Samples : Multiple Simulated Robots Multiple Simulated Robots
MICROSOFT RDS - Samples : Simple Simulated Robot ! Simple Simulated Robot
MICROSOFT RDS - Samples : Simulated Air Resistance Demo ! Simulated Air Resistance

Finally I didn’t succeed in launching the following samples :
¬ Entities
¬ Simulated Sumo
And you?

DSS Log Analyzer

MICROSOFT RDS - DSS Log Analyzer !

The Decentralized Software Services (DSS) Log Analyzer tool allows you to view log files that have been recorded using DSS logging. You can step through messages, filter message flows across multiple DSS services, and inspect message details.

Stay tuned ! In a coming post, I will detail the DSS Log Analyzer interface and features !

DSS Manifest Editor

MICROSOFT RDS - DSS Manifest Editor !

Decentralized Software Services (DSS) Manifest Editor (DSSME), is designed to enable the programmer to create and edit DSS service manifests. Service manifests are XML files that contain a list of services and their configuration. The programmer uses these to start services using the DSS runtime, Manifest Loader Service.

I will dedicate a future post to the DSS Manifest Editor understanding and mastering. Stay tuned !

Run DSS Node


Run DSS Node shortcut contains a command line similar to ” C:\Users\xxxx\Microsoft Robotics Dev Studio 2008 R3\bin\DssHost32.exe” /p:50000 /t:50001 /m:”samples\config\UriLauncher.manifest.xml “. This command uses port 50000 for HTTP (XML) communication and port 50001 for direct (binary) TCP communication.
DSS has been designed so that you can use a web browser to examine the services running in a DSS Node. If you started the DSS Node successfully from the Start Menu, then a web browser should already be displayed. You should see a web page similar to the one below.

MICROSOFT RDS - Run DSS Node : Launch node at localhost:50000 !

I will dedicate a future post to understand what Run a DSS node means and what you can do with the web interface. Stay tuned !

Microsoft Visual Programming Language

MICROSOFT RDS - Visual Programming Language IDE

Microsoft Visual Programming Language (VPL) is an application development environment designed on a graphical dataflow-based programming model. VPL is targeted for beginner programmers with a basic understanding of concepts like variables and logic. However, VPL is not limited to novices. The programming language may appeal to more advanced programmers for rapid prototyping or code development.

Stay tuned ! In a coming post, I will detail the Visual Programming Language IDE features.

I actively recommend Microsoft Robotics Developer Studio.