I finally decided to download Microsoft Robotics Studio (MSRS) and have a look at it. I had no idea what I would get, but I was hoping I could use it to simulate autonomous robot soccer matches and I wanted to see what else it could do. I spent an evening having a play with it, and here are my first impressions.
The download was much smaller than I expected (approximately 87Mb), for some reason I thought it was going to be a plug-in for the Visual Studios IDE. It's just a collection a projects and some tools. I haven't yet download the April CTP which must have a bit more; its around 400Mb.
I looked at a few projects and most appear to be based around a Decentralized System Services (DSS) application model, or framework. The application model provides a framework for concurrent distributed services to interact. These could be sensors and actuators, controllers or processors. The services use a light-weight REST messages to communicate and interact. During simulation your services run normally, but instead of getting real images from the camera and really actuating motors you communicate with a simulated environment. The DSS is setup and linked to relevant service assemblies by XML files. There is a visual editor to assist configuring these files.
The simulations uses the AGEIA physics engine and DirectX 3d. I don't know much about the physics engine, except its made by NVidia and it can use dedicated physics hardware if you have it, which I don't. I have a mate who writes low level tests for graphics cards as a job and writes his own physics engine for fun. I'm sure he'll have plenty to tell me about it. Actually - Bryce you know we want you to post on this blog
A visual programming language is provided. Its a visual data flow designer that can connect services that fit into the DSS framework. It seems similar to event based circuit simulation tools I've used, but with a very simple user interface and debugging tools. I did some of the tutorials but the only thing that really kept me interested was that I could send text to the Text to Speech convertor. I don't have a robot that I want to work right now, maybe then I would rate this tool more highly.
There is a fairly wide price range of off-the-shelf robots and robot kits that the Microsoft Robotics Studio that have been can be simulated (I found a list of these in this article). I was immediately drawn to a robot described as a "fighting Japanese robot" (for around $1500). When I looked him up on YouTube I was surprised to find that I'd seen him before, but he was dancing! Lego also has a more reasonably priced Robotics kit ($120). There is also the Nao which will apparently be used in RoboCup 2008! (I'm not sure if those Sony dogs compete in a different category, or are obsolete)
I haven't yet decided how much, if any, I am willing to fork out for a robotic toy. Can I write it off as tax deduction?
Things started looking up when I found the Microsoft Soccer Simulation download. This download has the soccer simulation framework and a demo project with a two-on-two autonomous robot soccer match setup. The robots aren't humanoid, they're two wheeled things with a kicker and a camera. The robots have only been setup for two tasks; Find Ball and Approach Ball. Hence its not really a great spectacle, but a fantastic starting point.
There is a very basic vision processing method the robots use in the demo. The purpose of the method is simple; it takes a 320x200 array of colours from the camera and determines whether or not the ball is in the image. I had a look at the code and quickly realised I'd need to read up on some vision processing theory to really understand how it was working.
I then looked into an announcement: MSRS Nao Simulation Competition for RoboCup 2008 is now available. The post has everything you need to get started writing code for the humanoid Nao robots and simulating 4x4 or 8x8 soccer competitions. The RoboCup simulations uses the Microsoft Soccer Simulation. While these guys are much cooler than the Microsoft robots, they also take a lot more grunt to simulate and there are more of them on the pitch. My quad core processor and low range graphics didn't simulate them very well. (I've never been into computer games, I spend too much timing working and developing on computers and prefer board games, till now, my low range graphics card has always done enough for me).
I only scratched the surface but I'm glad I checked it out. I'm wrapped there's a framework I can write C# services for autonomous robotic soccer players. I just need a better graphics card, more time and some mates to contribute.
It seems the framework can only be used to make truly autonomous that have a processor running Windows and the .NET framework. This is a big step from the 8-bit microcontrollers at university. Robots have got cooler since then, but I'd look further into other operating systems, languages and tools before I started developing code for a real robot in MSRS.
If you just want to write some cool bot code and battle you mates, checkout this Scott Hanselman article, Learning Opportunity - .NET Terrarium is back! I haven't tried the original or the new, but I'm looking forward to it.
Finally, if your feeling a little concerned that the rise of the machines is fast approaching, this video won't give you any comfort. But it's also the topic of one of my favourite XKCD cartoons that doesn't involve velociraptors.