Open Source Robotics Studio... Anyone?

There is a new(ish) product available called Microsoft Robotics Studio, which is an excellent product. It makes controlling commodity robots very easy, and makes the entry into robotics very easy. I am not going to dwell on how good Microsoft Robotics Studio (MSRS) is, as this has been blogged about by many people. What I am going to do it stick my finger in the air and guage the wind.

I have been designing various interfaces for my robots for a while, and each new interface incorporates more features and better modularity. Well, it got me thinking about creating a coherent modular well documented, and most importantly of all, open sourced robotics studio.

Lets think about this logically... In order to control a robot we need input, output, processing, and simulation. We will also need a Hardware Abstraction Layer (HAL) and an output layer.


I would like to create an Open Source simulation environment for robots of all types. The robot simulator will incorporate realistic physics simulation provided by Open Dynamics Engine and a rich toolbox for creating robots in a 3d CAD-like environment. Input and Output devices, such as sensors and motors, will be easy to add to the system with a flexible HAL with high modularity.
Features that the Open Source Robotics Studio must have are:

  • A simple and intuitive interface
  • easy creation of drivers of sensors and motors
  • realistic simulation environment
  • Modularity of plugins and extensions
  • Simple robot control API
  • kinematics support
  • Machine vision
  • Visual Programming Language
  • Threading support

The system will comprise of 3 layers, the HAL, the portability layer, and the main application core.

Main Application layer
Portability Layer
Hardware Abstraction Layer

The HAL will allow for modular drivers for robot hardware. The Hartware Abstraction Layer will control a sanitised interface between each piece of the robot core hardware. The HAL will be split into further modules which handle the Interface to communication hardware on the target device which then has modules to handle the specific protocol on the bus, enumerate devices, and load the protocol specification from an XML file. The XML file makes for quick sensor development if the device is simplistic. More complex controller hardware may require additional processing libraries to be loaded.

Portability layer
The portability layer sits between the hardware layer and the main application layer.
This layer allow the Hardware abstraction layer to run on different target hardware and hook into the main application.

Application layer
The application layer will host the main simulation environment. This layer interface will allow the main simulation to be replaced with customised code when the application is ready for deployment. The application will sit above this layer, and provide interface to the pluggable module system allowing easy use of physics computer vision, AI, and more. This layer also has a script execution engine that allows for threaded robot control.

The simulator runs above the application layer. The application layer provides the interface to both the enumerated hardware, and the modules required to manipulate a virtual robot.

OpenCV and ARToolkit(Plus) for camera manipulations
Open Dynamics Engine for physical simulation
OGRE3d for model handling
OpenGL for displaying all parameters.
Visual Programming Language to obtain the low entry bar for uptake
Player robot platform support
Realtime Linux compatible.

Main Content: 


Open Source Robot Software

Hi Barry,

I have been thinking about this a lot lately as well. I am more concerned about making a real-robot OS than a virtual world, though I have been all over that in the past.

I have been thinking about how much programming the robot is such an arduous task compared to even assembling the robot...and how this shouldnt be. Most robots are very much the same. We need servo outputs, Inverse Kinematics, motion planning, sensor inputs, and finally some kind of AI to tie it all together. I would like to see some sort of open source robot OS that provides this almost out of the box. Things such as sensors, limbs and effectors, should be immediately usable without programming for it. For example, the robot OS should only have to know the limb structure, the AI can decide to use it for a leg or an arm based on it's the kinematics possibilities. That means, the AI could decide to change the use of a leg to some sort of arm if it deams it capable of doing the required task. The robot OS could be extended where required.

I would like to see it scalable as well for all the various microcontrollers out there. So it may run on uclinux, full linux, no linux at all but a basic BIOS or a basic "robot kernel".

The software would have to be open source to grow big, people could make lots of money selling the sensors, effectors, controllers, etc.

Lets talk some more.

I can help a bit

quit good decision, I can help :
I have a quit good experience with OGRE3D mixed with QT trolltech lib. It's a very good way to develop it take some effort to compile together but I can share my experience. Despite of I have no more time to develop in extra project (hope it will change) I can solve some trouble you could meet with OGRE3D. OGRE3D lack of mouse and keyboard good handling. The associates GUI are not so good but QT can help a lot, imagine you can bind signal slot on an object property...
Since I have electronics experience in robotic and I well understand how work openservo, I can help to. You might have a look to the animation framework of QT. I think you know it because you achieved a quit good soft for openServo.
So keep me inform and good luck
Wonderfull project

Damien MIRAS