Repo symbol

rosx_introspection repository

rosx_introspection

ROS Distro
humble

Repository Summary

Checkout URI https://github.com/facontidavide/rosx_introspection.git
VCS Type git
VCS Version master
Last Updated 2026-05-30
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
rosx_introspection 3.1.0

README

ROS X Introspection

Ubuntu Humble Jazzy Kilted Rolling

A runtime message parser and introspection library for ROS. It can deserialize any ROS message into key/value pairs without compile-time type knowledge.

Supported schema formats

  • ROS .msg (ROS1 and ROS2 message definitions)
  • DDS IDL (OMG IDL 4.2 subset)

The subset the OMG IDL currently supported are:

  • enums
  • unions
  • @key and @optional
  • multi-dimensional arrays
  • struct inheritance

Build modes

The library compiles in two modes:

  • ROS2 (colcon/ament)
  • Standalone (vanilla CMake, no ROS dependency)

ROS1 .msg schemas and the ROS1 serialization format (ROS_Deserializer) are still supported at runtime, but the catkin build system is no longer maintained.

How it works

To parse a message at runtime, you need:

  1. The type name (e.g. sensor_msgs/JointState or my_pkg::MyIdlMessage)
  2. The schema definition (a .msg file or IDL text)
  3. A raw memory buffer containing the serialized message

The raw buffer is typically obtained from:

Output writers

The MessageWriter interface allows different output formats from the same deserialization walk:

Writer Description
FlatMessageWriter Produces a FlatMessage (vector of key/value pairs). Default output.
MsgpackMessageWriter Writes MessagePack binary directly, bypassing FlatMessage.
JsonMessageWriter Produces a JSON document (requires ROSX_HAS_JSON=ON).

Custom writers can be implemented by subclassing MessageWriter.

Building and testing

# Standalone build (no ROS)
cmake -S. -B build -DBUILD_TESTING=ON
cmake --build build
ctest --test-dir build

Benchmarks

The MCAP benchmark measures deserialization throughput on real bag files:

cmake -S. -B build -DBUILD_BENCHMARKS=ON
cmake --build build

# Run with different output writers
./build/mcap_benchmark path/to/file.mcap --writer flat
./build/mcap_benchmark path/to/file.mcap --writer msgpack
./build/mcap_benchmark path/to/file.mcap --writer json

The IDL benchmark measures CDR deserialization performance:

./build/idl_benchmark

Python binding

cmake -S. -B build_python -DROSX_PYTHON_BINDINGS=ON
cmake --build build_python

PYTHONPATH=build_python/python python3 python/mcap_ros_parser.py path_to_your_rosbag.mcap

Repo symbol

rosx_introspection repository

rosx_introspection

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/facontidavide/rosx_introspection.git
VCS Type git
VCS Version master
Last Updated 2026-05-30
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
rosx_introspection 3.1.0

README

ROS X Introspection

Ubuntu Humble Jazzy Kilted Rolling

A runtime message parser and introspection library for ROS. It can deserialize any ROS message into key/value pairs without compile-time type knowledge.

Supported schema formats

  • ROS .msg (ROS1 and ROS2 message definitions)
  • DDS IDL (OMG IDL 4.2 subset)

The subset the OMG IDL currently supported are:

  • enums
  • unions
  • @key and @optional
  • multi-dimensional arrays
  • struct inheritance

Build modes

The library compiles in two modes:

  • ROS2 (colcon/ament)
  • Standalone (vanilla CMake, no ROS dependency)

ROS1 .msg schemas and the ROS1 serialization format (ROS_Deserializer) are still supported at runtime, but the catkin build system is no longer maintained.

How it works

To parse a message at runtime, you need:

  1. The type name (e.g. sensor_msgs/JointState or my_pkg::MyIdlMessage)
  2. The schema definition (a .msg file or IDL text)
  3. A raw memory buffer containing the serialized message

The raw buffer is typically obtained from:

Output writers

The MessageWriter interface allows different output formats from the same deserialization walk:

Writer Description
FlatMessageWriter Produces a FlatMessage (vector of key/value pairs). Default output.
MsgpackMessageWriter Writes MessagePack binary directly, bypassing FlatMessage.
JsonMessageWriter Produces a JSON document (requires ROSX_HAS_JSON=ON).

Custom writers can be implemented by subclassing MessageWriter.

Building and testing

# Standalone build (no ROS)
cmake -S. -B build -DBUILD_TESTING=ON
cmake --build build
ctest --test-dir build

Benchmarks

The MCAP benchmark measures deserialization throughput on real bag files:

cmake -S. -B build -DBUILD_BENCHMARKS=ON
cmake --build build

# Run with different output writers
./build/mcap_benchmark path/to/file.mcap --writer flat
./build/mcap_benchmark path/to/file.mcap --writer msgpack
./build/mcap_benchmark path/to/file.mcap --writer json

The IDL benchmark measures CDR deserialization performance:

./build/idl_benchmark

Python binding

cmake -S. -B build_python -DROSX_PYTHON_BINDINGS=ON
cmake --build build_python

PYTHONPATH=build_python/python python3 python/mcap_ros_parser.py path_to_your_rosbag.mcap

Repo symbol

rosx_introspection repository

rosx_introspection

ROS Distro
kilted

Repository Summary

Checkout URI https://github.com/facontidavide/rosx_introspection.git
VCS Type git
VCS Version master
Last Updated 2026-05-30
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
rosx_introspection 3.1.0

README

ROS X Introspection

Ubuntu Humble Jazzy Kilted Rolling

A runtime message parser and introspection library for ROS. It can deserialize any ROS message into key/value pairs without compile-time type knowledge.

Supported schema formats

  • ROS .msg (ROS1 and ROS2 message definitions)
  • DDS IDL (OMG IDL 4.2 subset)

The subset the OMG IDL currently supported are:

  • enums
  • unions
  • @key and @optional
  • multi-dimensional arrays
  • struct inheritance

Build modes

The library compiles in two modes:

  • ROS2 (colcon/ament)
  • Standalone (vanilla CMake, no ROS dependency)

ROS1 .msg schemas and the ROS1 serialization format (ROS_Deserializer) are still supported at runtime, but the catkin build system is no longer maintained.

How it works

To parse a message at runtime, you need:

  1. The type name (e.g. sensor_msgs/JointState or my_pkg::MyIdlMessage)
  2. The schema definition (a .msg file or IDL text)
  3. A raw memory buffer containing the serialized message

The raw buffer is typically obtained from:

Output writers

The MessageWriter interface allows different output formats from the same deserialization walk:

