Description of Microsoft Robotics Developer Studio
Microsoft Robotics DeveloperStudio (MRDS) has a Concurrency and Coordination Runtime library that allows modules to be coupled together. It has a built in publish/subscribe method that allows communication between modules. This means that modules can be created separately and as long as they only communicate through messages this will be effective. To code in Visual Programming Language (VPL) of the MRDS is extremely easy. I was able to learn and design two basic modules in under thirty minutes.
MRDS also supports C# and the VPL can generate C# that they claim is easy for humans to read. When a process publishes something it replaces what was previously published. This means that if the subscriber doesn’t access the data quickly enough that data could be lost.
Advantages:
- Easy to write a module
Disadvantages:
- Modules have to be written or ported over to C#
- Process to publish or subscribe is complicated
- Data can be easily lost
Description of Robot Operating System
Robot Operating System (ROS) is an “open source, meta-operating system” that works like anyother operating system and its purpose is to make it easier to write modules and processes separately and then loosely couple them together using the ROS communication network. Since ROS has not been specifically designed for any particular robot it is quite easy to integrate already written code into the communication structure. This will be helpful since most of the modules and processes we are using have already been written.
ROS uses a publish/subscribe type communication. The way communication works is there are packages that contain nodes, messages, and libraries. The nodes are what couple different packages together. There is a master node that keeps track of which processes or modules are publishing or subscribing and which topics they are publishing and subscribing to. To publish you have to call the publisher, or “talker”, which is code already given in C++ and Python and can be found under the ROS wiki under the publisher/subscriber tutorial, which creates a buffer of a specified length and then starts adding messages that go under that specific topic. Messages are the data that are published; they are basically the inputs and outputs of a package. To receive a message under a topic you call the subscriber, or “listener,” and this creates a buffer of a specified length and as messages are being published under that topic they will be added to the buffer. When there are too many messages being published than the subscriber can process then the oldest ones are thrown away. As long as the length of the buffer is long enough no data should be lost.
I have only described how the publisher/subscriber works but there are many other functions and processes already developed and are included in ROS. This makes the download very large which means that it requires more time to download even when we only want to use a small number of the functions of ROS. Since ROS has already been in the works for some time it has a structure that will take some time to understand and be able to use effectively.
Advantages:
- The modules can be written in either C++ or Python
- Designed to be used by any robot
- Easy to create and find packages, nodes, and messages
Disadvantages:
- Can only be run on a Unix platform
- Takes an incredibly long time to download
- Takes time to learn the effectively use ROS structure
Description of MySQL Cluster
According to its documentation, MySQL Cluster is the only open source true real-time database. It is commonly used for web and e-commerce applications. It has a “shared-nothing distributed architecture” with no single point of failure to ensure 99.999% availability. It claims to deliver consistent millisecond response latency with the ability to service tens of thousands of transactions per second. It also features automatic failover and recovery of database nodes. MySQL Cluster supports multiple data access methods including: SQL, C++, Java, HTTP, and more. Oracle, the company that created MySQL, provides customer service and training for their products. Note that MySQL Cluster is a database, so we would have to create the data access methods or use an available middleware solution.
MySQL Cluster is available in two forms: a free community edition and the commercial carrier grade edition (CGE). A comparison of the two is available at This comparison shows that the difference between the two is that the carrier grade edition includes some extra managing and monitoring tools. These tools would not be necessary for the purposes of the MAGICC lab, so I recommend the free edition.
Many benchmarks have been performed on MySQL Cluster and the data is available online. The response time was 2-5 milliseconds. The minimal configuration (2 nodes/cluster, 1 CPU/node) had a throughput of 10,000 transactions/second. Better configurations achieved much higher throughputs.
To test MySQL Cluster we followed the steps in the MySQL Cluster Quick Start Guide – Windows. In this test we set up a management node, two data nodes, and then the MySQL Server. The guide said these must be set up in that order. In the beginning we had to create two configuration files. After that the nodes and the server were setup through the command line. We then connected to the MySQL server and confirmed that a simple table of values could be created using the MySQL Cluster Storage engine. This was also done through the command line. The guide gave us clear steps on what to do, but without this the task would have been difficult.
Advantages:
- Open source real-time database with high throughputs
- Supports multiple data access methods including C++
- Distributed architecture with high reliability (99.999%)
- Customer service and training available plus many other online sources for help
- Available for many platforms including Windows and Linux
Disadvantages:
- No GUI to simplify use. Set up through command line.
- Would require us to create or acquire the data access methods.
- MySQL Cluster has high system requirements, so it may be necessary just to use classic MySQL
Description of Hierarchical Action Framework (HAF)
HAF and its associated language, HAFscript, consists of “reconfigurable component software modules that interface with a publish/subscribe shared data store.” HAF was made available to us through Dr. Sam Smith, one of its developers. HAF was initially developed for use with UUVs. In HAF, “software components allow convenient expression of control and planning algorithms as well as transparent monitoring, logging, and replay through the distributed publish/ subscribe shared data store.” The software components of HAF are written in HAFscript. HAFscript seems to be an easy programming language to learn, but still this additional effort may be a negative.
A distinguishing feature of HAF is its hierarchical state machine (HSM). “The main purpose of the hierarchical state machine in an intelligent autonomy application is to sequence, schedule, or queue actions to be performed by the vehicle.” One of the goals of the HSM is to reduce some of the apparent complexity for the programmer. Thus, after a programmer becomes familiar with HAF and HAFscript it may become easier than previous methods. The HSM also makes so there are less dependencies for programmers to worry about when changing or enhancing portions of the code. HAF's focus on reducing complexity and controlling actions of autonomous vehicles are positive attributes for the MAGICC lab.
For my evaluation of HAF I ran the provided sample mission. The sample mission simulates commands to a UUV to make it travel in a box shape. The sample mission showed how HAF can effectively be used to control parameters such as heading and depth. The example had to be run from the command line, and thus was a little difficult to follow. The commands to the UUV were written in a HAFscript file. HAF seems to me to be difficult to understand at first, but could be easier with more training and time.
Advantages:
- Provides a way to interact with a distributed publish/subscribe shared data store
- Hierarchical state machine that seeks to reduce apparent complexity for programmers
- Designed for use with unmanned vehicles
- Easy to change software components without affecting other components
Disadvantages:
- Requires programmers to learn HAFscript
- No GUI to help. Ran through command line.
- Only available for Linux
Descripton of RTI Data Distribution Service (DDS)
RTI DDS is created by Real Time Innovations (RTI) company. The DDS documentation claims it is the first comprehensive specification available for “publish-subscribe” data-centric designs. DDS is real-time middleware for a distributedpublish-subscribe system that does not require a central server or special nodes. One of the most important features of DDS is fine control over Quality of Service (QoS) parameters. “Each publisher-subscriber pair can establish independent QoS agreements. Thus, DDS designs can support extremely complex, flexible data-flow requirements.” Examples of these QoS parameters include: deadline, reliability, strength, durability, latency budgets, delivery order, attach user data, prioritize messages, set resource utilization limits, and more. Many of these QoS parameters would be useful and helpful to the MAGICC lab.
The RTI DDS software also includes a number of useful tools, services, and utilities. The tools tab includes: Analyzer, Monitor, and Microsoft Excel Spreadsheet Add-in. The services tab includes: Recording Service – Record, Recording Service – Replay, Persistence Service, Routing Service, and Real-Time Connect. The utilities tab includes: Code Generator, Type Conversion, Recording Service-Convert, Shapes Demo, DDS Spy, and DDS Ping. For more information please see the RTI DDS Professional Edition Getting Started Guide.
RTI DDS has been used for “radar systems, combat systems, railway control, industrial automation, highway traffic monitoring, financial systems and communications equipment.” It claims to be the most widely used DDS solution and have the highest performance based on independent benchmarks. Use of DDS requires a license file. The company provides a free trial license that lasts 30 days. RTI customer service contacted me a few days after I downloaded the software, and said they could provide a free 1 year license for educational use. The company also seemed willing to negotiate for a longer license, but the company would have to be contacted for more details (preferably by a professor).
My evaluation of RTI DDS included using their Shapes Demo. Specifically, I ran the examples described in sections 4.1 – 4.5 of the RTI Shapes Demo User’s Manual. These examples showcased the publish/subscribe system of DDS and the QoS parameters. Their examples were easy to do, and I was impressed with the user friendly software. Another thing I found in the documentation was that the RTI Real-Time Connect requires an Oracle or MySQL Database, so it appears it may be necessary to use one of these along with the RTI DDS software.
Advantages:
- Real-time middleware for a publish-subscribe system
- Many Quality of Service control options
- Well developed tools, services, and utilities
- Available for Windows, Linux, and several other operating systems
- Excellent “track record” and the company’s customer service for assistance
Disadvantages:
- Would have to negotiate with RTI for licenses
- Seems to also require an Oracle or MySQL database (at least for the Real-Time Connect) which are common but would mean a little more development
- Many of its features may be unnecessary for the MAGICC Lab