NAO: Orbit VS XMPP
A few weeks ago I had the opportunity to work on a robotics project involving Nao, the 60cm humanoïd robot created by Aldebaran Robotics. After this first successful experience with the robot, we decided to take it a step further: we installed an Orbit application right on the robot. As we pretend Orbit can work on any device, a robot might actually be the ultimate test!
Nao uses XML-RPC embed in the XMPP protocol in order to provide network APIs. Those APIs are the very one mapped in the nao-as3-api project than can be used to program the robot using ActionScript 3.0. This is the protocol we've used to build a remote controller application for Dell. It was built on top of AIR 3.1, Stage3D and Minko. You can see it in action in the following video demonstration the application on a Dell XT3 tablet PC:
But XML-RPC/XMPP is a very slow and expensive option: the XML parsing alone is quite the CPU hog, and it sure is even harder on the bandwidth. We thought Orbit might be a good replacement so we did a little test application. It was built using Minko and the nao-as3-api. You can see it in action in the following video:
As you can see in the video, XML-RPC/XMPP (right) doesn't perform quite as well as Orbit (left). The synchronization is stuttering and far from smooth when using XML-RPC/XMPP, but it is just perfect when using Orbit. Event better: the Orbit version takes 30 times less CPU, and 100 times less bandwidth!
This gives me real hopes for intuitive, real-time and smooth multi-devices experiences working across tablets, phones, servers... and now robots! If you want to know more about what you can do with Orbit, you can take a look at the 2010/2011 Orbit showreel.
Aerys