Writer Description
FlatMessageWriter Produces a FlatMessage (vector of key/value pairs). Default output.
MsgpackMessageWriter Writes MessagePack binary directly, bypassing FlatMessage.
JsonMessageWriter Produces a JSON document (requires ROSX_HAS_JSON=ON).

Custom writers can be implemented by subclassing MessageWriter.

Building and testing

# Standalone build (no ROS)
cmake -S. -B build -DBUILD_TESTING=ON
cmake --build build
ctest --test-dir build

Benchmarks

The MCAP benchmark measures deserialization throughput on real bag files:

cmake -S. -B build -DBUILD_BENCHMARKS=ON
cmake --build build

# Run with different output writers
./build/mcap_benchmark path/to/file.mcap --writer flat
./build/mcap_benchmark path/to/file.mcap --writer msgpack
./build/mcap_benchmark path/to/file.mcap --writer json

The IDL benchmark measures CDR deserialization performance:

./build/idl_benchmark

Python binding

cmake -S. -B build_python -DROSX_PYTHON_BINDINGS=ON
cmake --build build_python

PYTHONPATH=build_python/python python3 python/mcap_ros_parser.py path_to_your_rosbag.mcap

Repo symbol

rosx_introspection repository

rosx_introspection

ROS Distro
lyrical

Repository Summary

Checkout URI https://github.com/facontidavide/rosx_introspection.git
VCS Type git
VCS Version master
Last Updated 2026-05-30
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
rosx_introspection 3.1.0

README

ROS X Introspection

Ubuntu Humble Jazzy Kilted Rolling

A runtime message parser and introspection library for ROS. It can deserialize any ROS message into key/value pairs without compile-time type knowledge.

Supported schema formats

  • ROS .msg (ROS1 and ROS2 message definitions)
  • DDS IDL (OMG IDL 4.2 subset)

The subset the OMG IDL currently supported are:

  • enums
  • unions
  • @key and @optional
  • multi-dimensional arrays
  • struct inheritance

Build modes

The library compiles in two modes:

  • ROS2 (colcon/ament)
  • Standalone (vanilla CMake, no ROS dependency)

ROS1 .msg schemas and the ROS1 serialization format (ROS_Deserializer) are still supported at runtime, but the catkin build system is no longer maintained.

How it works

To parse a message at runtime, you need:

  1. The type name (e.g. sensor_msgs/JointState or my_pkg::MyIdlMessage)
  2. The schema definition (a .msg file or IDL text)
  3. A raw memory buffer containing the serialized message

The raw buffer is typically obtained from:

Output writers

The MessageWriter interface allows different output formats from the same deserialization walk:

Writer Description
FlatMessageWriter Produces a FlatMessage (vector of key/value pairs). Default output.
MsgpackMessageWriter Writes MessagePack binary directly, bypassing FlatMessage.
JsonMessageWriter Produces a JSON document (requires ROSX_HAS_JSON=ON).

Custom writers can be implemented by subclassing MessageWriter.

Building and testing

# Standalone build (no ROS)
cmake -S. -B build -DBUILD_TESTING=ON
cmake --build build
ctest --test-dir build

Benchmarks

The MCAP benchmark measures deserialization throughput on real bag files:

cmake -S. -B build -DBUILD_BENCHMARKS=ON
cmake --build build

# Run with different output writers
./build/mcap_benchmark path/to/file.mcap --writer flat
./build/mcap_benchmark path/to/file.mcap --writer msgpack
./build/mcap_benchmark path/to/file.mcap --writer json

The IDL benchmark measures CDR deserialization performance:

./build/idl_benchmark

Python binding

cmake -S. -B build_python -DROSX_PYTHON_BINDINGS=ON
cmake --build build_python

PYTHONPATH=build_python/python python3 python/mcap_ros_parser.py path_to_your_rosbag.mcap

Repo symbol

rosx_introspection repository

rosx_introspection

ROS Distro
rolling

Repository Summary

Checkout URI https://github.com/facontidavide/rosx_introspection.git
VCS Type git
VCS Version master
Last Updated 2026-05-30
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
rosx_introspection 3.1.0

README

ROS X Introspection

Ubuntu Humble Jazzy Kilted Rolling

A runtime message parser and introspection library for ROS. It can deserialize any ROS message into key/value pairs without compile-time type knowledge.

Supported schema formats

  • ROS .msg (ROS1 and ROS2 message definitions)
  • DDS IDL (OMG IDL 4.2 subset)

The subset the OMG IDL currently supported are:

  • enums
  • unions
  • @key and @optional
  • multi-dimensional arrays
  • struct inheritance

Build modes

The library compiles in two modes:

  • ROS2 (colcon/ament)
  • Standalone (vanilla CMake, no ROS dependency)

ROS1 .msg schemas and the ROS1 serialization format (ROS_Deserializer) are still supported at runtime, but the catkin build system is no longer maintained.

How it works

To parse a message at runtime, you need:

  1. The type name (e.g. sensor_msgs/JointState or my_pkg::MyIdlMessage)
  2. The schema definition (a .msg file or IDL text)
  3. A raw memory buffer containing the serialized message

The raw buffer is typically obtained from:

Output writers

The MessageWriter interface allows different output formats from the same deserialization walk:

Writer Description
FlatMessageWriter Produces a FlatMessage (vector of key/value pairs). Default output.
MsgpackMessageWriter Writes MessagePack binary directly, bypassing FlatMessage.
JsonMessageWriter Produces a JSON document (requires ROSX_HAS_JSON=ON).

Custom writers can be implemented by subclassing MessageWriter.

Building and testing

# Standalone build (no ROS)
cmake -S. -B build -DBUILD_TESTING=ON
cmake --build build
ctest --test-dir build

Benchmarks

The MCAP benchmark measures deserialization throughput on real bag files:

cmake -S. -B build -DBUILD_BENCHMARKS=ON
cmake --build build

# Run with different output writers
./build/mcap_benchmark path/to/file.mcap --writer flat
./build/mcap_benchmark path/to/file.mcap --writer msgpack
./build/mcap_benchmark path/to/file.mcap --writer json

The IDL benchmark measures CDR deserialization performance:

./build/idl_benchmark

Python binding

cmake -S. -B build_python -DROSX_PYTHON_BINDINGS=ON
cmake --build build_python

PYTHONPATH=build_python/python python3 python/mcap_ros_parser.py path_to_your_rosbag.mcap

No version for distro ardent showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

rosx_introspection repository

rosx_introspection

ROS Distro
humble

