Middleware for Robotic Applications

Last updated
MIRA
Developer(s) MetraLabs GmbH,
Ilmenau University of Technology
Initial release27 April 2012;8 years ago (2012-04-27)
Stable release
2020-04-26 / 26 April 2020;11 months ago (2020-04-26)
Written in C++
Operating system Linux, Windows
Type Robotics suite, Middleware
License Dual License:
GPL Version 3,
Professional Edition License
Website www.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. [1]

Contents

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 MiraCenterScreenshot.png
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

classData{intvalue;std::map<std::string,std::list<int>>complex;Foo*ptr;template<typenameReflector>voidreflect(Reflector&r){r.member("Value",value,"an int member");r.member("Complex",complex,"a complex member");r.member("Pointer",ptr,"a pointer pointer");}};

Remote Procedure Calls

classMyClass{intcompute(conststd::list<float>&values);template<typenameReflector>voidreflect(Reflector&r){r.method("compute",&MyClass::compute,this,"comment");}};

Related Research Articles

FIFO (computing and electronics)

In computing and in systems theory, FIFO is a method for organising the manipulation of a data structure where the oldest (first) entry, or "head" of the queue, is processed first.

Common Intermediate Language (CIL), formerly called Microsoft Intermediate Language (MSIL) or Intermediate Language (IL), is the intermediate language binary instruction set defined within the Common Language Infrastructure (CLI) specification. CIL instructions are executed by a CLI-compatible runtime environment such as the Common Language Runtime. Languages which target the CLI compile to CIL. CIL is object-oriented, stack-based bytecode. Runtimes typically just-in-time compile CIL instructions into native code.

In object-oriented programming, the decorator pattern is a design pattern that allows behavior to be added to an individual object, dynamically, without affecting the behavior of other objects from the same class. The decorator pattern is often useful for adhering to the Single Responsibility Principle, as it allows functionality to be divided between classes with unique areas of concern. Decorator use can be more efficient than subclassing, because an object's behavior can be augmented without defining an entirely new object.

A method in object-oriented programming (OOP) is a procedure associated with a message and an object. An object consists of data and behavior; these comprise an interface, which specifies how the object may be utilized by any of its various consumers.

In mathematics and computer science, a higher-order function is a function that does at least one of the following:

In computer science, a smart pointer is an abstract data type that simulates a pointer while providing added features, such as automatic memory management or bounds checking. Such features are intended to reduce bugs caused by the misuse of pointers, while retaining efficiency. Smart pointers typically keep track of the memory they point to, and may also be used to manage other resources, such as network connections and file handles. Smart pointers were first popularized in the programming language C++ during the first half of the 1990s as rebuttal to criticisms of C++'s lack of automatic garbage collection.

A function pointer, also called a subroutine pointer or procedure pointer, is a pointer that points to a function. As opposed to referencing a data value, a function pointer points to executable code within memory. Dereferencing the function pointer yields the referenced function, which can be invoked and passed arguments just as in a normal function call. Such an invocation is also known as an "indirect" call, because the function is being invoked indirectly through a variable instead of directly through a fixed identifier or address.

In the C++ programming language, a copy constructor is a special constructor for creating a new object as a copy of an existing object. Copy constructors are the standard way of copying objects in C++, as opposed to cloning, and have C++-specific nuances.

In computer programming, run-time type information or run-time type identification (RTTI) is a feature of the C++ programming language that exposes information about an object's data type at runtime. Run-time type information can apply to simple data types, such as integers and characters, or to generic types. This is a C++ specialization of a more general concept called type introspection. Similar mechanisms are also known in other programming languages, such as Object Pascal (Delphi).

Partial template specialization is a particular form of class template specialization. Usually used in reference to the C++ programming language, it allows the programmer to specialize only some arguments of a class template, as opposed to explicit full specialization, where all the template arguments are provided.

In the C, C++, D, JavaScript and Julia programming languages, const is a type qualifier: a keyword applied to a data type that indicates that the data is read only. While this can be used to declare constants, const in the C family of languages differs from similar constructs in other languages in being part of the type, and thus has complicated behavior when combined with pointers, references, composite data types, and type-checking.

<i>Modern C++ Design</i>

Modern C++ Design: Generic Programming and Design Patterns Applied is a book written by Andrei Alexandrescu, published in 2001 by Addison-Wesley. It has been regarded as "one of the most important C++ books" by Scott Meyers.

typedef is a reserved keyword in the programming languages C and C++. It is used to create an additional name (alias) for another data type, but does not create a new type, except in the obscure case of a qualified typedef of an array type where the typedef qualifiers are transferred to the array element type. As such, it is often used to simplify the syntax of declaring complex data structures consisting of struct and union types, but is just as common in providing specific descriptive type names for integer data types of varying lengths.

In computer programming, an opaque pointer is a special case of an opaque data type, a data type declared to be a pointer to a record or data structure of some unspecified type.

In computer programming, the term hooking covers a range of techniques used to alter or augment the behaviour of an operating system, of applications, or of other software components by intercepting function calls or messages or events passed between software components. Code that handles such intercepted function calls, events or messages is called a hook.

Platform Invocation Services, commonly referred to as P/Invoke, is a feature of Common Language Infrastructure implementations, like Microsoft's Common Language Runtime, that enables managed code to call native code.

The curiously recurring template pattern (CRTP) is an idiom in C++ in which a class X derives from a class template instantiation using X itself as a template argument. More generally it is known as F-bound polymorphism, and it is a form of F-bounded quantification.

C++11 is a version of the standard for the programming language C++. It was approved by International Organization for Standardization (ISO) on 12 August 2011, replacing C++03, superseded by C++14 on 18 August 2014 and later, by C++17. The name follows the tradition of naming language versions by the publication year of the specification, though it was formerly named C++0x because it was expected to be published before 2010.

Component Object Model (COM) is a binary-interface standard for software components introduced by Microsoft in 1993. It is used to enable inter-process communication object creation in a large range of programming languages. COM is the basis for several other Microsoft technologies and frameworks, including OLE, OLE Automation, Browser Helper Object, ActiveX, COM+, DCOM, the Windows shell, DirectX, UMDF and Windows Runtime. The essence of COM is a language-neutral way of implementing objects that can be used in environments different from the one in which they were created, even across machine boundaries. For well-authored components, COM allows reuse of objects with no knowledge of their internal implementation, as it forces component implementers to provide well-defined interfaces that are separated from the implementation. The different allocation semantics of languages are accommodated by making objects responsible for their own creation and destruction through reference-counting. Type conversion casting between different interfaces of an object is achieved through the QueryInterface method. The preferred method of "inheritance" within COM is the creation of sub-objects to which method "calls" are delegated.

Robotics middleware is middleware to be used in complex robot control software systems.

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".