Fork me on GitHub

Dodedodo - Artificial Intelligence for you!

Dodedodo is an internet of things infrastructure. More than other software packages it provides machine learning and artificial intelligence algorithms for everyone to use in their applications. But, why the internet of things? We would like answer that question with a few questions of our own:

The internet of things
A computer on every desk and in every home. A dream came true. Computing power in the hands of every human. Nobody would have understood its implications. Now, there are two inevitable scenarios for the future. First, a computer on every street corner. Second, computing power in the hands of devices. This is the internet of things.

The need of new technology might not always be visible beforehand, however, actively withholding yourself from technology might have undesired side-effects. We want to give you the power of this type of pervasive technology. You want to be able to use those services, and you want to decide where your data goes, and how to process it. We would like to take you on a journey with us, to enable you to do so.


The Dodedodo infrastructure is different from most machine-to-machine framework. As also explained on our roadmap, we believe that devices in the internet of things will have the same high bandwidth requirements as humans. The "normal" internet allows for offloading intelligence to humans. However, if devices start to talk to each other, this will become different. To be useful these devices need to be smart, they cannot afford to remain ignorant. This means that the requirements will quickly go beyond very low-bandwidth solutions and it is much wiser to use existing infrastructure for video and audio also between machines. Note, that this does not preclude using low-energy low-bandwith devices in the periphery (we have expertise with ZigBee, Bluetooth LE, and Myrianed (ultra-low-energy) networks).

So, why the Dodedodo infrastructure?

There are many interpretations of a framework like this. Perhaps some short phrases will be clarifying this new platform:


The Dodedodo infrastructure exists out of a rich toolset. It is not created as a stand-alone library or a single API and it must much more be seen as an ecosystem. It takes its inspiration from robotic platforms such as YARP (Yet Another Robot Platform) and ROS (Robot Operating System), from online application repositories such as Google play and Launchpad.

The Dodedodo infrastructure consists of:

A visualization of the Dodedodo architecture:

Visualization of Dodedodo architecture

The code can be found at AIM on GitHub.

Drag-and-drop Interface

The visual interface at is not required to be used. However, it is a very attractive way to quickly setup an entire infrastructure of modules across a lot of devices. As a tongue-in-cheek example, you can see this Christmas tree that sends out a message in Morse code, which is picked up by an Android smartphone.

Imagine how much work that would be without an infrastructure like Dodedodo. Things like NAT traversal to cross a firewall, starting the modules in the right sequence, cross-compiling code for the Raspberry PI and the Android phone. Using the Dodedodo infrastructure you can concentrate just on building the algorithms themselves.

Real-time streaming

The infrastructure used by Dodedodo is not reinvented. Dodedodo uses XMPP, a well established protocol that has plenty of extensions for specific purposes. This means that you can manage your applications by sending chat messages! The other neat property of using well established solutions such as XMPP is that security is baked in from the start.

Christmas tree wishing Merry Christmas

Cross-platform support

The cross-platform support is delivered by the rur-builder application (see AIM on GitHub). Currently rur-builder provides functionality for different middlewares. Supported are:

The rur-builder allows you to write exactly the same code, in C++, and it runs smoothly in all the scenarios of above. For example, if you want to use a module that does "unsupervised learning", say "k-means clustering", you do not have to change anything to run it on Android and communicate to it using "intents", or to run it as a module in your Node server installing it via npm and communicating with it using javascript function calls.

Module Management and Scheduling

Managing of modules can be done with the so-called aim tools. This is a suite of tools in the same spirit as for example roscreate-pkg in ROS. For more information type in aim help.


You would like to know more? Check out the company providing all this open-source software Distributed Organisms B.V., a spinoff of the Dutch research institute Almende. The github repository of DoBots is called dobots. You can also checkout the repositories of individual authors Bart van Vliet, Dominik Egger and Anne van Rossum.

Open source

Our software is offered as open-source software under LGPLv3 or Apache license. Distributed Organisms B.V. (or DoBots) is an Almende spin-off. This group uses this software in all kind of commercial products, which allows us to provide it for free to the community at large.

Site last rendered 30 May 2014