Repository Summary

Checkout URI https://github.com/facontidavide/rosx_introspection.git
VCS Type git
VCS Version master
Last Updated 2026-05-30
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
rosx_introspection 3.1.0

README

ROS X Introspection

Ubuntu Humble Jazzy Kilted Rolling

A runtime message parser and introspection library for ROS. It can deserialize any ROS message into key/value pairs without compile-time type knowledge.

Supported schema formats

  • ROS .msg (ROS1 and ROS2 message definitions)
  • DDS IDL (OMG IDL 4.2 subset)

The subset the OMG IDL currently supported are:

  • enums
  • unions
  • @key and @optional
  • multi-dimensional arrays
  • struct inheritance

Build modes

The library compiles in two modes:

  • ROS2 (colcon/ament)
  • Standalone (vanilla CMake, no ROS dependency)

ROS1 .msg schemas and the ROS1 serialization format (ROS_Deserializer) are still supported at runtime, but the catkin build system is no longer maintained.

How it works

To parse a message at runtime, you need:

  1. The type name (e.g. sensor_msgs/JointState or my_pkg::MyIdlMessage)
  2. The schema definition (a .msg file or IDL text)
  3. A raw memory buffer containing the serialized message

The raw buffer is typically obtained from:

Output writers

The MessageWriter interface allows different output formats from the same deserialization walk:

Writer Description
FlatMessageWriter Produces a FlatMessage (vector of key/value pairs). Default output.
MsgpackMessageWriter Writes MessagePack binary directly, bypassing FlatMessage.
JsonMessageWriter Produces a JSON document (requires ROSX_HAS_JSON=ON).

Custom writers can be implemented by subclassing MessageWriter.

Building and testing

# Standalone build (no ROS)
cmake -S. -B build -DBUILD_TESTING=ON
cmake --build build
ctest --test-dir build

Benchmarks

The MCAP benchmark measures deserialization throughput on real bag files:

cmake -S. -B build -DBUILD_BENCHMARKS=ON
cmake --build build

# Run with different output writers
./build/mcap_benchmark path/to/file.mcap --writer flat
./build/mcap_benchmark path/to/file.mcap --writer msgpack
./build/mcap_benchmark path/to/file.mcap --writer json

The IDL benchmark measures CDR deserialization performance:

./build/idl_benchmark

Python binding

cmake -S. -B build_python -DROSX_PYTHON_BINDINGS=ON
cmake --build build_python

PYTHONPATH=build_python/python python3 python/mcap_ros_parser.py path_to_your_rosbag.mcap

No version for distro bouncy showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

rosx_introspection repository

rosx_introspection

ROS Distro
humble

Repository Summary

Checkout URI https://github.com/facontidavide/rosx_introspection.git
VCS Type git
VCS Version master
Last Updated 2026-05-30
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
rosx_introspection 3.1.0

README

ROS X Introspection

Ubuntu Humble Jazzy Kilted Rolling

A runtime message parser and introspection library for ROS. It can deserialize any ROS message into key/value pairs without compile-time type knowledge.

Supported schema formats

  • ROS .msg (ROS1 and ROS2 message definitions)
  • DDS IDL (OMG IDL 4.2 subset)

The subset the OMG IDL currently supported are:

  • enums
  • unions
  • @key and @optional
  • multi-dimensional arrays
  • struct inheritance

Build modes

The library compiles in two modes:

  • ROS2 (colcon/ament)
  • Standalone (vanilla CMake, no ROS dependency)

ROS1 .msg schemas and the ROS1 serialization format (ROS_Deserializer) are still supported at runtime, but the catkin build system is no longer maintained.

How it works

To parse a message at runtime, you need:

  1. The type name (e.g. sensor_msgs/JointState or my_pkg::MyIdlMessage)
  2. The schema definition (a .msg file or IDL text)
  3. A raw memory buffer containing the serialized message

The raw buffer is typically obtained from:

Output writers

The MessageWriter interface allows different output formats from the same deserialization walk:

Writer Description
FlatMessageWriter Produces a FlatMessage (vector of key/value pairs). Default output.
MsgpackMessageWriter Writes MessagePack binary directly, bypassing FlatMessage.
JsonMessageWriter Produces a JSON document (requires ROSX_HAS_JSON=ON).

Custom writers can be implemented by subclassing MessageWriter.

Building and testing

# Standalone build (no ROS)
cmake -S. -B build -DBUILD_TESTING=ON
cmake --build build
ctest --test-dir build

Benchmarks

The MCAP benchmark measures deserialization throughput on real bag files:

cmake -S. -B build -DBUILD_BENCHMARKS=ON
cmake --build build

# Run with different output writers
./build/mcap_benchmark path/to/file.mcap --writer flat
./build/mcap_benchmark path/to/file.mcap --writer msgpack
./build/mcap_benchmark path/to/file.mcap --writer json

The IDL benchmark measures CDR deserialization performance:

./build/idl_benchmark

Python binding

cmake -S. -B build_python -DROSX_PYTHON_BINDINGS=ON
cmake --build build_python

PYTHONPATH=build_python/python python3 python/mcap_ros_parser.py path_to_your_rosbag.mcap

No version for distro crystal showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

rosx_introspection repository

rosx_introspection

ROS Distro
humble

Repository Summary

Checkout URI https://github.com/facontidavide/rosx_introspection.git
VCS Type git
VCS Version master
Last Updated 2026-05-30
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
rosx_introspection 3.1.0

README

ROS X Introspection

Ubuntu Humble Jazzy Kilted Rolling

A runtime message parser and introspection library for ROS. It can deserialize any ROS message into key/value pairs without compile-time type knowledge.

Supported schema formats

  • ROS .msg (ROS1 and ROS2 message definitions)
  • DDS IDL (OMG IDL 4.2 subset)

The subset the OMG IDL currently supported are:

  • enums
  • unions
  • @key and @optional
  • multi-dimensional arrays
  • struct inheritance

Build modes

The library compiles in two modes:

  • ROS2 (colcon/ament)
  • Standalone (vanilla CMake, no ROS dependency)

ROS1 .msg schemas and the ROS1 serialization format (ROS_Deserializer) are still supported at runtime, but the catkin build system is no longer maintained.

How it works

To parse a message at runtime, you need:

  1. The type name (e.g. sensor_msgs/JointState or my_pkg::MyIdlMessage)
  2. The schema definition (a .msg file or IDL text)
  3. A raw memory buffer containing the serialized message

The raw buffer is typically obtained from:

Output writers

The MessageWriter interface allows different output formats from the same deserialization walk:

