All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
MIRA Documentation for Developers


As a developer you typically like to develop new software modules.

Before writing new software you should be familiar with:

Additionally, MIRA uses several external libraries where the user should at least be able to find and read the corresponding API reference, when necessary:

  • Standard Template Library (STL), which contains commonly used data types and containers (lists, queues, maps) and algorithms (for sorting, etc.)
  • boost, a collection of libraries with even more algorithms, containers, and different concepts
  • Eigen, a library for linear algebra, matrices, vectors, numerical solvers, and related algorithms

If you are new to MIRA check out the tutorials.

Developing Components

MIRA uses shared libraries to achieve a plugin mechanism, where each plugin is a shared library, that can be loaded dynamically at runtime. The plugin concept enables high extensibility and software modularity.

To enlarge the functionality of MIRA, plugins for the following extension points can be developed:

Graphical User Interface

The Graphical User Interface (GUI) package contains components and classes for creating visualizations, widgets and tools that allow the user to visualize and manipulate data within the framework, units and other components of the robotic applications. An overview of the components is given here.

Rich Client Platform: Visualizations: Widgets:


Toolboxes contain sets of classes and algorithms. They can be used by units from the domains or by stand-alone applications to perform certain tasks. Dependencies between toolboxes should be avoided if possible. However, it is not prohibited, since there will always be some low-level toolboxes (e.g. image conversion) that are used by high-level toolboxes (e.g. AAM toolbox).

The documentations of the following standard toolboxes are available: Furthermore, documentations of the following non-standard toolboxes are available:


Domains contain high-level components and units that belong to the same topic or application domain. Those components and units may be used by other components like the application layer to build a complex application. In contrast to toolboxes, the classes and algorithms of domains are NOT accessed directly. Instead, interaction exclusively is done through the communication mechanisms of the MIRA framework (channels and RPC calls). Units of different domains may interact with each other (using the communication mechanisms) but must NOT use each other directly to avoid unwanted code dependencies between domains.

The documentations of the following domains are available: