Recent Posts

Site menu:

_____________

Site search

Categories

Urbi 2 Technical Preview

With Urbi 1 Gostai introduced a revolutionary means to program robots: a domain specific scripting language that brings together the efficiency of C++, and the flexibility of a dynamic language. Urbi 1 was designed pragmatically, based on user requests and feedback. That’s how Urbi 1 was made useful, and how it met its users expectations. Yet, because of this iterative design process, it suffers a number of limitations.

To address these issues, Gostai launched the Urbi 2 project months ago. We are happy to announce that Urbi 2 is up and running. It will be made available for technical preview in the near future. In the meanwhile, let us show you some of the changes we made in Urbi. For a start, we will focus on the changes of the Object-Orientation support in Urbi, later articles will cover other facets of the Urbi 2 system.
What follows is implemented, runs, and can be done at home in total safety.

Read more »

Generic pointer emulation in Urbi 1.x

There are no “pointers” available in Urbi 1.x, nor references like in C++ for example. This will change in Urbi 2, where everything is an object and references can be made with a simple assignment between objects. Meanwhile, it is possible to use the “map” type of Urbi 1.x to emulate pointers in various ways, and we give some simple examples here.

Read more »

How to interface UObjects with other Component Architectures (Corba, Microsoft Robotics Studio, etc)

Thanks to the interpreted nature of the language, Urbi is very well suited for automatic mappings between interfaces, as it allow to create/delete object methods at run time. We will use this to give a few guidelines on how to design a generic UObject capable of creating a proxy to most distributed object architectures. We will take Corba as an illustration, but other component architectures like WebServices, Microsoft Robotics Studio or RT Middleware could in principle be interfaced using the same approach.

Read more »

How to use functions inside expressions

Currently in Urbi 1.x there is no way to include a function inside an expression. This might sound shocking at first, but the deep reason for this is that Urbi 1.x took the (wrong) road of separating commands and expressions, and since functions can involve commands run in parallel and arbitrarily complex execution trees, it was basically impossible to do it without a hack. Urbi 2.x has unified commands and expressions (actually, everything is an object in Urbi 2.x) and the problem has disappeared. So it won’t be long until this problem is properly fixed.

Still, there is a very easy workaround in Urbi 1.x to include function calls inside expressions, and we describe it here.

Read more »

How to run UObject C++ methods in parallel

Handling parallelism in Urbi is easy as long as you stay in a pure Urbi world, containing only Urbi code. Urbi is a parallel language and that’s exactly what it does. But as soon as you start to plug C++ code via UObjects, things start to be more complicated because the current 1.x version does not yet fully extend the parallel semantics of the language to the C++ side.

We will see here a practical example of a typical issue and several ways to go around the problem with the current versions of Urbi (1.x).

Read more »