Monday, October 5, 2009

Microsoft Robotics Developer Studio

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

Friday, October 2, 2009

Silverlight... an introduction

Though Silverlight is one of the most talked about softwares nowadays, many people still don’t understand what actually it is. Here is a brief introduction.
Microsoft Silverlight is a web based platform for building and running Rich Interactive Applications (RIAs). It has cross browser and cross platform compatibility. This includes Windows 2000, Windows XP, Windows Vista, Windows 7, Macintosh etc. Lets say you have a Mac OS installed on your PC and you want to view or create Silverlight applications in a Safari web browser, there should be no problems with compatibilities. You can view a compatibility matrix of Silverlight versions here.

Silverlight Applications execute within an Active X browser plug-in that installs onto the local machine via the web browser in exactly the same manner as Adobe Flash is installed to run flash based animations. Silverlight plug-in supports vector based graphics & animations and full video integrations.

Silverlight 1.0 is the first version of the software and it supports Java Script programming model. Javascript is used to interact with silverlight objects executing within the player. It has no managed language support.

Silverlight 2 was released in 2008. It brought the capability to create RIA with the familiar code-behind programming model used in Windows forms, ASP.NET and WPF development. It has provided the option of using any CLR language to code Silverlight applications and the power of the .NET framework to interact with Silverlight objects. This choice of using any .NET language and the ability to use Base Class Libraries (BCL) revolutionized the way developers looked at this platform.

Silverlight 3, released this year on July 9, includes extensive enhancements to Silverlight 2 for building line-of-business applications as well as richer support for graphics and media. It provides Adobe Flash-like and Flex-like RIA with HTML & XAML using tools like Visual Studio 2008 and Microsoft Expression Blend. With new UI controls, new libraries and with the inclusion of subset of BCL from the .NET framework, Silverlight 3 adds excitement to rich interactive developments like never before.