Writer Description
FlatMessageWriter Produces a FlatMessage (vector of key/value pairs). Default output.
MsgpackMessageWriter Writes MessagePack binary directly, bypassing FlatMessage.
JsonMessageWriter Produces a JSON document (requires ROSX_HAS_JSON=ON).

Custom writers can be implemented by subclassing MessageWriter.

Building and testing

# Standalone build (no ROS)
cmake -S. -B build -DBUILD_TESTING=ON
cmake --build build
ctest --test-dir build

Benchmarks

The MCAP benchmark measures deserialization throughput on real bag files:

cmake -S. -B build -DBUILD_BENCHMARKS=ON
cmake --build build

# Run with different output writers
./build/mcap_benchmark path/to/file.mcap --writer flat
./build/mcap_benchmark path/to/file.mcap --writer msgpack
./build/mcap_benchmark path/to/file.mcap --writer json

The IDL benchmark measures CDR deserialization performance:

./build/idl_benchmark

Python binding

cmake -S. -B build_python -DROSX_PYTHON_BINDINGS=ON
cmake --build build_python

PYTHONPATH=build_python/python python3 python/mcap_ros_parser.py path_to_your_rosbag.mcap

No version for distro eloquent showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

rosx_introspection repository

rosx_introspection

ROS Distro
humble

Repository Summary

Checkout URI https://github.com/facontidavide/rosx_introspection.git
VCS Type git
VCS Version master
Last Updated 2026-05-30
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
rosx_introspection 3.1.0

README

ROS X Introspection

Ubuntu Humble Jazzy Kilted Rolling

A runtime message parser and introspection library for ROS. It can deserialize any ROS message into key/value pairs without compile-time type knowledge.

Supported schema formats

  • ROS .msg (ROS1 and ROS2 message definitions)
  • DDS IDL (OMG IDL 4.2 subset)

The subset the OMG IDL currently supported are:

  • enums
  • unions
  • @key and @optional
  • multi-dimensional arrays
  • struct inheritance

Build modes

The library compiles in two modes:

  • ROS2 (colcon/ament)
  • Standalone (vanilla CMake, no ROS dependency)

ROS1 .msg schemas and the ROS1 serialization format (ROS_Deserializer) are still supported at runtime, but the catkin build system is no longer maintained.

How it works

To parse a message at runtime, you need:

  1. The type name (e.g. sensor_msgs/JointState or my_pkg::MyIdlMessage)
  2. The schema definition (a .msg file or IDL text)
  3. A raw memory buffer containing the serialized message

The raw buffer is typically obtained from:

Output writers

The MessageWriter interface allows different output formats from the same deserialization walk:

Writer Description
FlatMessageWriter Produces a FlatMessage (vector of key/value pairs). Default output.
MsgpackMessageWriter Writes MessagePack binary directly, bypassing FlatMessage.
JsonMessageWriter Produces a JSON document (requires ROSX_HAS_JSON=ON).

Custom writers can be implemented by subclassing MessageWriter.

Building and testing

# Standalone build (no ROS)
cmake -S. -B build -DBUILD_TESTING=ON
cmake --build build
ctest --test-dir build

Benchmarks

The MCAP benchmark measures deserialization throughput on real bag files:

cmake -S. -B build -DBUILD_BENCHMARKS=ON
cmake --build build

# Run with different output writers
./build/mcap_benchmark path/to/file.mcap --writer flat
./build/mcap_benchmark path/to/file.mcap --writer msgpack
./build/mcap_benchmark path/to/file.mcap --writer json

The IDL benchmark measures CDR deserialization performance:

./build/idl_benchmark

Python binding

cmake -S. -B build_python -DROSX_PYTHON_BINDINGS=ON
cmake --build build_python

PYTHONPATH=build_python/python python3 python/mcap_ros_parser.py path_to_your_rosbag.mcap

No version for distro dashing showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

rosx_introspection repository

rosx_introspection

ROS Distro
humble

Repository Summary

Checkout URI https://github.com/facontidavide/rosx_introspection.git
VCS Type git
VCS Version master
Last Updated 2026-05-30
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
rosx_introspection 3.1.0

README

ROS X Introspection

Ubuntu Humble Jazzy Kilted Rolling

A runtime message parser and introspection library for ROS. It can deserialize any ROS message into key/value pairs without compile-time type knowledge.

Supported schema formats

  • ROS .msg (ROS1 and ROS2 message definitions)
  • DDS IDL (OMG IDL 4.2 subset)

The subset the OMG IDL currently supported are:

  • enums
  • unions
  • @key and @optional
  • multi-dimensional arrays
  • struct inheritance

Build modes

The library compiles in two modes:

  • ROS2 (colcon/ament)
  • Standalone (vanilla CMake, no ROS dependency)

ROS1 .msg schemas and the ROS1 serialization format (ROS_Deserializer) are still supported at runtime, but the catkin build system is no longer maintained.

How it works

To parse a message at runtime, you need:

  1. The type name (e.g. sensor_msgs/JointState or my_pkg::MyIdlMessage)
  2. The schema definition (a .msg file or IDL text)
  3. A raw memory buffer containing the serialized message

The raw buffer is typically obtained from:

Output writers

The MessageWriter interface allows different output formats from the same deserialization walk:

Writer Description
FlatMessageWriter Produces a FlatMessage (vector of key/value pairs). Default output.
MsgpackMessageWriter Writes MessagePack binary directly, bypassing FlatMessage.
JsonMessageWriter Produces a JSON document (requires ROSX_HAS_JSON=ON).

Custom writers can be implemented by subclassing MessageWriter.

Building and testing

# Standalone build (no ROS)
cmake -S. -B build -DBUILD_TESTING=ON
cmake --build build
ctest --test-dir build

Benchmarks

The MCAP benchmark measures deserialization throughput on real bag files:

cmake -S. -B build -DBUILD_BENCHMARKS=ON
cmake --build build

# Run with different output writers
./build/mcap_benchmark path/to/file.mcap --writer flat
./build/mcap_benchmark path/to/file.mcap --writer msgpack
./build/mcap_benchmark path/to/file.mcap --writer json

The IDL benchmark measures CDR deserialization performance:

./build/idl_benchmark

Python binding

cmake -S. -B build_python -DROSX_PYTHON_BINDINGS=ON
cmake --build build_python

PYTHONPATH=build_python/python python3 python/mcap_ros_parser.py path_to_your_rosbag.mcap

No version for distro galactic showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

rosx_introspection repository

rosx_introspection

