MIRA
Introduction and Features


Overview

The development of complex applications (e.g. for autonomous robots) requires a modular software design, where the functionality of the complex application is broken down into modules, each of which accomplishes one function. Each module fully encapsulates its functionality and only offers some interfaces that can be used by other modules to communicate and to exchange data.

This "separation of concern" allows to develop, implement and test the modules independently from each other. During the development, the communication overhead between the programmers is reduced and each developer can concentrate on her/his modules.

In contrast to monolithic applications, such a modular design allows a much better code reuse, as modules may be reused in other applications without any changes in their code.

What is MIRA ?

MIRA aims to support the aforementioned modular software development process by providing several concepts and technologies. The MIRA framework, for instance, provides a middleware that allows to compose the developed modules dynamically at runtime to form the final complex application. This middleware handles the communication between the modules efficiently and transparently. It allows the modules to be freely distributed - no matter if they are located within a single process, in different processes or even on different machines. For communication the MIRA framework offers message passing by implementing the publisher/subscriber pattern as well as Remote Procedure Calls (RPC).

Beside this communication, the MIRA base and framework provide much more functionality like:

A full summary of all technologies and concepts is provided on our concepts overview.

Comparison to other robotic middlewares

There are a number of existing software projects that aim to provide a framework for developing robotic applications like

just to mention a few. See how MIRA compares to ROS in case of usability and performance.

Comparison of MIRA and ROS

Features

The following section shows all features at a glance:

General:

The serialization mechanism - a kind of reflection for C++ structs and classes - is used for:

MIRA is designed to allow fast and easy creation and testing of new distributed software modules. The interface is very lightweight and fully transparent and it hides implementation details like: