Microsoft Robotics Developer Studio – Introduction
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 :
¬ NVIDIA PhysX
¬ Microsoft XNA Framework (for 3D simulation)
¬ Microsoft CCR (for concurrency and coordination)
¬ Microsoft DSS (for REST services)
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 :
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
|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 :
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.
|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 !
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.
|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|
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 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|
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 :
various applications for DSS,
for visual programming application
and specialized tools
Note also the presence of the XBoxCtrlViewer.xap file which is a Silverlight application dedicated to manage XBox interface.
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 ‘.
By default this repository is empty.
This package contains the CRR and DSS installer.
¬ Microsoft CCR and DSS Runtime 2008 R3 Redistributable.exe
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.
For the first launch, you will certainly be surprised by all applications you may launch. Here below is the program
|Visual Simulation Environment
This repository allow you to launch any sample. Read below the next ‘ Samples ‘ paragraph.
|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.
|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.
|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.
|iRobot Create Simulation|
|KUKA LBR3 Arm|
|Lego NXT Tribot 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.
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
|House Floor Plan|
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).
|Multiple Simulated Robots|
|Simple Simulated Robot|
|Simulated Air Resistance|
Finally I didn’t succeed in launching the following samples :
¬ Simulated Sumo
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
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.
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 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.
About this entry
You’re currently reading “Microsoft Robotics Developer Studio – Introduction,” an entry on dkor
- 13 July 2010 / 15:52
- LEGO, LEGO MINDSTORMS, Microsoft, Microsoft CCR, Microsoft DSS, Microsoft Robotics Developer Studio, Microsoft XNA, NVidia PhysX, Robotics
- .Net, ANTLR, CCR, COLLADA, Decentralized Software Services Protocol, DirectX, DSS, DSS Log Analyzer, DSS Manifest Editor, DSS Node, DSSP, HTTP, iRobot, Khronos Group, KUKA, KUKA LBR3 Arm Robot, lego, lego mindstorms nxt, messaging, Microsoft, Microsoft .NET Strong Name Utility, Microsoft Robotics Developer Studio, MSDN, NVidia, PhysX, Pioneer, Pioneer X3D, REST, Robotics, Roomba, SimplyCube, SimplySim, strong name, TCP, Terence Parr, Visual Studio, XBox, XNA, XNA Game Studio, XSLT