
The Urbi Universal Platform for Robotics Jean-Christophe Baillie, Akim Demaille, Quentin Hocquet, Matthieu Nottale, Samuel Tardieu Gostai, R&D Lab, 32 Bd Victor, FR-75015 Paris, France http://www.gostai.com lastname @gostai.com Abstract. Robots can free humankind from everyday chores, they can entertain us, and even educate our children. They can carry loads, walk, dance, sing, and express emotions. Hundreds of different robots are al- ready sold in shops, and complex applications are being developed ac- tively around the globe. So why are robots so not present today? In our experience the lack of standard in robotics, be it from the hard- ware or software point of view, makes the development of advanced ap- plications for robotics unproductive. This is very similar to the early days of personal computers, until the emerging of sufficiently widespread Operating Systems increased the return-on-investment for software de- velopment. The Urbi platform sits on top of the large variety of software and/or hardware components for robotics, and provides the user with a unified, standardized, interface with which complex and portable applications can be developed. In this paper, with present the Urbi platform and some of its prominent components. Introduction Urbi is a software platform used to develop portable applications for robotics and artificial intelligence [1, 2]. It is based on a parallel and event-driven script language, and on a distributed component architecture. The lack of standards in robotics makes the Urbi platform particularly sen- sitive to differences of Application Program Interfaces (APIs) between robots, components and so forth. In this paper, we present the Urbi platform and how it achieves its goals. Outline Sect. 1 describes the whole platform, focusing on the problems to solve, and the selected, layered, solutions. On top of it portable applications can be built; Sect. 2 presents some of the applications developed at Gostai. A key com- ponent of the platform is the UrbiScript language1, introduced in Sect. 3. Sect. 4 presents ongoing and future work, and Sect. 5 concludes. 1 A Universal Platform The Urbi platform, including the UrbiScript programming language, was de- signed to be simple and powerful. It targets a wide spectrum of users, starting 1 UrbiScript was formerly known as the Urbi programming language. Workshop Proceedings of SIMPAR 2008 Intl. Conf. on SIMULATION, MODELING and PROGRAMMING for AUTONOMOUS ROBOTS Venice(Italy) 2008 November,3-4 ISBN 978-88-95872-01-8 pp. 580-591 2 Java C++ Matlab UObject Applications client code through liburbi C++/Java (Ex. : urbiLab, remote surveillance...) Urbi Kernel UObject C++ UObject C++ UObject C++ (Ex. : motor) (Ex. : camera) (...) Urbi Engine Operating System Hardware The Urbi server is on top of the Operating System (OS) to abstract from (computer) hardware idiosyncrasies, yet it may be deployed bare-board. The Urbi server (the central rounded-box) is composite: (i) the Urbi engine and the kernel (Sect. 1.1) abstract the Central Processing Unit (CPU) and OS, and (ii) robotics or algorithmic components are unified using the UObject API (Sect. 1.2). Differences in conventions (clockwise? anticlockwise?), units etc. are addressed in Sect. 1.3. The intrinsically concurrent and event based nature of robotic software is fully integrated in the Urbi platform, including in the UrbiScript programming language (Sect. 1.4). Fig. 1. The Urbi platform components from children willing to customize their robots, up to researchers who want to focus on complex scientific problems in robotics rather that on idiosyncrasies of some robot's specific API. As such, the Urbi platform has already reached its goal: its youngest known users are about twelve years old, using UrbiScript a hobbyist won a Sony \best Aibo dance" prize, and dozens of universities throughout the world develop advanced research in robotics using it. Several challenges stand in the way of ease-of-use, starting with the need to cope with a wide range of architectures. The platform was structured to cope with the lack of proper standards for robotics, and to be simple yet powerful. A bird-eye view of its architecture in presented in Fig. 1, and the following sections detail the various components. 1.1 Computer Components To gain CPU independence, UrbiScript runs on top of the Urbi Virtual Machine (UVM), which is part of Urbi server: to port UrbiScript to a new architecture, the UVM only needs to be adapted. The UVM is tailored to work with local Workshop Proceedings of SIMPAR 2008 Intl. Conf. on SIMULATION, MODELING and PROGRAMMING for AUTONOMOUS ROBOTS Venice(Italy) 2008 November,3-4 ISBN 978-88-95872-01-8 pp. 580-591 3 components, or device drivers, developed in low-level languages. UrbiScript is a scripting language: it was designed to develop high-level algorithms and be- haviors from smaller components. For instance, computer-vision primitives are expected to be tailored for a specific robot and written for instance in C++, while UrbiScript is suitable to implement reactive behavior based on vision. The Urbi platform relies on engines to interact with the underlying operating- system. Primitive services such as the UVM are provided by the Urbi kernel, which is a generic library. It is the engine that makes it a complete and runnable Urbi server. The engine launches the main loop and provides a few system- dependent core information to the server, such as time. Thanks to this modeling, the Urbi server can be ported very simply to a wide range of environments (embedded systems, robots, simulators, . ). 1.2 Robotics Components The diversity of hardware components in robots is another source of complexity. In the Urbi platform, it is addressed by the UObject architecture. It installs a standard API on top of low-level device drivers (sensors, actuators, motors and so forth) and of software components (computer vision, voice recognition etc.). Thanks to this API and its associated middle-ware architecture, low-level and/or high-level components can communicate simply, and interact with UrbiScript programs. Existing C/C++ libraries are easily made usable from UrbiScript, and specific code can be written to take advantage of Urbi features such as event-driven programming, timers and variable change notifications. The UOb- ject API can also be used to handle complex data flow between multiple software components thanks to callback functions that are notified when any variable is accessed (read and/or write). The UObject API maximizes code reuse: if a robot is built from off-the-shelf components, so is the Urbi server. UObjects can either be plugged into the server, ensuring maximum reactiv- ity, or be standalone remote processes. Remote UObjects can be local, running on the very robot, or on some slave computer. In the former case the server is protected from faults in the components, and in the latter case, CPU intensive computations can be handled by auxiliary machines. Therefore, before deploy- ing it on a robot, the Urbi server is dimensioned, depending on the available resources. Thanks to these abstractions the server does not know whether it is running on an actual robot, or a simulation thereof. UrbiScript programs run seamlessly on robots and simulators such as Webots [6, 12]. Developing robotic applications without simulators is virtually impossible. They considerably speed-up the de- velopment process: they are cheap and reproducible as opposed to robots that can be very expensive apiece, test suites are easier to write and to automate, etc. They don't even require the robot itself to exist: they provide a means to examine the behavior of a robot during its design. Low-level consistency, while necessary, is not sufficient to maximize the porta- bility of high-level applications. Workshop Proceedings of SIMPAR 2008 Intl. Conf. on SIMULATION, MODELING and PROGRAMMING for AUTONOMOUS ROBOTS Venice(Italy) 2008 November,3-4 ISBN 978-88-95872-01-8 pp. 580-591 4 1.3 High-level Universality One can expect a dramatic increase of the market of hardware and/or software components for robots: motors, sensors, text to speech, voice recognition, nav- igation, face recognition. to name a few. To cope with this variety, the Urbi Naming Standard defines common interfaces (or facets) and naming scheme that must share the UObjects for equivalent components. Thanks to this abstraction, the customer is free to select a particular component seller depending on his own criteria. Subtle differences between components can ruin a multi-million-dollar project [13]. To avoid this, unit support is developed in UrbiScript. The Urbi Naming Standard also defines the orientation axis and so forth, to standardize measure- ments and actions. This document also defines the names and interfaces of limbs and organs for usual robot anatomies: legs, fingers, heads, joints, sensitive skin, accelerometers, gyroscopes etc. These abstraction and standardization layers allow the development of portable applications (on sufficiently similar robots). Games or utilitarian applications are being developed at Gostai: UrbiLab (Sect. 2.2) to create elaborate remote control for any robot, remote surveillance, educative application etc. 1.4 Concurrent and Event Driven Traditional programming languages follow a sequential execution model. Code is executed one statement after the other, ultimately leading to the expected result. Even when threads are used, the code running in each thread follows a strict iterative scheme, and their interaction may be difficult to describe [7]. Robots are designed to evolve in the real world: while they are moving around, they need to be aware of their environment and its possible brutal changes. Un- predictable events such as an animal crossing the robot path need to be asyn- chronously and timely acted upon. While traditional programming languages typically offer limited asynchronous capabilities through signals and callbacks, the Urbi platform integrates them at the heart of the execution model, and the UrbiScript language provides the user with short and intuitive constructs, which we will describe in Sect.
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages12 Page
-
File Size-