Everything you need to know about Gostai and Urbi

try Urbi now!


What is Urbi?

Urbi is a complete open source software platform to control robots, a kind of Operating System for robotics. It includes a C++ distributed components architecture called UObject, and an orchestration script language called urbiscript. The urbiscript language is innovative because it integrates new ways to handle parallel and event-based programming, which are two essential issues in robot programming. Recently, Urbi is also integrating ROS support to be able to integrate ROS nodes inside an Urbi project, and benefit from the best of both worlds.

What kind of robots can it control?

Any kind of robot, from Lego NXT, Bioloid and Spykee, to Aibo, Nao, or Segway RMP. There is a complete list on urbiiforge.org, and they are all available for free. We believe that Urbi is also suitable to control not only robots butalso complex systems in general, involving highly interacting multiple components, like video games, simulations or factory/process management.

Can you tell us about urbiscript and its relationship to the Gostai C++ support?

urbiscript is an orchestration language, which means that its role is to coordinate various components, organize their interactions, the data they exchange, etc. All this in realtime, with a dynamic approach (you can reconfigure everything at runtime), and with advanced parallel and event-based control capabilities. This last part really distinguishes Urbi from other script languages like python for example, where you have to handle parallelism or events in a more traditional way. And it saves a lot of time. C++ and urbiscript talk together via UObject, which is a C++ library capable to transparently bind any C++ object to urbiscript. With UObject, you take your favorite C++ class and it will appear as a native class of urbiscript, except that it is in fact C++ behind the scene. You can then connect this C++ class to other C++ classes using the orchestration capabilities of urbiscript.

What makes Urbi unique?

The parallel orchestration approach that comes with urbiscript is quite unique. We are the only one providing Gostai Suite, a programming suite that handles hierarchical finite state machines (most other graphical approaches offered are flow charts). On a more technical side, the way UObject is bound to urbiscript provides very interesting asynchronous possibilities on the side of C++, which kind of enhances C++ itself with abstractions inherited from urbiscript. This makes UObject a little bit more than a traditional component architecture.

How does Urbi fit within a distribute and remote control environment?

A nice feature that comes with UObject is that you can plug your C++ class into urbiscript in two ways: first in plugin mode, where the C++ class is physically bound to the Urbi engine that integrates the urbiscript interpreter. Everything is tightly connected then, shared memory, etc. The second way is to connect it in remote mode, where your C++ class becomes an executable program that will connect itself to the Urbi engine over the network. From within urbiscript, there is no difference, in both cases you will see that your C++ class appears inside urbiscript and you will get a transparent access to all its methods/variables. But behind the scene you have either direct memory access, or TCP/IP relaying. This means that you can very easily distribute a project simply by selecting certain UObject to run in remote mode, some of them on remote machines, some of them locally on the robot.

Urbi has gone open source. Why did Gostai take this step?

This is the right move in 2010. Android and other open source initiatives gain a tremendous momentum and add value to their underlying companies by creating a community and this model has a future. The point is to have a bigger community, which will provide more feedback so Gostai can improve its products.

What is Gostai RTC?

Gostai RTC is the first commercial implementation of the RTC robotics standard. It is based on Urbi underneath, and you can benefit from the urbiscript orchestration layer together with RTC. Of course, you can also simply use RTC without Urbi, and benefit from Gostai's support. Gostai RTC is a product for the industry, so we sell it together with support and maintenance contracts.

What operating platforms do the various versions support?

Gostai RTC is working on all platforms where you can run Urbi, which means a lot! We have support for almost all flavors of Linux, Windows or MacOSX, plus a few more exotic platforms and processors. Gostai RTC also provides also support for the realtime operating system Xenomai, which we don't offer with Urbi at the moment.

What needs to be done to support a new, custom robot?

Basically, you will develop drivers for your robots by creating appropriate UObjects in C++ to bridge the robot API with urbiscript. The procedure is described in the custom robot section.

For example, you might create a 'headYaw' C++ object, with a 'val' attribute, and use callbacks on read/write on 'val' to trigger the appropriate robot API messages to actually move the robot's head. All this is heavily documented and relatively easy to do. Of course, you also have existing examples that you could use as a starting point to adapt on your robot, and most common bus interfaces (CAN or i2c) are already supported.

What is Gostai Suite?

Gostai Suite is a set of two graphical programming tools: Gostai Studio and Gostai Lab.

Gostai Studio is an editor for hierarchical finite state machines (HFSM), which is a very common way to represent a robot behavior as a series of states connected by transitions, which are associated to conditions. For example, you can be in a 'search the ball' state, and move to the 'follow the ball' state through a transition that is attached to the 'see the ball' condition. Gostai Studio includes a debugger, and since it is based on urbiscript underneath, it is able to do some very sophisticated things, like pause the execution, trace the current state in realtime, and of course run many things in parallel. It's really a unique implementation of the classical HFSM approach, which is standing apart.

Gostai Lab is a user interface generator (UI generator). You can create a UI by drag&dropping widgets on a blank sheet, each widget being associated to a variable in urbiscript that you want to monitor. You can create a widget for a camera, another for a numerical value, seen as a slider, another one could be a button that you associate to some urbiscript code to execute, etc. At the end, you can design a complete application in a completely graphical way. It saves a lot of time, and since it is based on a client/server approach, you can have many instances running in parallel and monitoring different aspects of your robot or algorithms.

Where can developers get Urbi?

The community site is on www.urbiforge.org, where you can get Urbi for free, plus many modules, components, help on the forum, etc. You can also go to www.gostai.com to get a trial version of Gostai Studio, which is a product that we sell.

What kind of services does Gostai provide?

We provide support, of course, but also training sessions (2 days), and we can also help partners in their development or integration efforts with customized development services.