ROS Distro
humble

Repository Summary

Checkout URI https://github.com/facontidavide/rosx_introspection.git
VCS Type git
VCS Version master
Last Updated 2026-05-30
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
rosx_introspection 3.1.0

README

ROS X Introspection

Ubuntu Humble Jazzy Kilted Rolling

A runtime message parser and introspection library for ROS. It can deserialize any ROS message into key/value pairs without compile-time type knowledge.

Supported schema formats

  • ROS .msg (ROS1 and ROS2 message definitions)
  • DDS IDL (OMG IDL 4.2 subset)

The subset the OMG IDL currently supported are:

  • enums
  • unions
  • @key and @optional
  • multi-dimensional arrays
  • struct inheritance

Build modes

The library compiles in two modes:

  • ROS2 (colcon/ament)
  • Standalone (vanilla CMake, no ROS dependency)

ROS1 .msg schemas and the ROS1 serialization format (ROS_Deserializer) are still supported at runtime, but the catkin build system is no longer maintained.

How it works

To parse a message at runtime, you need:

  1. The type name (e.g. sensor_msgs/JointState or my_pkg::MyIdlMessage)
  2. The schema definition (a .msg file or IDL text)
  3. A raw memory buffer containing the serialized message

The raw buffer is typically obtained from:

Output writers

The MessageWriter interface allows different output formats from the same deserialization walk:

Writer Description
FlatMessageWriter Produces a FlatMessage (vector of key/value pairs). Default output.
MsgpackMessageWriter Writes MessagePack binary directly, bypassing FlatMessage.
JsonMessageWriter Produces a JSON document (requires ROSX_HAS_JSON=ON).

Custom writers can be implemented by subclassing MessageWriter.

Building and testing

# Standalone build (no ROS)
cmake -S. -B build -DBUILD_TESTING=ON
cmake --build build
ctest --test-dir build

Benchmarks

The MCAP benchmark measures deserialization throughput on real bag files:

cmake -S. -B build -DBUILD_BENCHMARKS=ON
cmake --build build

# Run with different output writers
./build/mcap_benchmark path/to/file.mcap --writer flat
./build/mcap_benchmark path/to/file.mcap --writer msgpack
./build/mcap_benchmark path/to/file.mcap --writer json

The IDL benchmark measures CDR deserialization performance:

./build/idl_benchmark

Python binding

cmake -S. -B build_python -DROSX_PYTHON_BINDINGS=ON
cmake --build build_python

PYTHONPATH=build_python/python python3 python/mcap_ros_parser.py path_to_your_rosbag.mcap

No version for distro foxy showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

rosx_introspection repository

rosx_introspection

ROS Distro
humble

Repository Summary

Checkout URI https://github.com/facontidavide/rosx_introspection.git
VCS Type git
VCS Version master
Last Updated 2026-05-30
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
rosx_introspection 3.1.0

README

ROS X Introspection

Ubuntu Humble Jazzy Kilted Rolling

A runtime message parser and introspection library for ROS. It can deserialize any ROS message into key/value pairs without compile-time type knowledge.

Supported schema formats

  • ROS .msg (ROS1 and ROS2 message definitions)
  • DDS IDL (OMG IDL 4.2 subset)

The subset the OMG IDL currently supported are:

  • enums
  • unions
  • @key and @optional
  • multi-dimensional arrays
  • struct inheritance

Build modes

The library compiles in two modes:

  • ROS2 (colcon/ament)
  • Standalone (vanilla CMake, no ROS dependency)

ROS1 .msg schemas and the ROS1 serialization format (ROS_Deserializer) are still supported at runtime, but the catkin build system is no longer maintained.

How it works

To parse a message at runtime, you need:

  1. The type name (e.g. sensor_msgs/JointState or my_pkg::MyIdlMessage)
  2. The schema definition (a .msg file or IDL text)
  3. A raw memory buffer containing the serialized message

The raw buffer is typically obtained from:

Output writers

The MessageWriter interface allows different output formats from the same deserialization walk:

Writer Description
FlatMessageWriter Produces a FlatMessage (vector of key/value pairs). Default output.
MsgpackMessageWriter Writes MessagePack binary directly, bypassing FlatMessage.
JsonMessageWriter Produces a JSON document (requires ROSX_HAS_JSON=ON).

Custom writers can be implemented by subclassing MessageWriter.

Building and testing

# Standalone build (no ROS)
cmake -S. -B build -DBUILD_TESTING=ON
cmake --build build
ctest --test-dir build

Benchmarks

The MCAP benchmark measures deserialization throughput on real bag files:

cmake -S. -B build -DBUILD_BENCHMARKS=ON
cmake --build build

# Run with different output writers
./build/mcap_benchmark path/to/file.mcap --writer flat
./build/mcap_benchmark path/to/file.mcap --writer msgpack
./build/mcap_benchmark path/to/file.mcap --writer json

The IDL benchmark measures CDR deserialization performance:

./build/idl_benchmark

Python binding

cmake -S. -B build_python -DROSX_PYTHON_BINDINGS=ON
cmake --build build_python

PYTHONPATH=build_python/python python3 python/mcap_ros_parser.py path_to_your_rosbag.mcap

Repo symbol

rosx_introspection repository

rosx_introspection

ROS Distro
iron

Repository Summary

Checkout URI https://github.com/facontidavide/rosx_introspection.git
VCS Type git
VCS Version master
Last Updated 2026-05-30
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
rosx_introspection 3.1.0

README

ROS X Introspection

Ubuntu Humble Jazzy Kilted Rolling

A runtime message parser and introspection library for ROS. It can deserialize any ROS message into key/value pairs without compile-time type knowledge.

Supported schema formats

  • ROS .msg (ROS1 and ROS2 message definitions)
  • DDS IDL (OMG IDL 4.2 subset)

The subset the OMG IDL currently supported are:

  • enums
  • unions
  • @key and @optional
  • multi-dimensional arrays
  • struct inheritance

Build modes

The library compiles in two modes:

  • ROS2 (colcon/ament)
  • Standalone (vanilla CMake, no ROS dependency)

ROS1 .msg schemas and the ROS1 serialization format (ROS_Deserializer) are still supported at runtime, but the catkin build system is no longer maintained.

How it works

To parse a message at runtime, you need:

  1. The type name (e.g. sensor_msgs/JointState or my_pkg::MyIdlMessage)
  2. The schema definition (a .msg file or IDL text)
  3. A raw memory buffer containing the serialized message

The raw buffer is typically obtained from:

Output writers

