Skip to main content

LCM Message Definitions

This repository contains LCM message definitions for the Dimos project and tools to generate those language bindings.

It depends on our LCM fork for generation since we introduced some convinience changes to python message definitions.

lcmgen from our lcm fork is conviniently pulled and built by our flake.nix

Generating Bindings

Run generate.sh to regenerate all bindings:

./generate.sh

This will:

  1. Convert ROS messages to LCM definitions (from sources/ros_msgs/ to lcm_types/)
  2. Generate Python bindings (generated/python_lcm_msgs/)
  3. Generate C++ bindings (generated/cpp_lcm_msgs/)
  4. Generate C# bindings (generated/cs_lcm_msgs/)
  5. Generate Java bindings (generated/java_lcm_msgs/)
  6. Generate Typescript bindings (generated/ts_lcm_msgs/)
  7. Generate Rust bindings (generated/rust_lcm_msgs/)

Directory Structure

  • sources/ - Source ROS message definitions and conversion tools
  • lcm_types/ - Generated LCM message definitions
  • generated/ - Generated language bindings

Python Package

This repo is also a Python package and you can install it via pip install dimos-lcm It is not very useful standalone and is meant to be used in conjuction with actual dimOS

Control values

The control_msgs package also contains the upstream ROS 2 control_msgs messages (ros-controls/control_msgs, e.g. DynamicJointState, InterfaceValue), converted from sources/ros_msgs/control_msgs/. ControlValues below is dimos-specific and not a ROS type.

control_msgs.ControlValues carries continuous command or state data between a control coordinator and device-owning connections. The stream/topic determines the direction; both use the same wire type.

Field Meaning
source Publisher identity
source_ts Publisher Unix timestamp in seconds
epoch State generation or command session, established outside the data message
sequence Increasing frame number within that source, stream, and epoch
interface_names Canonical interface names declared by startup configuration
values Corresponding float64 values

The two array-length fields are LCM encoding fields and must match their arrays and each other. Consumers must reject duplicate or undeclared names, non-finite values, and invalid or stale epochs/sequences. The generated codecs serialize data; they do not enforce these application-level checks. Timestamps alone do not establish freshness across machines with unsynchronized clocks.

Interface names and their units, ownership, and supported combinations come from the resolved connection configuration. The codec does not interpret names or distinguish robot families. Examples include joint position/velocity for arms, position/velocity/effort/gains for whole-body control, pose coordinates, and linear/angular velocity for bases. Pose reference frames must be defined by the interface contract; they are not inferred from the values.

Empty frames are encodable. Whether they serve as heartbeats, whether frames are complete or sparse, and what an omitted command means are runtime contract decisions, not codec behavior. This schema does not authorize motion or implement a watchdog.

Descriptions are supplied through startup configuration, not LCM announcements. Discrete lifecycle requests and their results belong to RPC. No description, readiness, or lifecycle message types are added by this contract.

Validate the Python codec with:

python -m unittest discover -s tests -v

Metadata

Release files for dimos-lcm 0.1.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dimos-lcm 0.1.6
File Size Uploaded
dimos_lcm-0.1.6.tar.gz 153.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dimos-lcm 0.1.6
File Interpreter ABI Platform
dimos_lcm-0.1.6-py3-none-any.whl Python 3 none any Details

Total release size: 880.5 kB

Release files / dimos_lcm-0.1.6.tar.gz

Download URL dimos_lcm-0.1.6.tar.gz
Size 153.0 kB
Tags Source
SHA-256 checksum
How to use checksums
96dcb5f7b8416559221d79d77195118a9a5e802a9117420702534b44462f0dee
BLAKE2b-256 checksum
How to use checksums
42392e9e0e229e9bfe2d597cf1fb9e3871dd804c85c530344675da98823dc3ca
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 17, 2026.

Transparency log

Release files / dimos_lcm-0.1.6-py3-none-any.whl

Download URL dimos_lcm-0.1.6-py3-none-any.whl
Size 727.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
f55e637ff853f6a8bfa2fd47900367a9ac23f571946ea04c74705dfb293777e8
BLAKE2b-256 checksum
How to use checksums
3d9f993eec0b2fae4b73a87fef45b506e4a130a92aa8a893eb0e6c3e95ded68b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 17, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.6 This release

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page