Experience w/ LCM library for real time UDP data transfer?

Discussion to talk about software related topics only.
Post Reply
Ridgeglider
Posts: 513
Joined: Sat Apr 26, 2008 7:14 am

Experience w/ LCM library for real time UDP data transfer?

Post by Ridgeglider »

Does anyone have experience implementing LCM on the NB platform?
http://code.google.com/p/dlcm/

This is a module that provides a standardized way to transmit and then confirm receipt of defined struct payloads from one target to another using UDP Multicast. I've written one-off, ond non-multicast code to do this between specified NB devices, but this library is provides more standardization. It includes ways to discover whether the struct format has changed during development, it provides ways to publish and subscribe to "channels" of data, and there are spy tools for inspection of data, and seeing who's who's published and subscribed to certain channels, etc...

From their website:
LCM is a set of libraries and tools for message passing and data marshalling, targeted at real-time systems where high-bandwidth and low latency are critical. It provides a publish/subscribe message passing model and automatic marshalling/unmarshalling code generation with bindings for applications in a variety of programming languages. It was originally designed and used by the MIT DARPA Urban Challenge Team as its message passing system.

LCM is designed for tightly-coupled systems connected via a dedicated local-area network. It is not intended for message passing over the Internet. LCM has been developed for soft real-time systems: its default messaging model permits dropping messages in order to minimize the latency of new messages.

Features
Low-latency inter-process communication
Efficient broadcast mechanism using UDP Multicast
Provides type-safe message marshaling that automatically detects most types of errors (such as version mismatches between different modules)
User-friendly logging and playback
Essentially unlimited packet size
No centralized "database" or "hub" -- peers communicate directly
No daemons
Supports C, C++, Java, Python, MATLAB, and C#
Requirements
POSIX.1-2001 system (GNU/Linux, OS X, Cygwin, Solaris, etc.) or Windows XP/Vista/7
GLib >= 2.0
Post Reply