The Microsoft Robotics Developer Studio (Microsoft RDS, MRDS) is a Windows-based environment for robot control and simulation. It is aimed at academic, hobbyist, and commercial developers and handles a wide variety of robot hardware.It has found uses in a large number of domains and has certainly caught the fantasies of roboticists all over the world. It has 4 basic components:
Visual Simulation Environment (VSE)
Visual Programming Language (VPL)
Concurrency and Coordination Runtime (CCR)
Decentralized Software Services (DSS)
Understanding each of these components explains the capabilities of this SDK.
Visual Simulation Environment (VSE)
The VSE is the most exciting part Robotics Developer Studio and my favourite. It provides a game-like environment which can be even used by beginners with no programming experience to develop applications. You can prototype and model your own robotics scenarios. Such scenarios can include, along with your robot, entities such as objects, buildings, trees etc. The simulation environment provides an edit mode (not included in the MRDS Express Edition) where entities in the scenario can be added or modified according to the needs. These scenes can also be saved for later use. Since the VSE includes an advanced physics simulation running within real time constraints, it can be effectively used to study the behaviour of a robot without employing any hardware. The same services can later be run on the hardware without changing the code. The images show how basic or how advanced the scenarios can be.
Visual Programming Language (VPL)
Microsoft Visual Programming Language (VPL) is an application development environment designed on a graphical dataflow-based programming model. It is intended for both, beginners and advanced programmers. Below is an example of a VPL dataflow. It represents various activities and services as blocks which can be dragged and connected via inputs and outputs to perform a given task.
In the following image the block GenericContactSensors represents a contact sensor on the robot which upon being hit by an object in its path will reult in an 'alert' dialogue box with the message "I AM HIT".
The following pic shows a full VPL window with a slightly complex block diagram. Notice the left sidebars which are a list of activities and services. When dragged upon the diagram (labelled in red) these are visible as blocks which can be connected.
Concurrency and Coordination Runtime (CCR)
CCR is an asynchronous programming library based on .NET Framework from Microsoft. It simplifies concurrency, coordination between components and failure handling which are essentials for designing a complex robot. Not only is it used to model robotic behaviour but also to express asynchronous behaviour in other applications.
In synchronous I/O a thread starts an I/O operation and waits until the request is completed. While in asynchronous I/O, the thread performs other tasks while request is being processed. This saves time and improves processing efficiency. Also asynchrony is needed where devices operating at different speeds work together.
However most programmers find it difficult to write code that performs asynchronous I/O, especially because of its syntax. Instead they tend to write code performing I/O operations synchronously which reduces the efficiency of applications and can even cause them to hang sometimes (eg. a not responding web browser). The CCR simplifies the job by providing a number of classes for creating a simple object model which can be used to express complex coordination patterns easily. It also provides a high-performance thread pool.
Decentralized Software Services (DSS)
Decentralized Software Services (DSS) is a lightweight .NET-based runtime environment that sits on top of the Concurrency and Coordination Runtime (CCR). Decentralized Software Services (DSS) provides a lightweight, state-oriented service model that combines the notion of representational state transfer (REST) with a system-level approach for building high-performance, scalable applications.
To learn about MRDS and its components in detail read the tutorials on MSDN website.
Return to
home page