MARIE project is a robotic development and integration environment focused on software reusability and exploitation of already available APIs and middlewares frequently used in robotics.
The main purpose of MARIE is to create a rapid-prototyping approach to software development in robotics.
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.
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.
What's New in This Release:
· Lots of changes were made in this release.
· A build system based on Scons is used.
· Component creation was simplified.
· User-defined plugins were added for CFB, CS, and Data Factory (SerDes).
· Project file description is used instead of start scripts.
· Socket port number is now automatically managed.
· A new console and GUI Application Manager were added.
· A toolbox for RobotFlow was added.
· Unit tests were introduced.
· New documentation was written.
· A new wiki-based Web site used.
· Code bugs and issues were corrected.