View Full Version : Microsoft Robotics Studio
dporter
12-18-2006, 12:14 PM
I have been looking at Microsoft Robotics Studio because it seems to have alot of potential to be a good overall or universal robotics programming system. It downloads for free and has tutorials for learning it and support. The simulation package looks powerful and it has internet control and wireless control robot programming too. I know Robot magazine did an article on it and I was wondering if any of the readers have tried it and would be willing to comment more on the pros and cons.
hgordon
12-18-2006, 01:48 PM
We added support for MSRS on our robot - see
http://www.surveyor.com/MSRS.html
In a nutshell, MSRS is a very powerful architecture, but it is also quite complex with a lot of moving parts, so you need to be patient as you work your way through the tutorials and code samples, as the code is not obvious. Some of this structure may be familiar with those who already develop in the Windows environment, but that's not our world, so we had to get help from some experienced Windows developers in order to create our MSRS drivers.
As the user base grows, I expect that tools will emerge that make this development process easier, and Microsoft is certainly committed to MSRS, so I think it's worth the investment of effort to understand the environment, but if you have trouble initially figuring out how this all works, you are not alone.
dporter
12-19-2006, 11:15 AM
Thanks hgordon,
The more I look at it the more I agree with you. Microsoft I think has great potential but it is not quite there yet for a beginner.
I have been bouncing around the threads lately asking a lot of questions about programming languages and I appreciate the help all have given. I hope that I haven't annoyed anyone in my quest. Robotics is a hobby for me, but also something that really inspires my students. So as they need more, desire more, and demand more, I grow with them. We have started out with BEAM robots and robots made from junk where programming wasn't needed. Then we moved on to Lego RCX, NXT, Botball and Flutterbots. We have been looking at Surveyor SRV-1 too, but that is a grant away at the moment.
So that brings me to my point about programming languages. Through my research the last few weeks I have seen that many companies are starting to step up and provide products that will take students and hobbyists that next step. That next step is a programming system that can tranport across many platforms so that students can start with something basic, but later apply it to more advanced systems. The keys are a simple interface, step by step projects, and a support network now and in the future. What I have seen so far is the Microsoft Robotics System, Robot C by Carnegie Mellon, and Interactive C used by Botball. All of them meet the general requirements I outlined above. For me Robot C seems to be taking the lead since C seems to transfer well to almost all systems and Robot C is developing lessons and simple projects to learn from.
If there are others interested in this topic and would like to discuss the pros and cons of these systems or others please feel free to comment, I'd like to hear from you.
hgordon
12-19-2006, 01:35 PM
Along those lines, we recently added a small BASIC interpreter to the SRV-1 firmware just as a way to provide onboard scripting. However, I don't really like BASIC - it's difficult to create readable BASIC code, so I continued to look for an alternative. Python would be nice, but it won't fit on our processor. URBI - http://www.urbiforge.com - is a very nice robot-specific language, but it is not yet well known. LUA is quite powerful, and it will fit on our ARM7, but it's sufficiently different that I'm concerned about having to educate users on "yet another programming language" ... so I likewise found myself examining the possibility of using an interpreted version of C.
I was able to track down a couple of small "public domain" C interpreters, in particular, one called "Little C" that was written by Herbert Schildt and published in Dr Dobb's Journal in 1989. As far as I can tell, Robot-C and Interactive-C are commercial products, and as we publish all of our source code under GPL, those products are not viable options for us. It appears that our BASIC interpreter was originally derived from the "Little C" codebase, which is nice to know, since the BASIC code had no attribution.
The "Little C" implementation is somewhat limited - it doesn't support pointers, arrays or complex data structures, but it has nestable functions and loops plus a reasonable set of C flow-control commands (if, else, for, do, while, return). We'll build in some robot-specific functions (time(), delay(), motors(), ir(), imgcap(), colorcap(), colorset(), colorget(), scan(), blob(), bitdir(), bitset(), bitget()), and should be able to get this up and running on the robot within the next few days.
dporter
12-20-2006, 09:22 AM
You bring up an important point. There are already many different programming languages out there, so a company wanting to provide a good product can take the other route and instead of supporting one language, support many. That type of planning by a company will satisfy someone like me that is leaning more towards a form of C like "Little C" and someone with a Basic background or MSRS interest too. I hope that the additional effort you have taken for your customers is appreciated and profitable enough for you to continue your programming support.
I did have a note on Interactive-C. It appears that it is a donation-ware software and can be downloaded by the public. It is easy to use and supported with sample code and a code simulator that works well. However, It is limited in that it only supports
"the Xport Botball Controller (XBC), the Handy Board with Expansion Board, the Sumo11, and the Lego RCX using the serial IR tower only. There is currently no support for the USB IR tower"
and will run on
"IC Current Versions:
· Windows 98, 98SE, ME, XP, 2000: 6.0.14- Released 2006-02
· Mac Os X 10.3, 10.4ppc: 6.0.14 - Released 2006-02
· Mac OS7-9: 4.2.1 Update - Released 2004-03-02
· Fedora Core linux 3, 4 : 6.0.14 - Released 2006-02 "
TheDuck
12-29-2006, 12:26 PM
Microsoft and some of the other architectures have support for different languages. Though, as hgordon pointed out, you need to have interfaces written for the different components before you can do anything.
This seems to be a trend; the idea of having components interacting with each other pretty much without knowing anything about the components other than their 'willingness' to share or accept data points.
The other thing I like about the MS studio is the simulation environment. This saves your robot the indignity (and cost) of being slammed against a wall a few thousand times before you get that control program's bugs sorted out. There aren't a lot of these around and certainly not for free. A popular one, the Player/Stage project, is quite good but needs some non-trivial knowledge of compiling programs in Linux to get it going. To optimally configure it for your graphics system it requires some near-rocket-science knowledge.
I am currently looking for a way to build in different languages into the MS environment; specifically how to develop a control program outside and then introduce it as a component. I'll keep you up-to-date on my progress.
hgordon
12-29-2006, 08:31 PM
Microsoft's .NET Micro Framework looks like a possible environment to run on a robot to enable support by their various programming languages (and MSRS). I think it may be a bit too large to fit on our robot (they suggest approx 300kb of program memory and 256kb of data memory), but we plan to investigate whether there is a way to sqeeze it into 128kb flash and 64k data.
vBulletin® v3.7.3, Copyright ©2000-2008, Jelsoft Enterprises Ltd.