View Full Version : Bridgeware

01-16-2008, 01:59 PM
I've started a new project to develop a bridgeware framework for robotics. This is mainly for use with my own projects, but it might be of use to others too.


There are no releases yet, but you can see the code in the repository http://robotbridgeware.googlecode.com/svn/trunk/ including specific examples for a servo controller and ultrasonics interface http://robotbridgeware.googlecode.com/svn/trunk/DeviceServers/

The main idea here is to make it easy to distribute the software over multiple computers on a network, and also enable better robot software reuse. So for example if at some later date I were to install a different kind of servo controller all I'd need to do would be to write a server program for it which talks via TCP using the simple XML protocol. The higher level control software wouldn't need to care about the specific details of the new device. Also, although my implementation is in C# you could use any language preferred provided that it communicates with the same XML standard.

01-16-2008, 02:48 PM
Nice going! I like the idea of achieving language, OS, and machine independence by passing XML messages via TCP.

In my day job we have switched to using XML over TCP (XMPP variety) to build our (non-robotic) distributed system. Because rapid prototyping tools like Perl and Python support XML+TCP, we can quickly replace components with hastily-written test harnesses, or just log streams to a human-readable text file for post-mortems. This has greatly simplified debugging -- before the change to XML+TCP, the system complexity was getting the better of new employees. Your effort seems highly relevant to research robots!

The Player/Stage project (playerstage.sourceforge.com) has a similar design, although they defined their own non-XML format to use with TCP. Like your design, a big advantage is that you can easily swap out the low-level with new hardware. This makes the high-level control software able to run on _simulated_ hardware, which is great for debugging and unit testing. Player even has a 3D simulator with physics usable for unit testing vision-based robots.

Since your project is also open-source, maybe you will find some code you can borrow from the Player project.

I love hearing about software efforts like these. Keep us posted!

01-16-2008, 03:12 PM
I hadn't though about running simulated hardware, but yes that is also perfectly possible. You could also implement the XML protocol on a wide variety of systems.

Before I started on this I looked around to see if anyone had done it before. Player does include similar elements such as TCP/UDP communication but using a non human readable protocol. MSRS also has a service-oriented architecture, although uses closed proprietary protocols as far as I'm aware, such that you can only really use it on certain operating systems.

So there were a few projects which kind of contained similar elements but weren't really what I was looking for. The protocol should be simple and intuitive to read, making debugging more straightforward. You could also have intelligent systems residing on the internet which the robot connects to (intelligence as a network-delivered service), and I think ultimately this is the way robotics is going to go.

01-18-2008, 12:03 PM
Looks like some pretty interesting software mottors! I'll have to check it out when I get a chance:)