The MessageWriter interface allows different output formats from the same deserialization walk:

Writer Description
FlatMessageWriter Produces a FlatMessage (vector of key/value pairs). Default output.
MsgpackMessageWriter Writes MessagePack binary directly, bypassing FlatMessage.
JsonMessageWriter Produces a JSON document (requires ROSX_HAS_JSON=ON).

Custom writers can be implemented by subclassing MessageWriter.

Building and testing

# Standalone build (no ROS)
cmake -S. -B build -DBUILD_TESTING=ON
cmake --build build
ctest --test-dir build

Benchmarks

The MCAP benchmark measures deserialization throughput on real bag files:

cmake -S. -B build -DBUILD_BENCHMARKS=ON
cmake --build build

# Run with different output writers
./build/mcap_benchmark path/to/file.mcap --writer flat
./build/mcap_benchmark path/to/file.mcap --writer msgpack
./build/mcap_benchmark path/to/file.mcap --writer json

The IDL benchmark measures CDR deserialization performance:

./build/idl_benchmark

Python binding

cmake -S. -B build_python -DROSX_PYTHON_BINDINGS=ON
cmake --build build_python

PYTHONPATH=build_python/python python3 python/mcap_ros_parser.py path_to_your_rosbag.mcap

No version for distro lunar showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

rosx_introspection repository

rosx_introspection

ROS Distro
humble

Repository Summary

Checkout URI https://github.com/facontidavide/rosx_introspection.git
VCS Type git
VCS Version master
Last Updated 2026-05-30
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
rosx_introspection 3.1.0

README

ROS X Introspection

Ubuntu Humble Jazzy Kilted Rolling

A runtime message parser and introspection library for ROS. It can deserialize any ROS message into key/value pairs without compile-time type knowledge.

Supported schema formats

  • ROS .msg (ROS1 and ROS2 message definitions)
  • DDS IDL (OMG IDL 4.2 subset)

The subset the OMG IDL currently supported are:

  • enums
  • unions
  • @key and @optional
  • multi-dimensional arrays
  • struct inheritance

Build modes

The library compiles in two modes:

  • ROS2 (colcon/ament)
  • Standalone (vanilla CMake, no ROS dependency)

ROS1 .msg schemas and the ROS1 serialization format (ROS_Deserializer) are still supported at runtime, but the catkin build system is no longer maintained.

How it works

To parse a message at runtime, you need:

  1. The type name (e.g. sensor_msgs/JointState or my_pkg::MyIdlMessage)
  2. The schema definition (a .msg file or IDL text)
  3. A raw memory buffer containing the serialized message

The raw buffer is typically obtained from:

Output writers

The MessageWriter interface allows different output formats from the same deserialization walk:

Writer Description
FlatMessageWriter Produces a FlatMessage (vector of key/value pairs). Default output.
MsgpackMessageWriter Writes MessagePack binary directly, bypassing FlatMessage.
JsonMessageWriter Produces a JSON document (requires ROSX_HAS_JSON=ON).

Custom writers can be implemented by subclassing MessageWriter.

Building and testing

# Standalone build (no ROS)
cmake -S. -B build -DBUILD_TESTING=ON
cmake --build build
ctest --test-dir build

Benchmarks

The MCAP benchmark measures deserialization throughput on real bag files:

cmake -S. -B build -DBUILD_BENCHMARKS=ON
cmake --build build

# Run with different output writers
./build/mcap_benchmark path/to/file.mcap --writer flat
./build/mcap_benchmark path/to/file.mcap --writer msgpack
./build/mcap_benchmark path/to/file.mcap --writer json

The IDL benchmark measures CDR deserialization performance:

./build/idl_benchmark

Python binding

cmake -S. -B build_python -DROSX_PYTHON_BINDINGS=ON
cmake --build build_python

PYTHONPATH=build_python/python python3 python/mcap_ros_parser.py path_to_your_rosbag.mcap

No version for distro jade showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

rosx_introspection repository

rosx_introspection

ROS Distro
humble

Repository Summary

Checkout URI https://github.com/facontidavide/rosx_introspection.git
VCS Type git
VCS Version master
Last Updated 2026-05-30
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
rosx_introspection 3.1.0

README

ROS X Introspection

Ubuntu Humble Jazzy Kilted Rolling

A runtime message parser and introspection library for ROS. It can deserialize any ROS message into key/value pairs without compile-time type knowledge.

Supported schema formats

  • ROS .msg (ROS1 and ROS2 message definitions)
  • DDS IDL (OMG IDL 4.2 subset)

The subset the OMG IDL currently supported are:

  • enums
  • unions
  • @key and @optional
  • multi-dimensional arrays
  • struct inheritance

Build modes

The library compiles in two modes:

  • ROS2 (colcon/ament)
  • Standalone (vanilla CMake, no ROS dependency)

ROS1 .msg schemas and the ROS1 serialization format (ROS_Deserializer) are still supported at runtime, but the catkin build system is no longer maintained.

How it works

To parse a message at runtime, you need:

  1. The type name (e.g. sensor_msgs/JointState or my_pkg::MyIdlMessage)
  2. The schema definition (a .msg file or IDL text)
  3. A raw memory buffer containing the serialized message

The raw buffer is typically obtained from:

Output writers

The MessageWriter interface allows different output formats from the same deserialization walk:

Writer Description
FlatMessageWriter Produces a FlatMessage (vector of key/value pairs). Default output.
MsgpackMessageWriter Writes MessagePack binary directly, bypassing FlatMessage.
JsonMessageWriter Produces a JSON document (requires ROSX_HAS_JSON=ON).

Custom writers can be implemented by subclassing MessageWriter.

Building and testing

# Standalone build (no ROS)
cmake -S. -B build -DBUILD_TESTING=ON
cmake --build build
ctest --test-dir build

Benchmarks

The MCAP benchmark measures deserialization throughput on real bag files:

cmake -S. -B build -DBUILD_BENCHMARKS=ON
cmake --build build

# Run with different output writers
./build/mcap_benchmark path/to/file.mcap --writer flat
./build/mcap_benchmark path/to/file.mcap --writer msgpack
./build/mcap_benchmark path/to/file.mcap --writer json

The IDL benchmark measures CDR deserialization performance:

./build/idl_benchmark

Python binding

cmake -S. -B build_python -DROSX_PYTHON_BINDINGS=ON
cmake --build build_python

PYTHONPATH=build_python/python python3 python/mcap_ros_parser.py path_to_your_rosbag.mcap

No version for distro indigo showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

rosx_introspection repository

rosx_introspection

