Middleware for Robotic Applications

MIRA
DevelopersMetraLabs GmbH,
Ilmenau University of Technology
Release27 April 2012; 14 years ago (2012-04-27)
Stable release
2020-04-26 / 26 April 2020; 6 years ago (2020-04-26)
Written inC++
Operating systemLinux, Windows
TypeRobotics suite, Middleware
LicenseDual License:
GPL Version 3,
Professional Edition License
Websitewww.mira-project.org

Middleware for Robotic Applications (MIRA) is a cross-platform, open-source software framework written in C++ that provides a middleware, several base functionalities and numerous tools for developing and testing distributed software modules. It also focuses on easy creation of complex, dynamic applications, while reusing these modules as plugins. The main purpose of MIRA is the development of robotic applications, but as it is designed to allow type safe data exchange between software modules using intra- and interprocess communication it is not limited to these kinds of applications.

MIRA is developed in a cooperation of the MetraLabs GmbH and the Ilmenau University of Technology/Neuroinformatics and Cognitive Robotics Lab. Therefore, MIRA was designed to fulfill the requirements of both commercial and educational purposes.

Features

General:

Screenshot of MIRACenter

Robotic application specific:

Platforms

MIRA supports and was successfully tested on the following platforms:

Applications using MIRA

MIRA is used within the following applications:

and projects:

Usability

Reflection/serialization

class Data 
{
    int value;
    std::map<std::string,std::list<int> > complex;
    Foo* ptr;

    template <typename Reflector>
    void reflect(Reflector& r) 
    {
        r.member("Value",   value,   "an int member");
        r.member("Complex", complex, "a complex member");
        r.member("Pointer", ptr,     "a pointer pointer");
    }
};
  • arbitrary complex data types can be serialized by adding a simple reflect method to the class as shown above
  • after these minor changes, the objects of the class can be transported via inter-process communication, can be used as parameters in configuration files for software modules, can be recorded in "Tape" files, etc.

Remote procedure calls

class MyClass
{
    int compute(const std::list<float>& values);

    template <typename Reflector>
    void reflect(Reflector& r) 
    {
        r.method("compute", &MyClass::compute, this, "comment");
    }
};
  • arbitrary methods can be turned into RPC methods by adding one line of code within the reflect() method. There is no need to write wrappers around the methods or to use meta description languages.

See also

References

  1. ↑ "MIRA Project Website".
  2. 1 2 Einhorn, Erik; Langner, Tim; Stricker, Ronny; Martin, Christian; Gross, Horst-Michael (2012). "MIRA - middleware for robotic applications". 2012 IEEE/RSJ International Conference on Intelligent Robots and Systems. pp. 2591–2598. doi:10.1109/IROS.2012.6385959. ISBN 978-1-4673-1736-8. S2CID 16389868.
  3. ↑ "MIRA Documentation - Linux Support".
  4. ↑ "MIRA Documentation - Windows Support".
  5. ↑ "TU Ilmenau: Konrad-Zuse-Bau eröffnet". Thüringer Allgemeine Zeitung.
  6. ↑ Stricker, Ronny; et al. (2012). "Konrad and Suse, Two Robots Guiding Visitors in a University Building". Autonomous Mobile Systems 2012. Informatik aktuell. pp. 49–58. doi:10.1007/978-3-642-32217-4_6. ISBN 978-3-642-32216-7. S2CID 18149753.
  7. ↑ "Ilmenauer Oberbürgermeister ließ sich von Roboter den Weg zeigen". Thüringer Allgemeine Zeitung.
  8. ↑ "Der Markt bietet hohe Potenziale für mobile Robotik". TRIA.
  9. ↑ "CompanionAble".
  10. ↑ "Robot-Era".