Developing for Robots: An Introduction to The Microsoft Robotics Developer Studio It has been said that one of the next major revolutions in terms of technology will be in personal robotics. Anyone who’s watched the Will Smith blockbuster movie, iRobot, would suddenly get images of robots in the house taking care of household chores, robots doing your gardening, robots attending to everyday mundane activities. Well, it may not be so imminent but the road there is definitely becoming clearer. In the past, robots have been confined to industries and manufacturing. They’ve definitely proved useful in things such as assembling machinery and printing all those millions of transistors on chips. But, what if everyone who could take just a little time to learn, could write applications for robots? – Useful applications. What if you could, on your desktop, or laptop, with no access to high end tools or even robotic hardware be able, in a very simple way write such applications? What possibilities would be open to the average developer then? These are the motivators that set a team at Microsoft on the path to finding a way to solve this very problem, making robotic development easy to do, and create a toolset that is a great fit for the problem. To elaborate on the problem this team sought to tackle, here’s sort of, the ‘state of the (robotics) industry’ that the team was to tackle, and what the Microsoft Robotics Developer Studio seeks to solve: 1. Fragmented hardware – multiple hardware platforms 2. Limited tools and technologies for doing this kind of development 3. It was too complex, and much expertise was needed in order for a developer to get into this field 4. Lack of reusable components 5. Difficulty in transferring this kind of skill So what exactly is the Microsoft Robotics Developer Studio (RDS)? Well, in a sentence, it’s a Microsoft product for building and running Robotics applications. The RDS consists of a set of tools and a runtime for building controlled, semi-autonomous and autonomous robotic applications. The diagram below shows the different components of RDS:
Before going into the details of RDS, it is worth noting what kinds of applications RDS is targeted towards, these are also some of the unique characteristics of Robotics applications 1. Loosely coupled – apps built out of bringing together individual ‘pieces’ and making them work together 2. Asynchronous –having multiple tasks executing in the background in an asynchronous way 3. Concurrent – having multiple tasks being executed at the same time 4. Composable – being able to ‘compose’ or build apps out of bringing pieces together to create a whole 5. Decentralised (Distributed computations) 6. Resilient – Fault tolerant The Runtime Architecture Diagram
The runtime environment runs on the .NET framework. There are two key components here: 1. The Distributed Software Services (DSS) 2. The Concurrency and Coordination Runtime (CCR) These two provide programming models for distributed applications programming (DSS) and a concurrent programming model (CCR). The basic building block of a Robotics application using RDS is a ‘service’. The DSS and CCR provide ways of defining and working with services. DSS is based on Representational State Transfer (REST) principles. It provides programming constructs for expressing distribution. It defines a protocol known as the Distributed Software Services Protocol
(DSSP) which is a simple SOAP-based application protocol that provides a lightweight service model by which one can define services, give them identity and state and create relationships between services1. The CCR, on the other hand deals with the problem of concurrency. Using CCR you can coordinate services very simply. The CCR hides the complexities of dealing with such things as locks and threads directly. Authoring Tools While a programmer can sit down and write C# code to create a robotics application, the RDS provides a Visual Programming Language (VPL). The VPL provides the developer with a set of predefined components and services e.g. actuators, cameras and motors that can be dragged and dropped onto a ‘composition’ area and connected to create an application.
1
Decentralized Software Services Protocol – DSSP/1.0; Henrik Frystyk Nielsen and George Chrysanthakopoulos
RDS also provides a simulation engine so that one can simulate robots in action in a 3D environment. Using the VPL and the simulation engine, a developer can do rapid prototyping and even visualize the robot in action.
Hardware Support The RDS supports a variety of hardware components and various robotics kits including: –
Lego® Mindstorms® RCX
–
Lego® Mindstorms® NXT
–
Fischertechnik®
–
MobileRobots Pioneer P3™
Conclusion The Microsoft Robotics Developer Studio provides a comprehensive set of tools for creating robotic applications. Furthermore, the DSS and CCR can be adopted to other scenarios other than robotics where application have aspects of distribution or concurrency. The RDS comes in several editions of which there is the RDS Express Edition which is free to download and use. So you can get the tools and start exploring the world of robotics. The RDS comes with a number of tools, a large number of tutorials and samples to get you started. Once you get the RDS, a good place to start would be the RoboChamps website which has a number of robotics challenges you can try to solve.
Links 1. RDS 2008 Express Edition Download - http://go.microsoft.com/fwlink/?LinkID=134518 2. RoboChamps – http://www.robochamps.com
3. Microsoft Robotics Page on MSDN - http://msdn.microsoft.com/en-us/robotics/default.aspx 4. CCR and DSS Toolkit 2008 - http://www.microsoft.com/ccrdss/ 5. Decentralized Software Services Protocol – DSSP/1.0 http://download.microsoft.com/download/5/6/B/56B49917-65E8-494A-BB8C3D49850DAAC1/DSSP.pdf
Wilfred Mworia Academic Developer Evangelist Microsoft, East Africa
-