Skip to main content

Shared Rust CDR/IDL decoder for ROS and DDS message data (omgidl, ros2idl, ros2msg, ros1msg).

Project description

roboto-mcap-codec

A fast, shared Rust decoder for ROS and DDS message data, packaged as a Python extension. It parses the schema languages used in MCAP and ROS bags — omgidl, ros2idl, ros2msg, ros1msg — and decodes message payloads across every common CDR framing (plain XCDR1/XCDR2, parameter-list PL_CDR, delimited D_CDR2) and the unaligned ROS1 wire, into plain Python dict / list / scalar values.

It powers message decoding in the Roboto Python SDK, where one Rust implementation serves both ingest-time field statistics and query-time message reads.

Install

pip install roboto-mcap-codec

Prebuilt abi3 wheels are published for CPython 3.10+ on Linux (manylinux_2_28, x86-64 and aarch64), macOS (Intel and Apple Silicon), and Windows (x86-64). No Rust toolchain is needed to install.

Quick start

A CdrCodec is built once per channel schema, then reused to decode every message on that channel.

from mcap_codec import CdrCodec

# schema_encoding: "omgidl" | "ros2idl" | "ros2msg" | "ros1msg"
# schema_data:     the raw schema bytes (e.g. an MCAP Schema record's `data`)
# schema_name:     the fully-scoped root type name
codec = CdrCodec("ros2msg", schema_data, "sensor_msgs/msg/Imu")

# payload = the raw message bytes, including the 4-byte CDR encapsulation header
message = codec.decode(payload)        # -> nested dict / list / scalars

Decode only the fields you need (everything else is skipped, not materialized):

partial = codec.decode_fields(
    payload,
    ["angular_velocity.x", "header.stamp.sec"],
)
# -> {"angular_velocity": {"x": ...}, "header": {"stamp": {"sec": ...}}}

