
MARIE is a new design tool for mobile and autonomous robot application, designed to facilitate the integration of multiple heterogeneous software elements. It is a flexible tool based on a distributed model, thus allowing the realization of an application using one machine or various networked machines, architectures and platforms.
The robotics field is evolving quickly. The
diversity of technologies available and the software solutions
developed in the various research centers throughout the world is in
fact increasing the complexity of integration. All these researchers
and developers, which worked to develop new solutions, see the reuse
of their work by other difficult or impossible. Too much often this
abandonment or negligence to use available components is due to the
inherent complexity of integrate different incompatible softwares
because conceived for various platforms, various operating systems or
protocols and conventions of communication.
This diversity of
applications and tools, which were developed to answer particular
problems, should not be relegated only to specific demonstrations or
implementations. Fast and simplified re-use of heteroclite components
developed by others is essential for the evolution of this research
area.
The impacts of such a tool on the re-use of the many
technological and software solutions which are currently available or
which will be it in the future are very important. The first would be
to allow the researchers and their collaborators to elaborate on the
particular aspect where they have a significant contribution to
bring. Such a tool would avoid them to provide efforts for the
reproduction and the adaptation of modules or applications already
developed by others and which are not compatible or directly usable.
The second impact would be to carry out configurations where
particular components were never joined together for the same real
time application. This opportunity potentially opens new avenues of
research still not explored. A third impact would be to make it
possible to the researchers to interact on a higher level with the
mechanisms supporting the intelligence. The tool makes it possible to
act on this level because it abstracts the low level implementation
of the robot system.
MARIE opens the door to those who wants to be able to use an effective integration tool abstracting the details of robot components and providing a platform for the mechanisms of high level intelligence for autonomous mobile robot applications.
MARIE proposes a development environment, which copes directly with inter-application communications, creating transparency for communications between them and their localization. Each application interacts with MARIE communication system, instead of the typical application-to-application relation. It proposes a development environment, which helps and supports distributed system creation. We can see it as a toolbox appropriate for creation of robotics system, plus development guidelines and some APIs to support what is specific in applications.
MARIE uses the mediator design pattern for distributed system in order to cope with different applications not sharing the same communication protocol. This mediator design pattern creates a centralized control unit (the mediator) which interacts with each colleague (the applications) independently. It coordinates global interactions between colleagues in order to realize the desired system. The five principal consequences from this design are: limiting subclassing, decoupling colleagues, simplifying object protocols, abstracting how objects cooperate and centralizing control. Four functional components are to be used in order to create systems with such mediator design pattern, as shown in the next illustration :
Application Adapters are responsible for sending service requests and communications from the centralized control unit to the applications, and vice versa, using an application proxy. Each application to be integrated must have its own Application Adapter that encapsulates communication mechanism, the services it provides and the specific configurations it needs.
Communication Adapters are responsible for translating information between different communication protocols and mechanisms.
Communication Managers are responsible of creating and managing communication links between Application Adapters that need to be connected together.
Application Managers manage and control the entire system by coordinating system states, achieving coherence and stability, and configuring and controlling of all components available in the system.
Ports & Communication Strategies are responsible of interconnections between MARIE's components. Each components have one or more Ports that are used as tap points where communication links can be established. Each Port can have its own strategy, called Communication Strategy(CS), on how it handles incoming and outgoing data. Typically, CS implements or is based on a known protocol, such as TCP, UDP or IPC, but it can be any other strategies as well (shared memory, files, direct function calls, ...). Decoupling Communication Strategy from Port functionnalities opens the possibility to choose which protocol is used for each Port without having to modify code related to Ports/components functionnalities.
When creating an application based on MARIE, it should be seen as functionnality blocks that are configured and interconnected
to realize the overall application functionnalities. With that vision, unless having to create functionnality block that are
not available or add new functionnalities to existing blocks, creating an application should only required editing configuration
file and creating shell scripts to configure, initialize and start each block. In other words, required programming skill can be
minimized to basic skills in order to create complex distributed system.
Example of configuration and script files needed to create an application can be found here.
MARIE's main programming language is C++. But, as presented before, MARIE's main goal is to be able to integrate any
applications using any programming languages. So C++ is mandatory as long as you need to creates MARIE components (like Application
Adapters, Communication Adapters, etc) or to add communication handlers in MARIE. Otherwise, MARIE can manage applications
created with programming languages others than C++ by using OS calls for process and threads controls.
Interaction with those applications is typically achieved via communication protocols (TCP, UDP, CORBA, ...), but it can use any
other strategies as well (shared memory, files, direct function calls, etc).
With this approach, any OS can be used as long as it compiles MARIE librairies and it is compatible with
ACE, which is the communication & process/threads management middleware MARIE is based on.