Skip to content
James Edmondson edited this page Jul 6, 2018 · 2 revisions

C++ Guide Series
Architecture | Knowledge Base | Networking | Containers | Threads | Optimizations


Where to use MADARA

MADARA is a middleware capable of dynamic scaling and real-time response to changing environments and project needs. However, the technologies implemented here are intended for general purpose usage throughout robotics, enterprise systems, or even website and mobile application backends.

In this Wiki page, we'll discuss some of the projects we have used MADARA for, and we'll also discuss what projects we hope will take advantage of the advanced features and performance that MADARA provides.


[TOC]


Existing Projects

The MADARA project started its infancy as a dissertation project by Dr. James Edmondson at Vanderbilt University, where it saw some usage in DARPA programs for distributed testing and validation work for smart phone applications deployed to soldiers in Afghanistan. As far as we know, the usage of the middleware ceased for the project once Dr. Edmondson left for Carnegie Mellon, but the lessons learned from testing dozens of automated smartphones and pcs did contribute to the direction of the MADARA middleware.

More recently, MADARA has formed the backbone of the SMASH project and GAMS projects to develop robust infrastructure to support human-in-the-loop autonomy between UAVs, throwable sensors, and human operators using smartphones and tablets to guide the swarm of robots and sensors. This has been a great motivator for middleware development as we are targeting real-world heterogeneous UAVs like the Parrot AR.Drone 2.0 and 3D Robotics Arducopter platform. You can see a video of the FY13 work on the SMASH project below:

http://www.youtube.com/watch?v=MRLlo0iJPEE

Additionally, MADARA is currently being used in an exploratory project on verification techniques for distributed algorithms at CMU. This is a collaboration between formal verification researchers and middleware researchers in hopes to verify distributed algorithms before they are fielded into a swarm of UAVs, and also being able to validate that the verification was accurate.


Who else should use this project

We have specifically developed this project to be accessible to C++ beginners who just want to start connecting devices and computational units together, as well as advanced developers who are targeting production environments where timing is critical, scale is necessary, and network collaboration is crucial to success. As such, we hope that universities or even high school instructors can find utility in teaching with and developing applications on top of the MADARA infrastructure. We also hope that this open-source middleware finds its way into development environments from application development to real-time system development of robotics systems.

There are five key areas we feel would benefit from using MADARA

  1. Instructors teaching distributed computation, operating system or advanced networking courses
    • Advanced QoS topics like bandwidth shaping, deadline filtering, trusted peers, checkpointing, and even clocks (Lamport and wall-clock)
    • Distributed algorithm creation and maintenance should be intuitive via the KaRL interface
    • Rapid prototyping techniques for distributed applications
  2. Robotics researchers can benefit from an extremely portable middleware that supports threading, network transports (UDP, IP Broadcast/Multicast, OMG DDS), timing, quality-of-service, rebroadcasting, and control of heterogeneous devices across multiple networks
  3. Mobile application developers can benefit from a Java and Android port that can connect mobile applications together or even to sensors, robots, and any real-time system that supports MADARA
  4. Enterprise developers can take advantage of an extremely optimized reasoning and networking engine that was made to work in a decentralized, distributed manner in order to improve throughput, decrease latency, and mitigate performance bottlenecks
  5. Hobbyists can create solutions for bandwidth shaping between computers on their network, cryptographic schemes via payload filters on send, receive, and rebroadcast, or thousands of other computational, quality-of-service, or AI research possibilities.

We are very interested in hearing from developers and researchers who want to have devices, people, and computers connected together. Any feedback is appreciated and will help us create a better middleware.


More Information

If you are looking for code examples and guides, your best bet would be to start with the tutorials (located in the tutorials directory of the MADARA root directory--see the README.txt file for descriptions). After that, there are many dozens of tests that showcase and profile the many functions, classes, and functionalities available to MADARA users.

Users may also browse the Library Documentation for all MADARA functions, classes, etc. and the Wiki pages on this website.


Guide Series


Video Tutorials

First Steps in MADARA: Covers installation and a Hello World program.
Intro to Networking: Covers creating a multicast transport and coordination and image sharing between multiple agents.