Output shape

  • structs → dict; sequences and arrays → list (multi-dimensional arrays → nested lists); octet / uint8 arrays → bytes (matching mcap_ros2; signed int8 arrays stay list[int], since bytes can't hold negatives). The deprecated byte / char aliases follow their dialect: ROS2 byteuint8 / charint8, ROS1 the reverse
  • scalars → native bool / int / float; strings → str
  • enums → integers
  • unions → {"discriminator": <value>, "<active member>": <value>}
  • Time / Duration{"sec": int, "nanosec": int}
  • absent @optional members are omitted from the dict

Undecodable messages

Some fields have no portable CDR encoding and cannot be decoded reliably. When a message cannot be decoded for such a reason, decode() raises UnsupportedMessage (rather than returning a wrong value). Catch it to skip the message and keep reading the rest of the file:

from mcap_codec import CdrCodec, UnsupportedMessage

try:
    message = codec.decode(payload)
except UnsupportedMessage:
    message = None   # e.g. an implementation-defined `wstring`, or HASH autoid

This matches how the Roboto SDK and the Foxglove decoders treat the same cases.

Errors

  • CdrCodec(...) raises ValueError if the schema cannot be parsed.
  • decode(...) / decode_fields(...) raise ValueError on a genuine decode failure (malformed payload), and UnsupportedMessage for a message that is intentionally declined (see above).

License

Apache-2.0. Part of the Roboto platform.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

roboto_mcap_codec-0.1.11.tar.gz (108.8 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

roboto_mcap_codec-0.1.11-cp310-abi3-win_amd64.whl (965.8 kB view details)

Uploaded CPython 3.10+Windows x86-64

roboto_mcap_codec-0.1.11-cp310-abi3-manylinux_2_28_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.28+ x86-64

roboto_mcap_codec-0.1.11-cp310-abi3-manylinux_2_28_aarch64.whl (1.2 MB view details)

Uploaded CPython 3.10+manylinux: glibc 2.28+ ARM64

roboto_mcap_codec-0.1.11-cp310-abi3-macosx_11_0_arm64.whl (1.0 MB view details)

Uploaded CPython 3.10+macOS 11.0+ ARM64

roboto_mcap_codec-0.1.11-cp310-abi3-macosx_10_12_x86_64.whl (1.1 MB view details)

Uploaded CPython 3.10+macOS 10.12+ x86-64

File details

Details for the file roboto_mcap_codec-0.1.11.tar.gz.

File metadata

  • Download URL: roboto_mcap_codec-0.1.11.tar.gz
  • Upload date:
  • Size: 108.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for roboto_mcap_codec-0.1.11.tar.gz
Algorithm Hash digest
SHA256 9c04c8b4e1d4bc7755157894f6482cc0f1e99480aa13635a688a31ec8e5004eb
MD5 3f1e0e0bf651558fd8abdd5f5e5ad2f0
BLAKE2b-256 7281ab4e9af73cf7ba92a59d25bf5dc758228f768c04f2686b8a357237fa8681

See more details on using hashes here.

Provenance

The following attestation bundles were made for roboto_mcap_codec-0.1.11.tar.gz:

Publisher: wheels.yml on roboto-ai/roboto-mcap-codec

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file roboto_mcap_codec-0.1.11-cp310-abi3-win_amd64.whl.

File metadata

File hashes

Hashes for roboto_mcap_codec-0.1.11-cp310-abi3-win_amd64.whl
Algorithm Hash digest
SHA256 2c6574b173621c8d050f43de758ad38c8e471372f83d4465429e76d9fe9f21b3
MD5 fae04b61278be9855d04cfa2a4350986
BLAKE2b-256 be283f98e89e7260bf26e3baebe94a253895f2e46e8f42a7847e9b93edd2b523

See more details on using hashes here.

Provenance

The following attestation bundles were made for roboto_mcap_codec-0.1.11-cp310-abi3-win_amd64.whl:

Publisher: wheels.yml on roboto-ai/roboto-mcap-codec

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file roboto_mcap_codec-0.1.11-cp310-abi3-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for roboto_mcap_codec-0.1.11-cp310-abi3-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 37370e8a07e4b635f04eac3ed619d3f96ca41d4b2e875e0d9f5f70390cfbd067
MD5 aac9c3182f4379e44bc2704eb438220b
BLAKE2b-256 c9709b07459ae409da5a34d8207d2c751752eb7309a505dde4c4be20ebe8bf4d

See more details on using hashes here.

Provenance

The following attestation bundles were made for roboto_mcap_codec-0.1.11-cp310-abi3-manylinux_2_28_x86_64.whl:

Publisher: wheels.yml on roboto-ai/roboto-mcap-codec

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file roboto_mcap_codec-0.1.11-cp310-abi3-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for roboto_mcap_codec-0.1.11-cp310-abi3-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 158a95208bc91630ad0ce855977d0c3dcaae2ed697f4b0d3ba348a143a8133f8
MD5 c45fab94087982f8f236af4082ee0e2d
BLAKE2b-256 8a89c70fbd787b75fbf0aa8c5bda77ab38b257b55d12c3bbe50ee1290bcf4881

See more details on using hashes here.

Provenance

The following attestation bundles were made for roboto_mcap_codec-0.1.11-cp310-abi3-manylinux_2_28_aarch64.whl:

Publisher: wheels.yml on roboto-ai/roboto-mcap-codec

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file roboto_mcap_codec-0.1.11-cp310-abi3-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for roboto_mcap_codec-0.1.11-cp310-abi3-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 de75f29ed9372d4b794a1c4a9737bd7a8dab575e0a3157dd533611636e5a95d9
MD5 df983f8671b0e94c31fe31c08d28d298
BLAKE2b-256 4c869d78dcfb8cd18226a495505a878edef6b758de939556c9bc7cc1a2c05060

See more details on using hashes here.

Provenance

The following attestation bundles were made for roboto_mcap_codec-0.1.11-cp310-abi3-macosx_11_0_arm64.whl:

Publisher: wheels.yml on roboto-ai/roboto-mcap-codec

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file roboto_mcap_codec-0.1.11-cp310-abi3-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for roboto_mcap_codec-0.1.11-cp310-abi3-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 b6f9c0a99890c542748c8f9cba60572704c2e47223d4cd20cbd77555d7a5503a
MD5 742089589926884d705b5f7cad9b5da9
BLAKE2b-256 2076392bf5106ad61cc170653445f6a48b5e31ea55fd20896e8de163b8b39a51

See more details on using hashes here.

Provenance

The following attestation bundles were made for roboto_mcap_codec-0.1.11-cp310-abi3-macosx_10_12_x86_64.whl:

Publisher: wheels.yml on roboto-ai/roboto-mcap-codec

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page