products

Urbi is a little revolution in the programming world.

Urbi is a middleware which includes a component architecture (UObject), and script language (urbiScript) and several graphical programming tools (urbiStudio). The heart of the technology is based on urbiScript, the 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.

 

UrbiScript 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 urbiScript 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. UrbiScript 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, urbiScript 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