Support Engineering Group : MBARI Messaging Infrastructure This page last changed on Aug 15, 2013 by kgomes. In 2012, an effort started to design a communication backbone that would allow all MBARI assets to communicate easily across the organization. Much work has been done in computer science in the areas of message based systems over the years and this is an exploration of how those systems can make communications across MBARI assets much easier and more pervasive. ##### Communication/Messaging Systems Technologies LCM White Paper on LCM Detailed Technical Paper MOOS Player AMQP RabbitMQ ZeroMQ Comparison
Feature/Framework | LCM | MOOS | Player | RabbitMQ | ZeroMQ | Carmen (IPC) | JAUS | ROS | RDS | DDS | Apache Kafka | MQTT
--- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | ---
Target App | Real-time systems | Robotic Vehicles (Under water mostly) | Robot control |  |  | Robot control |  | Robotics Development | Robotics |  |
Transport | UDP Multicast | TCP | TCP |  |  | TCP | UDP | Shared Memory TCP (most common) UDP Spread | Mulitple SOAP XML/RPC |  |
Communications Model(s) | pub/sub(push) | pub/sub (pull) | pub/sub(pull) |  |  | pub/sub (push) | routed message | pub/sub service oriented | service |  |
Messages Duplicated? | N | Y | Y |  |  | Y | Y | Y | Y |  |
Type safe? | Y | N | N |  |  | N | N | N | Y |  |
Marshalling Technique | Automatice | Manual - Free form ASCII | XDR (automatic for C) | Manual |  | Partial - users must keep an ASCII description of types in sync with a C construct | Manual | Automatic - Type specification language similar to C | Automatic |  |
Server/ Central Hub? | N | Y | Y | Y |  | Y | N |  |  |  |
Pros | Tools for introspection and analysis of the messaging traffic and the messages themselves |  |  |  |  |  |  |  |  |  |
Cons |  |  | If subscriber can't keep up with publisher, TCP buffers can fill hurting performance |  |  | Keeping ASCII/struct in sync for marshalling is error prone due to machines having different word sizes | Small subspace is available for user-defined types Messages limited to 4096 bytes Each node has to have globally unique ID | little endian, so big endian systems supported | More difficult to inject previously recorded data |  |
Platforms | C Java Python MATLAB C++ (compatible) Objective-C (compatible) | C++ | C C++ Java Tcl Python |  |  | C Java | C | C++ Python | .NET |  |
##### Marshalling Technologies Protocol Buffers LCM Avro Thrift MessagePack Comparisons
Protocol Buffers | LCM | Avro | Thrift | MessagePack
--- | --- | --- | --- | ---
Protocol Buffers, Avro, Thrift & MessagePack Attachments: LCM_Technical_Paper.pdf (application/pdf) LCM_White_Paper.pdf (application/pdf)

Document generated by Confluence on Feb 03, 2026 16:22