SubjuGator 6 from the University of Florida wins submarine competition using MSRS
Just picked up this blog [1] by Jon Erickson: In a competition sponsored by the Association for Unmanned Vehicle Systems International (AUVSI) and the Office of Naval Research, the SubjuGator 6 from University of Florida uses a single-board Intel Core 2 Duo based computer running the Windows XP provides processing power necessary for monitoring and controlling all systems. The behavior of SubjuGator is controlled with Microsoft Robotics Studio framework communicating with a network of intelligent sensors. Full story including photos at [1].
Very cool!
Henrik
[1] http://www.ddj.com/blog/portal/archives/2007/07/robots_under_wa.html
All Replies
Hi Henrik,
I'm the software lead on Team SubjuGator. I was responsible for pretty much all of the MSRS architecture and coding on the sub.
In the last two competitions, we were the only team in the running that used a windows based platform, and we won in both 2005 and 2006. This year, we designed a completely new platform from scratch, and we also wanted to come up with a completely new software infrastructure. We decided early on that we wanted a modular framework that could easily be added to or edited without having to do a major overhaul of all the code. Around that time, MSRS had just hit its first beta (or was about to), and a few members of our team attended a conference here in Florida where Microsoft was present and gave a few talks about the future of robotics and MSRS. After looking into it, we decided that MSRS would be a great framework to use in our sub.
It was tough at first, because nobody on our team had really done any structured C# programming before, and we certainly knew nothing about the CCR. I eventually made it through the tutorials with enough of an understanding to at least get me started, and then I picked up the rest as I went along.
I cannot stress enough how helpful the MSRS discussion board and now the MSRS forums have been. Without both of them, using MSRS simply would not have been possible. I would especially like to thank George, Henrik, Omid, and Dave Lee, as you all have been the primary source of answers
In the end, we ended up with 13 MSRS services running on a single dual core processor. We interfaced with four serial ports for sensor data and two USB cameras. We integrated OpenCV into our services to do our vision processing, and we also integrated custom Matlab DLL’s to do some digital signal processing on data received from a passive sonar array. MSRS also allowed us to easily create a custom 2D-simulation environment where we could simulate almost our entire mission from start to finish. The beauty was that simulated sensor data could be fed into the system by the sensor services, and the rest of the system had no idea that the data was simulated. We could switch between the real world and simulated world with the click of a single button on our GUI, having to make zero code changes. This was invaluable when it came to testing mission planning code.
We did encounter some issues along the way that we either lived with, or created work-arounds for. I will be making separate posts about these issues individually, as we hope to fix them in the future. With that said, we strongly believe that MSRS allowed us to bring our software platform to a new level of sophistication, and we feel that MSRS played a direct role in winning this year’s competition, which was considerably more difficult and competitive than in previous years.
We have every intention of using MSRS on our sub in the future, and we plan to build a whole new software architecture now that we’re more familiar with the MSRS and the CCR frameworks. In addition, after proving that MSRS could be successfully applied to a complex and large scale robot, here at the Machine Intelligence Lab at UF, other robot groups are interested in moving to MSRS as their framework, and have been asking me for help on how to get started.
If anyone has any specific questions regarding our implementation of MSRS, or about our robot in general, I’d be more than happy to explain. More Information can also be found at www.subjugator.org.
Regards,
Don Burnette
Team SubjugatorWow I checked your web site. Your project looks awsome!
We're so glad if we could be of any help for you to succeed.Cheers,
Omid
Hi Don,
Can i ask, Which single-board computer did you use ?
Thanks
Hi Oguz,
We used an Intel T7600 Core 2 Duo 2.33GHz CPU, 2GB of 533MHz DDR2 RAM, and a Seagate 80GB 7200RPM SATA HDD.
Regards,
Don
Hi Don,
I am trying to simulate a robot that floats in air instead of water. I am having difficulty in creating the atmosphere where I can assign air density and have my Helium filled robot to float in air. I wanted to know that how did you create the water entity in MSRS from which I might be able to create the air entity and be able to float my robot in air. Thank you for your help.
Hi,
Don's team has created a real submarine robot. I'm not sure if they have also made a simulation for it. As far as I know the MSRS simulator currently only supports the physics of solids, even though the underlying AGEIA physics engine can handle much more complex physics (for example, physics of fluids, etc), currently the MSRS simulator is not using all of that functionality.
What you are workign on seems to be very interesting. Someone in the simulation forum might be able to give you a better advice to get it done.
Thanks,
Omid
Don,
Congratulations on winning the sub competition. I am on the simulation part of a sub design group. We are using MCRS but no one has any experience with it. How did you create the simulation of water? All the examples I have found are terrestrial. If you found some specific sites (other than this one) that were useful I would appreciate you letting me know.
Thanks for any assistance you can provide,
Jeff
I am trying to simulate an helicopter ? Did you simulate a robot that floats in air Courageous ?As far as I know, MSRS is incapable of simulating water entities or atmospheric entities. The documentation is really poor too. It doesn't indicate any such entity. The guys at MSRS developed the simulation environment for just ground robots. So we'll either have to wait for them to include such entity or diverge our plans and use something else.
I am really sorry that I couldn't help you.
According to a short investigation in ageia forum the physics engine does not directly support air resistance. The thing most close to that are the parameters LinearDamping and AngularDamping of an entity. You can compute or set an air resistance force by yourself (which is not necessarily trivial) and apply it via these parameters.
Since PhysX 2.7.2 they have so called "force fields" which should e.g. work as wind and fluids are also possible with 2.7.x according to the Ageia website.
The question is how much of this is supported by MSRS since there is some kind of wrapper I think. AFAIK at least the possibility pointed out above with LinearDamping and AngularDamping is feasible.
OK.
LinearDamping and AngularDamping is good but not enough. I dont want write all of it. I dont have time to develop all. I'll wait samples, If MSRS team writes

Hi,
For the reasons mentioned above, we were unable to run the simulation environment with our sub. We used MSRS exclusively for it's service architecture. If fluid dynamics are ever added to the simulation envrionment, we'd surely integrate it into our system.
-Don
- Would you be willing to give us a status update on your use (or lack thereof) of the simulation environment for the SubjuGator?
- I don't know if you will get a reply given that the previous posting was in 2007. However, on the subject of underwater vehicles, you might be interested to look at this video from SimplySim:
http://www.youtube.com/watch?v=ByFaBklx2xw&feature=channel
SimplySim is a Microsoft Robotics Developer Studio partner. They developed the environments for the RoboChamps competitions as well as a free LEGO NXT simulation. You should contact them directly if you have any further questions:
http://www.simplysim.net/
Trevor


