Chapter 1. Introduction

URBI (Universal Real-time Behavior Interface) is a scripted interface language designed to work over a client/server architecture in order to remotely control a robot or, in a broader definition, any complex system. As it will be shown in this tutorial, URBI for robotics is more that a simple driver for the robot, it is a universal way to control the robot, add functionalities by plugging software components and develop a fully interactive and complex robotic application in a portable way.

The main distinctive qualities of URBI are the following:

  • Simplicity: easy to understand, but with high level capabilities, makes it suitable both for educational and professional applications.

  • Flexibility: independent of the robot, system, OS, platform, interfaced with many languages (C++, Java, Matlab,...)

  • Modularity: object based component architecture is available to extend the language. The components can be remote or plugged in the URBI Engine, they can be written in any language.

  • Parallelism: Parallel processing of commands, concurrent variable access policies, event based programming,...

Probably one of the most important point for this tutorial is the first one: URBI has been designed from the beginning with a constant care for simplicity. There is no "philosophy" or "complex architecture" to be familiar with. It is understandable in a few minutes and can be used immediately. The way URBI has been designed is to have layered levels of complexity: the more complex your application is, the more complex things you have to learn, but simple applications remain simple to develop. If all you want is to move the robot joints, you can do that in one minute. And if you want to build AI applications, the tools are there for you to do so.

URBI is available with many robots and the number is increasing. Currently, there is an URBI version for Aibo, for the HRP-2 humanoid robot, for the Webots universal simulator and the Pioneer robots, the Philips iCat robot, and other humanoids are on the way.

The Webots simulator compatibility means that it is possible to switch from the real robot to simulation with a simple IP address change, and this makes URBI particularly suitable for applications that need to frequently go back and forth between real/simulated robots.

In this tutorial, we have tried to make a step by step description of URBI which goes from simple motor commands up to more complex programming including software components integrated in URBI. It is meant to be understandable by people having little or no background in robotics and programming (except for the C++ sections, which require that you understand C++ at a basic level). However, from time to time, we have inserted explanations or complements that will probably make sense only for advanced users or academics/industrials. These inserts are presented with a small academic sign as shown on the left of this text.