ROS Distro
humble

Repository Summary

Checkout URI https://github.com/facontidavide/rosx_introspection.git
VCS Type git
VCS Version master
Last Updated 2026-05-30
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
rosx_introspection 3.1.0

README

ROS X Introspection

Ubuntu Humble Jazzy Kilted Rolling

A runtime message parser and introspection library for ROS. It can deserialize any ROS message into key/value pairs without compile-time type knowledge.

Supported schema formats

  • ROS .msg (ROS1 and ROS2 message definitions)
  • DDS IDL (OMG IDL 4.2 subset)

The subset the OMG IDL currently supported are:

  • enums
  • unions
  • @key and @optional
  • multi-dimensional arrays
  • struct inheritance

Build modes

The library compiles in two modes:

  • ROS2 (colcon/ament)
  • Standalone (vanilla CMake, no ROS dependency)

ROS1 .msg schemas and the ROS1 serialization format (ROS_Deserializer) are still supported at runtime, but the catkin build system is no longer maintained.

How it works

To parse a message at runtime, you need:

  1. The type name (e.g. sensor_msgs/JointState or my_pkg::MyIdlMessage)
  2. The schema definition (a .msg file or IDL text)
  3. A raw memory buffer containing the serialized message

The raw buffer is typically obtained from:

Output writers

The MessageWriter interface allows different output formats from the same deserialization walk:

Writer Description
FlatMessageWriter Produces a FlatMessage (vector of key/value pairs). Default output.
MsgpackMessageWriter Writes MessagePack binary directly, bypassing FlatMessage.
JsonMessageWriter Produces a JSON document (requires ROSX_HAS_JSON=ON).

Custom writers can be implemented by subclassing MessageWriter.

Building and testing

# Standalone build (no ROS)
cmake -S. -B build -DBUILD_TESTING=ON
cmake --build build
ctest --test-dir build

Benchmarks

The MCAP benchmark measures deserialization throughput on real bag files:

cmake -S. -B build -DBUILD_BENCHMARKS=ON
cmake --build build

# Run with different output writers
./build/mcap_benchmark path/to/file.mcap --writer flat
./build/mcap_benchmark path/to/file.mcap --writer msgpack
./build/mcap_benchmark path/to/file.mcap --writer json

The IDL benchmark measures CDR deserialization performance:

./build/idl_benchmark

Python binding

cmake -S. -B build_python -DROSX_PYTHON_BINDINGS=ON
cmake --build build_python

PYTHONPATH=build_python/python python3 python/mcap_ros_parser.py path_to_your_rosbag.mcap

No version for distro hydro showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

rosx_introspection repository

rosx_introspection

ROS Distro
humble

Repository Summary

Checkout URI https://github.com/facontidavide/rosx_introspection.git
VCS Type git
VCS Version master
Last Updated 2026-05-30
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
rosx_introspection 3.1.0

README

ROS X Introspection

Ubuntu Humble Jazzy Kilted Rolling

A runtime message parser and introspection library for ROS. It can deserialize any ROS message into key/value pairs without compile-time type knowledge.

Supported schema formats

  • ROS .msg (ROS1 and ROS2 message definitions)
  • DDS IDL (OMG IDL 4.2 subset)

The subset the OMG IDL currently supported are:

  • enums
  • unions
  • @key and @optional
  • multi-dimensional arrays
  • struct inheritance

Build modes

The library compiles in two modes:

  • ROS2 (colcon/ament)
  • Standalone (vanilla CMake, no ROS dependency)

ROS1 .msg schemas and the ROS1 serialization format (ROS_Deserializer) are still supported at runtime, but the catkin build system is no longer maintained.

How it works

To parse a message at runtime, you need:

  1. The type name (e.g. sensor_msgs/JointState or my_pkg::MyIdlMessage)
  2. The schema definition (a .msg file or IDL text)
  3. A raw memory buffer containing the serialized message

The raw buffer is typically obtained from:

Output writers

The MessageWriter interface allows different output formats from the same deserialization walk:

Writer Description
FlatMessageWriter Produces a FlatMessage (vector of key/value pairs). Default output.
MsgpackMessageWriter Writes MessagePack binary directly, bypassing FlatMessage.
JsonMessageWriter Produces a JSON document (requires ROSX_HAS_JSON=ON).

Custom writers can be implemented by subclassing MessageWriter.

Building and testing

# Standalone build (no ROS)
cmake -S. -B build -DBUILD_TESTING=ON
cmake --build build
ctest --test-dir build

Benchmarks

The MCAP benchmark measures deserialization throughput on real bag files:

cmake -S. -B build -DBUILD_BENCHMARKS=ON
cmake --build build

# Run with different output writers
./build/mcap_benchmark path/to/file.mcap --writer flat
./build/mcap_benchmark path/to/file.mcap --writer msgpack
./build/mcap_benchmark path/to/file.mcap --writer json

The IDL benchmark measures CDR deserialization performance:

./build/idl_benchmark

Python binding

cmake -S. -B build_python -DROSX_PYTHON_BINDINGS=ON
cmake --build build_python

PYTHONPATH=build_python/python python3 python/mcap_ros_parser.py path_to_your_rosbag.mcap

No version for distro kinetic showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

rosx_introspection repository

rosx_introspection

ROS Distro
humble

Repository Summary

Checkout URI https://github.com/facontidavide/rosx_introspection.git
VCS Type git
VCS Version master
Last Updated 2026-05-30
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
rosx_introspection 3.1.0

README

ROS X Introspection

Ubuntu Humble Jazzy Kilted Rolling

A runtime message parser and introspection library for ROS. It can deserialize any ROS message into key/value pairs without compile-time type knowledge.

Supported schema formats

  • ROS .msg (ROS1 and ROS2 message definitions)
  • DDS IDL (OMG IDL 4.2 subset)

The subset the OMG IDL currently supported are:

  • enums
  • unions
  • @key and @optional
  • multi-dimensional arrays
  • struct inheritance

Build modes

The library compiles in two modes:

  • ROS2 (colcon/ament)
  • Standalone (vanilla CMake, no ROS dependency)

ROS1 .msg schemas and the ROS1 serialization format (ROS_Deserializer) are still supported at runtime, but the catkin build system is no longer maintained.

How it works

To parse a message at runtime, you need:

  1. The type name (e.g. sensor_msgs/JointState or my_pkg::MyIdlMessage)
  2. The schema definition (a .msg file or IDL text)
  3. A raw memory buffer containing the serialized message

The raw buffer is typically obtained from:

Output writers

