products

URBI is a little revolution in the programming world.

Our technology is based on a new script language that brings totally new features in terms of parallelism, event-based programming and distributed object management with UObject. All this with a familiar C++ like syntax that makes it easy to learn.

 

URBI is also fully interfaced through liburbi with your favorite languages: C++, Java, Matlab, Python, Ruby, and many others. Liburbi is available under the GPL license.

 

Check this quick overview of the Urbi technology or go directly to our dedicated pages

 

 

1 - The UObject Architecture

products

 

You can import objects written in C++ and plug them in URBI to use them as normal objects inside the language. They are called UObjects.

You can also run a UObject as a remote object, a simple autonomous executable in Windows, Linux or Mac OSX. You don't have to change a single line of code to switch from embedded "linked" mode to remote mode.

 

 

2 - Parallelism & Events

robotwatchball

Robotics needs parallelism and requires to go beyond threads and application-level parallelism. URBI integrates parallelism and event-based programming at the core of its semantics, which is new.

Commands like 'whenever' or 'at' will start code when events occur. The & symbol can be used instead of the usual semicolon: A&B means that A and B will run in parallel. It's that simple.

example

 

 

3 - Advanced Language Features

As a truly parallel language, URBI brings powerful abstractions that you will never access as easily in another script language. Here is a few of these features:

sample1
You can set any variable to reach a value in a given time or at a given speed, or even set a sinusoidal oscillation on it. All this in parallel if you want to.
sample1
Every variable has a blend mode which specifies how conflicting simultaneous assignments should be handled - an extension of the concept of 'mutexes'.
sample1
Any portion of code can be prefixed with a tag. You can then later stop, freeze, unfreeze this code from anywhere using the tag name.

More about the Urbi technologyUrbi Studio