Urbi is a robotics software platform. It includes a C++/Java middleware API called UObject to interface components such as motors, cameras, and algorithms, and an innovative scripting language, urbiscript, with built-in support for parallel and event-based programming, used to write high-level behaviors and orchestrate the interactions between components. UObject components are built as shared libraries exposed as native objects within urbiscript, and either hot-plugged in a running Urbi engine, or started as a remote autonomous process communicating with the engine via the network. At any time, new urbiscript code can be sent to a running Urbi engine via a simple telnet, to introspect the state of components, modify existing code, or add new behaviors. Urbi is cross-platform and supports several robots (Gostai Jazz, Lego Mindstorms, Aldebaran Nao, Segway RMP, Spykee, Bioloid, etc.) and a simulator (Webots).
Charm++ is a portable adaptive runtime system for parallel applications. Application developers create an object-based decomposition of the problem of interest, and the runtime system manages issues of communication, mapping, load balancing, fault tolerance, and more. Sequential code implementing the methods of these parallel objects is written in C++. Calls to libraries in C++, C, and Fortran are common and straightforward. Charm++ is portable across individual workstations, clusters, accelerators (Cell SPEs and GPUs), and supercomputers such as those sold by IBM (Blue Gene, POWER) and Cray (XT3/4/5/6). Applications based on Charm++ are used on at least 5 of the 20 most powerful computers in the world.