Project Information
Members
Featured
Downloads
Links
|
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 an XDR-style message specification language with bindings for applications in C, Java, and Python. 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
Java >= 1.5 is strongly recommended, as several important utilities distributed with LCM are written in Java.
Documentation- LCM design overview (PDF) -- Describes the design principles of LCM, the best place to start for a quick understanding.
- More Documentation -- Tutorials, API Reference, Troubleshooting, etc.
NewsNovember 8, 2010Release 0.5.2: This release includes a number of bugfixes and performance enhancements - lcm-logger:
- exit when disk full
- use GLib regexes if they're available.
- Add --invert-channels / -v flag
- lcm-java:
- Make LCMTypeDatabase public
- LCM fragmentation: guard against receiving same fragment twice
- lcm.lcm.LCM: allow passing NULL or the empty string to the constructor to explicitly specify default LCM provider.
- lcm.lcm.LogFileProvider: bugfix for write mode
- remove lcm.test.SlowLCMSubscriber
- lcm-gen:
- general
- warn if struct has 'int' member type instead of 'intN_t'
- add options --csharp-strip-dirs and --csharp-root-nsp
- Python
- generate valid code on empty LCM type
- only emit new_parents in _get_hash_recursive if necessary
- fix __init__.py imports - check for "from msg import msg" instead of "import msg"
- lock __init__.py when writing
- C#
- Java
- trust explicit array length field, not .length attribute.
- fix copy which copied in the wrong direction
- faster arraycopy in several instances.
- miscellaneous:
- add lcm-lite implementation
- modify examples -- place LCM types in package "exlcm"
- add tutorial-dotnet.sgml to Makefile
- Windows & .NET:
- LCM.NET - fix unsubscribe bug
- portability fixes
July 14, 2010Release 0.5.1: This is a bugfix release, affecting only the Windows port. - Windows:
- Fix lcmgen Visual Studio project file - missing emit_csharp.c
- Add a .NET tutorial and some some C# examples
June 7, 2010Release 0.5.0: This release introduces experimental support for C# / .NET, provided by Jan Hrbáček. Bug reports and patches are greatly appreciated. This release also introduces a small python API change, and renames a program in windows. Additional bugfixes are included. - Windows:
- Now builds lcm-gen.exe, not lcmgen.exe
- .NET:
- The lcm-dotnet/ directory contains a publish-subscribe library for .NET applications.
- lcm-gen:
- (C#) A new set of options are available for generating C# bindings
- (Python) change init.py import statements. If a package named 'proj' contains the LCM type msg_t, then the init.py file now contains:
from msg_t import msg_t and the recommended usage pattern is:
import proj
instance = proj.msg_t() see googlecode issue #21
- (Windows, Java) fix pathname bug
Other: - minor build system bugfixes
Mar 15, 2010Release 0.4.1: This is primarily a bugfix and maintenance release. - C:
- fix leaking file descriptors
- fix OS/X compile bug for lcm-example (missing #include <sys/select.h>)
- simplify project include path requirements in Windows
- update error checking, messages for single host use (Linux)
- Java:
- expose encode/decode methods for advanced users
- lcm-gen:
- (C) add --c-no-pubsub command line option to lcm-gen to generate C language bindings without a dependency on liblcm (useful if only the marshalling aspect of LCM is desired).
- (Java) don't complain about default pkg if one is specified on cmd line.
- lcm-spy:
- remember last message on each channel so that object panels open up immediately.
- put frames in front when double clicked.
- Other:
- remove manpage-specific GFDL copyright notices.
Jan 6, 2010Release 0.4.0: This release includes experimental support for Microsoft Visual C++. Thanks go to Randy Sybel for providing this port. Although it's undergone some testing, it should be considered highly experimental, and is not well documented or packaged at all. Bug reports and patches are greatly appreciated. This release also incorporates a number of minor bugfixes for the Java port. See the changelog for details. OlderNews
|