You are here

Cube System

Background

The CubeSystem is a collection of hardware- and software-components for fast robot prototyping. The main goal of the CubeSystem project is to provide an open source collection of generic building blocks that can be freely combined into an application. The CubeSystem evolved in more than five years of research and development. The benefits of the CubeSystem can be seen by various applications in which it is used. These applications range from educational activities to industrial projects.

There are various other projects that deal with the development of generic hardware or software libraries for robotics. These projects are typically based on the assumption that a robot's hard- and software are two rather distinct parts, that can be easily brought together by the usage of the right type of abstractions and interfaces. This view is to quite some extent valid when it comes to the development of application software for commercial of the shelf robot hardware. But the development of a robotics application often includes the engineering of the hardware side as well. The CubeSystem therefore tries to offer a component collection for fast prototyping of complete robots, i.e., the hardware and the software side.

The most basic parts of the CubeSystem are

  • the RoboCube: a special embedded controller, or more precisely controller family, based on the MC68332 processor
  • the CubeOS: an operating system, or more precisely an OS family
  • the RobLib: a library with common functions for robotics

 

The structure of a CubeSystem application (left), for example in form of a mobile robot for soccer playing (right).

 

 
A RoboCube processor-, bus- and I/O-board stacked together, leading to a compact controller hardware.

 

The general CubeOS and RobLib are collections of software components that can be customized and combined to a particular set of libraries suited for a particular application. Take for example a simple soccer robot based on the CubeSystem. The RobLib provides for example generic functions for controlling a two wheeled differential drive. To control the two motors of the concrete robot some customization is needed. This includes defining the mechanical parameters like the gear-ratio, the wheel diameter and so on, as well as the specification of the software drivers in CubeOS to service the pulse-width-modulation of the motor drivers and the quadrature decoding of the motor encoders.

The CubeSystem also allows quite some flexibility to adopt the hardware side to the actual application. The RoboCube or short Cube features some standard electronic components like the processor-, bus-, and I/O-board that are combined with a more application specific base-board. The boards are equipped with a special stacking connector that allows to put several boards on top of each other. The compact form factor of the boards and the stacking leads to a cubic shape of the controller, hence the name RoboCube. The organization of the Cube architecture can be thought of in a tree-like manner. At the root is the minimal Cube, namely a processor-board. It can be expanded by a bus-board. This new branch adds new functionalities like, e.g., UARTs and I2C controllers that allow to expand to further branches, for example in form of certain sensors.

So, a CubeSystem application is a concrete instance of a collection of components, for example in form of a mobile soccer robot. As a matter of convenience, we use the term CubeSystem for both the general collection of components as well as for a concrete application. The same holds for RoboCube, CubeOS, and RobLib, which are used to both refer to the general collection of components as well as to particular instances for concrete applications. This difference between the CubeSystem and a CubeSystem is important.

 

Applications Examples

The CubeSystem is used for example in following robots: