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.
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.
Parallelism & Events
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.
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:
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.
Every variable has a blend mode which specifies how conflicting simultaneous assignments should be handled - an extension of the concept of 'mutexes'.
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.