LCM Documentation
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.
Quick links
Features
Low-latency inter-process communication
Efficient broadcast mechanism using UDP Multicast
Type-safe message marshalling
User-friendly logging and playback
No centralized “database” or “hub” – peers communicate directly
No daemons
Few dependencies
Supported platforms / languages
Platforms:
GNU/Linux
OS X
Windows
Any POSIX-1.2001 system (e.g., Cygwin, Solaris, BSD, etc.)
Languages
C
C++
C#
Java
Lua
MATLAB
Python (3.6 and later)
Forks
These are community-maintained forks of LCM that add extra functionality. While they’re not part of the official LCM distribution, they’re linked to here in case people find them useful.
https://github.com/vooon/lcm-vala - Vala language support
https://github.com/adeschamps/lcm - Rust language support
API Reference
Additional resources
Publications and application notes
LCM Overview - Describes the design principles of LCM, the best place to start for a quick understanding of LCM. 6 pages (PDF). - IROS, Taipei, Taiwan, Oct 2010.
- Technical Report - An expanded version of the overview, provides a more comprehensive description. 17 pages (PDF).
Technical Report MIT-CSAIL-TR-2009-041, Massachusetts Institute of Technology, 2009
Who uses LCM?
LCM was originally developed in 2006 for the MIT DARPA Urban Challenge team, and has since been used in many robotic and autonomous systems, in both research and production environments. Its users have included:
Autonomos GmbH
BAE Systems
Bender Robotics
Carnegie Mellon University
ETH Zurich
Ford Motor Company
Georgia Tech
Google
Korea Advanced Institute of Science and Technology (KAIST)
MIT
Soar Technology
University of Michigan
Volvo Car Group
Woods Hole Oceanographic Institute
If you’re using LCM for development or production, we’d love to hear about it. Let us know by sending a message to the mailing list.