The MessageWriter interface allows different output formats from the same deserialization walk:

Writer Description
FlatMessageWriter Produces a FlatMessage (vector of key/value pairs). Default output.
MsgpackMessageWriter Writes MessagePack binary directly, bypassing FlatMessage.
JsonMessageWriter Produces a JSON document (requires ROSX_HAS_JSON=ON).

Custom writers can be implemented by subclassing MessageWriter.

Building and testing

# Standalone build (no ROS)
cmake -S. -B build -DBUILD_TESTING=ON
cmake --build build
ctest --test-dir build

Benchmarks

The MCAP benchmark measures deserialization throughput on real bag files:

cmake -S. -B build -DBUILD_BENCHMARKS=ON
cmake --build build

# Run with different output writers
./build/mcap_benchmark path/to/file.mcap --writer flat
./build/mcap_benchmark path/to/file.mcap --writer msgpack
./build/mcap_benchmark path/to/file.mcap --writer json

The IDL benchmark measures CDR deserialization performance:

./build/idl_benchmark

Python binding

cmake -S. -B build_python -DROSX_PYTHON_BINDINGS=ON
cmake --build build_python

PYTHONPATH=build_python/python python3 python/mcap_ros_parser.py path_to_your_rosbag.mcap

No version for distro melodic showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

rosx_introspection repository

rosx_introspection

ROS Distro
humble

Repository Summary

Checkout URI https://github.com/facontidavide/rosx_introspection.git
VCS Type git
VCS Version master
Last Updated 2026-05-30
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
rosx_introspection 3.1.0

README

ROS X Introspection

Ubuntu Humble Jazzy Kilted Rolling

A runtime message parser and introspection library for ROS. It can deserialize any ROS message into key/value pairs without compile-time type knowledge.

Supported schema formats

  • ROS .msg (ROS1 and ROS2 message definitions)
  • DDS IDL (OMG IDL 4.2 subset)

The subset the OMG IDL currently supported are:

  • enums
  • unions
  • @key and @optional
  • multi-dimensional arrays
  • struct inheritance

Build modes

The library compiles in two modes:

  • ROS2 (colcon/ament)
  • Standalone (vanilla CMake, no ROS dependency)

ROS1 .msg schemas and the ROS1 serialization format (ROS_Deserializer) are still supported at runtime, but the catkin build system is no longer maintained.

How it works

To parse a message at runtime, you need:

  1. The type name (e.g. sensor_msgs/JointState or my_pkg::MyIdlMessage)
  2. The schema definition (a .msg file or IDL text)
  3. A raw memory buffer containing the serialized message

The raw buffer is typically obtained from:

Output writers

The MessageWriter interface allows different output formats from the same deserialization walk:

Writer Description
FlatMessageWriter Produces a FlatMessage (vector of key/value pairs). Default output.
MsgpackMessageWriter Writes MessagePack binary directly, bypassing FlatMessage.
JsonMessageWriter Produces a JSON document (requires ROSX_HAS_JSON=ON).

Custom writers can be implemented by subclassing MessageWriter.

Building and testing

# Standalone build (no ROS)
cmake -S. -B build -DBUILD_TESTING=ON
cmake --build build
ctest --test-dir build

Benchmarks

The MCAP benchmark measures deserialization throughput on real bag files:

cmake -S. -B build -DBUILD_BENCHMARKS=ON
cmake --build build

# Run with different output writers
./build/mcap_benchmark path/to/file.mcap --writer flat
./build/mcap_benchmark path/to/file.mcap --writer msgpack
./build/mcap_benchmark path/to/file.mcap --writer json

The IDL benchmark measures CDR deserialization performance:

./build/idl_benchmark

Python binding

cmake -S. -B build_python -DROSX_PYTHON_BINDINGS=ON
cmake --build build_python

PYTHONPATH=build_python/python python3 python/mcap_ros_parser.py path_to_your_rosbag.mcap

No version for distro noetic showing humble. Known supported distros are highlighted in the buttons above.
Repo symbol

rosx_introspection repository

rosx_introspection

ROS Distro
humble

Repository Summary

Checkout URI https://github.com/facontidavide/rosx_introspection.git
VCS Type git
VCS Version master
Last Updated 2026-05-30
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
rosx_introspection 3.1.0

README

ROS X Introspection

Ubuntu Humble Jazzy Kilted Rolling

A runtime message parser and introspection library for ROS. It can deserialize any ROS message into key/value pairs without compile-time type knowledge.

Supported schema formats

  • ROS .msg (ROS1 and ROS2 message definitions)
  • DDS IDL (OMG IDL 4.2 subset)

The subset the OMG IDL currently supported are:

  • enums
  • unions
  • @key and @optional
  • multi-dimensional arrays
  • struct inheritance

Build modes

The library compiles in two modes:

  • ROS2 (colcon/ament)
  • Standalone (vanilla CMake, no ROS dependency)

ROS1 .msg schemas and the ROS1 serialization format (ROS_Deserializer) are still supported at runtime, but the catkin build system is no longer maintained.

How it works

To parse a message at runtime, you need:

  1. The type name (e.g. sensor_msgs/JointState or my_pkg::MyIdlMessage)
  2. The schema definition (a .msg file or IDL text)
  3. A raw memory buffer containing the serialized message

The raw buffer is typically obtained from:

Output writers

The MessageWriter interface allows different output formats from the same deserialization walk:

Writer Description
FlatMessageWriter Produces a FlatMessage (vector of key/value pairs). Default output.
MsgpackMessageWriter Writes MessagePack binary directly, bypassing FlatMessage.
JsonMessageWriter Produces a JSON document (requires ROSX_HAS_JSON=ON).

Custom writers can be implemented by subclassing MessageWriter.

Building and testing

# Standalone build (no ROS)
cmake -S. -B build -DBUILD_TESTING=ON
cmake --build build
ctest --test-dir build

Benchmarks

The MCAP benchmark measures deserialization throughput on real bag files:

cmake -S. -B build -DBUILD_BENCHMARKS=ON
cmake --build build

# Run with different output writers
./build/mcap_benchmark path/to/file.mcap --writer flat
./build/mcap_benchmark path/to/file.mcap --writer msgpack
./build/mcap_benchmark path/to/file.mcap --writer json

The IDL benchmark measures CDR deserialization performance:

./build/idl_benchmark

Python binding

cmake -S. -B build_python -DROSX_PYTHON_BINDINGS=ON
cmake --build build_python

PYTHONPATH=build_python/python python3 python/mcap_ros_parser.py path_to_your_rosbag.mcap