Format Exploration » History » Version 6

« Previous - Version 6/12 (diff) - Next » - Current version
J. Moringen, 06/20/2011 06:58 PM
added ROS MSG


Format Exploration

Currently, we use the Google Protocol Buffer library and its message definition format for serializing objects at the framework level. The user may use it for its own datatypes, but is not forced to do so by RSB. However, several alternatives exist which we may additionally evaluate. Afterwards, we could promote (at least internally) the use of one of the alternatives or stick to protobuf.

Serialization Formats and Libraries

Informal Comparison

An informal comparison...

Structure and Description

Aspect Google Protocol Buffers LCM MessagePack ROS MSG
Fixed set of fundamental types yes ? ? yes
Nesting yes ? ? yes
Arrays/Sequences yes ? ? yes
- Homogeneous yes ? ? yes
- Inhomogeneous no ? ? no
Textual IDL yes, C/Java-like ? ? yes
Binary IDL yes, uses Protocol Buffers ? ? no
Self-describing messages yes, optional not visible in documentation ? yes, by sending textual descriptor

Serialization

Aspect Google Protocol Buffers LCM MessagePack ROS MSG
Random Access without Deserialization no ? ? no
Field Access without Deserialization yes (by skipping) ? ? yes

Non-Functional

Aspect Google Protocol Buffers LCM MessagePack ROS MSG
Programming Languages Java, C++, Python, others community C, Java, Python, .NET, Matlab Ruby, C++, others C++, Python, Java, Common Lisp
Extension without recompile yes no by design? ? ?
Speed (Runtime rel. to PBs) 1 ? .25 (claimed) ?