Repo symbol

mola_input_rosbag1 repository

mola_input_rosbag1

ROS Distro
humble

Repository Summary

Checkout URI https://github.com/MOLAorg/mola_input_rosbag1.git
VCS Type git
VCS Version develop
Last Updated 2026-09-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
mola_input_rosbag1 0.5.0

README

mola_input_rosbag1

Distro Build dev Builds Stable release
ROS 2 Humble (u22.04) Build Status Build Status
Build Status
Version
ROS 2 Jazzy (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Kilted (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Lyrical (u26.04) Build Status Build Status
Build Status
Version
ROS 2 Rolling (u26.04) Build Status Build Status
Build Status
Version

In the “Builds” column, the top badge is for amd64 and the bottom one for arm64.

A MOLA RawDataSource module that reads ROS 1 .bag files and exposes their contents as MOLA observations, without requiring a ROS 1 installation.

The ROS 1 bag (de)serialization, message definitions, and rosbag_storage reader are vendored inside this package (see the ros1/ and mrpt_ros_bridge/ subdirectories), so the module builds and runs in a pure ROS 2 (or even non-ROS) colcon workspace.

Typical uses:

  • Feed a legacy ROS 1 dataset into MOLA LiDAR Odometry or any other MOLA consumer.
  • Turn MOLA into a ROS 1 -> ROS 2 bridge: read a .bag and re-publish its streams as ROS 2 topics + /tf, in real time (see demo below).
  • Inspect raw sensor streams in the MOLA visualizer.

Supported message types

ROS 1 message type MOLA / MRPT observation
sensor_msgs/Imu CObservationIMU
sensor_msgs/Image CObservationImage (mono8, mono16, rgb8, bgr8, rgba8, bgra8, bayer_rggb8, bayer_bggr8, bayer_gbrg8, bayer_grbg8)
sensor_msgs/CompressedImage CObservationImage (JPEG, PNG, BMP, TGA, GIF, PSD, HDR, PNM)
sensor_msgs/PointCloud2 CObservationPointCloud (XYZ / XYZI / XYZIRT) or CObservationRotatingScan
livox_ros_driver/CustomMsg, livox_ros_driver2/CustomMsg CObservationPointCloud (XYZIRT: intensity=reflectivity, ring=line, time=offset_time)
sensor_msgs/LaserScan CObservation2DRangeScan
sensor_msgs/NavSatFix CObservationGPS
nav_msgs/Odometry CObservationOdometry (planar; see note below)
geometry_msgs/PoseStamped, geometry_msgs/PoseWithCovarianceStamped CObservationRobotPose (full SE(3) + 6x6 covariance)
tf2_msgs/TFMessage (/tf, /tf_static) transform tree (sensor pose lookup)

CObservationOdometry is a planar type: it holds only (x, y, yaw) and a 2D twist (vx, vy, wz). For a 3D odometry source – a legged robot, a VIO, an aerial platform – that discards z, roll, pitch and the covariance the source publishes. To keep them, ask for the SE(3) type explicitly:

sensors:
  - topic: /state_estimator/odometry
    sensorLabel: odom
    type: CObservationRobotPose   # instead of the automatic CObservationOdometry

The automatic mapping is unchanged, so existing configurations keep the planar behavior. A source that publishes an all-zero covariance is given a default of 10 cm / 2 deg rather than being read as an exact measurement.

Topics with no known mapping are ignored (a one-time warning is logged).

Sensor poses and /tf

The pose of each sensor in the robot body frame is looked up from the bag’s /tf and /tf_static tree, as the transform base_link_frame_id -> <message frame_id>.

  • Set base_link_frame_id to the name of your robot body frame. Note that many ROS 1 bags use namespaced frames (e.g. r1/base_link instead of base_link).
  • If the relevant transform is not yet available when a message is read (e.g. the first few messages before any /tf), that single observation is dropped and a throttled warning lists the currently known tf frames, which is handy for discovering the correct base_link_frame_id.
  • If your bag has no /tf, override the pose per sensor with fixed_sensor_pose (see the example in rosbag1_lidar.yaml).

Parameters

Param Required Default Description
rosbag_filename yes - Path to the input .bag file, or a YAML sequence of paths to merge and replay jointly in time order (e.g. a sensors bag plus a separate ground-truth-only bag).
base_link_frame_id no base_link Robot body frame for tf pose lookup.
time_warp_scale no 1.0 Playback speed multiplier.
read_ahead_length no 15 Number of messages pre-read ahead.
start_paused no false Start playback paused.
sensors no auto Explicit list of topics, types, and pose overrides. If omitted, all topics with a known mapping are exposed automatically using the topic name as sensorLabel.
ground_truth_topic no - Topic (geometry_msgs/PoseStamped or nav_msgs/Odometry) pre-scanned at start-up into a full trajectory, exposed via the mola::OfflineDatasetSource ground-truth API (hasGroundTruthTrajectory() / getGroundTruthTrajectory()), e.g. for evo-style evaluation. This is independent from (and can be combined with) listing the same topic under sensors for normal per-timestep publishing as a CObservationRobotPose/CObservationOdometry.

See mola-cli-launchs/rosbag1_lidar.yaml for a fully documented sensors example, and mola-cli-launchs/rosbag1_botanicgarden.yaml for an example combining multiple input bags with ground_truth_topic.

Demos

Two ready-to-use mola-cli launch files are provided under mola-cli-launchs/.

1. Visualize raw LiDAR streams

File truncated at 100 lines see the full file

Repo symbol

mola_input_rosbag1 repository

mola_input_rosbag1

ROS Distro
jazzy

Repository Summary

Checkout URI https://github.com/MOLAorg/mola_input_rosbag1.git
VCS Type git
VCS Version develop
Last Updated 2026-09-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
mola_input_rosbag1 0.5.0

README

mola_input_rosbag1

Distro Build dev Builds Stable release
ROS 2 Humble (u22.04) Build Status Build Status
Build Status
Version
ROS 2 Jazzy (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Kilted (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Lyrical (u26.04) Build Status Build Status
Build Status
Version
ROS 2 Rolling (u26.04) Build Status Build Status
Build Status
Version

In the “Builds” column, the top badge is for amd64 and the bottom one for arm64.

A MOLA RawDataSource module that reads ROS 1 .bag files and exposes their contents as MOLA observations, without requiring a ROS 1 installation.

The ROS 1 bag (de)serialization, message definitions, and rosbag_storage reader are vendored inside this package (see the ros1/ and mrpt_ros_bridge/ subdirectories), so the module builds and runs in a pure ROS 2 (or even non-ROS) colcon workspace.

Typical uses:

  • Feed a legacy ROS 1 dataset into MOLA LiDAR Odometry or any other MOLA consumer.
  • Turn MOLA into a ROS 1 -> ROS 2 bridge: read a .bag and re-publish its streams as ROS 2 topics + /tf, in real time (see demo below).
  • Inspect raw sensor streams in the MOLA visualizer.

Supported message types

ROS 1 message type MOLA / MRPT observation
sensor_msgs/Imu CObservationIMU
sensor_msgs/Image CObservationImage (mono8, mono16, rgb8, bgr8, rgba8, bgra8, bayer_rggb8, bayer_bggr8, bayer_gbrg8, bayer_grbg8)
sensor_msgs/CompressedImage CObservationImage (JPEG, PNG, BMP, TGA, GIF, PSD, HDR, PNM)
sensor_msgs/PointCloud2 CObservationPointCloud (XYZ / XYZI / XYZIRT) or CObservationRotatingScan
livox_ros_driver/CustomMsg, livox_ros_driver2/CustomMsg CObservationPointCloud (XYZIRT: intensity=reflectivity, ring=line, time=offset_time)
sensor_msgs/LaserScan CObservation2DRangeScan
sensor_msgs/NavSatFix CObservationGPS
nav_msgs/Odometry CObservationOdometry (planar; see note below)
geometry_msgs/PoseStamped, geometry_msgs/PoseWithCovarianceStamped CObservationRobotPose (full SE(3) + 6x6 covariance)
tf2_msgs/TFMessage (/tf, /tf_static) transform tree (sensor pose lookup)

CObservationOdometry is a planar type: it holds only (x, y, yaw) and a 2D twist (vx, vy, wz). For a 3D odometry source – a legged robot, a VIO, an aerial platform – that discards z, roll, pitch and the covariance the source publishes. To keep them, ask for the SE(3) type explicitly:

sensors:
  - topic: /state_estimator/odometry
    sensorLabel: odom
    type: CObservationRobotPose   # instead of the automatic CObservationOdometry

The automatic mapping is unchanged, so existing configurations keep the planar behavior. A source that publishes an all-zero covariance is given a default of 10 cm / 2 deg rather than being read as an exact measurement.

Topics with no known mapping are ignored (a one-time warning is logged).

Sensor poses and /tf

The pose of each sensor in the robot body frame is looked up from the bag’s /tf and /tf_static tree, as the transform base_link_frame_id -> <message frame_id>.

  • Set base_link_frame_id to the name of your robot body frame. Note that many ROS 1 bags use namespaced frames (e.g. r1/base_link instead of base_link).
  • If the relevant transform is not yet available when a message is read (e.g. the first few messages before any /tf), that single observation is dropped and a throttled warning lists the currently known tf frames, which is handy for discovering the correct base_link_frame_id.
  • If your bag has no /tf, override the pose per sensor with fixed_sensor_pose (see the example in rosbag1_lidar.yaml).

Parameters

Param Required Default Description
rosbag_filename yes - Path to the input .bag file, or a YAML sequence of paths to merge and replay jointly in time order (e.g. a sensors bag plus a separate ground-truth-only bag).
base_link_frame_id no base_link Robot body frame for tf pose lookup.
time_warp_scale no 1.0 Playback speed multiplier.
read_ahead_length no 15 Number of messages pre-read ahead.
start_paused no false Start playback paused.
sensors no auto Explicit list of topics, types, and pose overrides. If omitted, all topics with a known mapping are exposed automatically using the topic name as sensorLabel.
ground_truth_topic no - Topic (geometry_msgs/PoseStamped or nav_msgs/Odometry) pre-scanned at start-up into a full trajectory, exposed via the mola::OfflineDatasetSource ground-truth API (hasGroundTruthTrajectory() / getGroundTruthTrajectory()), e.g. for evo-style evaluation. This is independent from (and can be combined with) listing the same topic under sensors for normal per-timestep publishing as a CObservationRobotPose/CObservationOdometry.

See mola-cli-launchs/rosbag1_lidar.yaml for a fully documented sensors example, and mola-cli-launchs/rosbag1_botanicgarden.yaml for an example combining multiple input bags with ground_truth_topic.

Demos

Two ready-to-use mola-cli launch files are provided under mola-cli-launchs/.

1. Visualize raw LiDAR streams

File truncated at 100 lines see the full file

Repo symbol

mola_input_rosbag1 repository

mola_input_rosbag1

ROS Distro
kilted

Repository Summary

Checkout URI https://github.com/MOLAorg/mola_input_rosbag1.git
VCS Type git
VCS Version develop
Last Updated 2026-09-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
mola_input_rosbag1 0.5.0

README

mola_input_rosbag1

Distro Build dev Builds Stable release
ROS 2 Humble (u22.04) Build Status Build Status
Build Status
Version
ROS 2 Jazzy (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Kilted (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Lyrical (u26.04) Build Status Build Status
Build Status
Version
ROS 2 Rolling (u26.04) Build Status Build Status
Build Status
Version

In the “Builds” column, the top badge is for amd64 and the bottom one for arm64.

A MOLA RawDataSource module that reads ROS 1 .bag files and exposes their contents as MOLA observations, without requiring a ROS 1 installation.

The ROS 1 bag (de)serialization, message definitions, and rosbag_storage reader are vendored inside this package (see the ros1/ and mrpt_ros_bridge/ subdirectories), so the module builds and runs in a pure ROS 2 (or even non-ROS) colcon workspace.

Typical uses:

  • Feed a legacy ROS 1 dataset into MOLA LiDAR Odometry or any other MOLA consumer.
  • Turn MOLA into a ROS 1 -> ROS 2 bridge: read a .bag and re-publish its streams as ROS 2 topics + /tf, in real time (see demo below).
  • Inspect raw sensor streams in the MOLA visualizer.

Supported message types

ROS 1 message type MOLA / MRPT observation
sensor_msgs/Imu CObservationIMU
sensor_msgs/Image CObservationImage (mono8, mono16, rgb8, bgr8, rgba8, bgra8, bayer_rggb8, bayer_bggr8, bayer_gbrg8, bayer_grbg8)
sensor_msgs/CompressedImage CObservationImage (JPEG, PNG, BMP, TGA, GIF, PSD, HDR, PNM)
sensor_msgs/PointCloud2 CObservationPointCloud (XYZ / XYZI / XYZIRT) or CObservationRotatingScan
livox_ros_driver/CustomMsg, livox_ros_driver2/CustomMsg CObservationPointCloud (XYZIRT: intensity=reflectivity, ring=line, time=offset_time)
sensor_msgs/LaserScan CObservation2DRangeScan
sensor_msgs/NavSatFix CObservationGPS
nav_msgs/Odometry CObservationOdometry (planar; see note below)
geometry_msgs/PoseStamped, geometry_msgs/PoseWithCovarianceStamped CObservationRobotPose (full SE(3) + 6x6 covariance)
tf2_msgs/TFMessage (/tf, /tf_static) transform tree (sensor pose lookup)

CObservationOdometry is a planar type: it holds only (x, y, yaw) and a 2D twist (vx, vy, wz). For a 3D odometry source – a legged robot, a VIO, an aerial platform – that discards z, roll, pitch and the covariance the source publishes. To keep them, ask for the SE(3) type explicitly:

sensors:
  - topic: /state_estimator/odometry
    sensorLabel: odom
    type: CObservationRobotPose   # instead of the automatic CObservationOdometry

The automatic mapping is unchanged, so existing configurations keep the planar behavior. A source that publishes an all-zero covariance is given a default of 10 cm / 2 deg rather than being read as an exact measurement.

Topics with no known mapping are ignored (a one-time warning is logged).

Sensor poses and /tf

The pose of each sensor in the robot body frame is looked up from the bag’s /tf and /tf_static tree, as the transform base_link_frame_id -> <message frame_id>.

  • Set base_link_frame_id to the name of your robot body frame. Note that many ROS 1 bags use namespaced frames (e.g. r1/base_link instead of base_link).
  • If the relevant transform is not yet available when a message is read (e.g. the first few messages before any /tf), that single observation is dropped and a throttled warning lists the currently known tf frames, which is handy for discovering the correct base_link_frame_id.
  • If your bag has no /tf, override the pose per sensor with fixed_sensor_pose (see the example in rosbag1_lidar.yaml).

Parameters

Param Required Default Description
rosbag_filename yes - Path to the input .bag file, or a YAML sequence of paths to merge and replay jointly in time order (e.g. a sensors bag plus a separate ground-truth-only bag).
base_link_frame_id no base_link Robot body frame for tf pose lookup.
time_warp_scale no 1.0 Playback speed multiplier.
read_ahead_length no 15 Number of messages pre-read ahead.
start_paused no false Start playback paused.
sensors no auto Explicit list of topics, types, and pose overrides. If omitted, all topics with a known mapping are exposed automatically using the topic name as sensorLabel.
ground_truth_topic no - Topic (geometry_msgs/PoseStamped or nav_msgs/Odometry) pre-scanned at start-up into a full trajectory, exposed via the mola::OfflineDatasetSource ground-truth API (hasGroundTruthTrajectory() / getGroundTruthTrajectory()), e.g. for evo-style evaluation. This is independent from (and can be combined with) listing the same topic under sensors for normal per-timestep publishing as a CObservationRobotPose/CObservationOdometry.

See mola-cli-launchs/rosbag1_lidar.yaml for a fully documented sensors example, and mola-cli-launchs/rosbag1_botanicgarden.yaml for an example combining multiple input bags with ground_truth_topic.

Demos

Two ready-to-use mola-cli launch files are provided under mola-cli-launchs/.

1. Visualize raw LiDAR streams

File truncated at 100 lines see the full file

Repo symbol

mola_input_rosbag1 repository

mola_input_rosbag1

ROS Distro
lyrical

Repository Summary

Checkout URI https://github.com/MOLAorg/mola_input_rosbag1.git
VCS Type git
VCS Version develop
Last Updated 2026-09-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
mola_input_rosbag1 0.5.0

README

mola_input_rosbag1

Distro Build dev Builds Stable release
ROS 2 Humble (u22.04) Build Status Build Status
Build Status
Version
ROS 2 Jazzy (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Kilted (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Lyrical (u26.04) Build Status Build Status
Build Status
Version
ROS 2 Rolling (u26.04) Build Status Build Status
Build Status
Version

In the “Builds” column, the top badge is for amd64 and the bottom one for arm64.

A MOLA RawDataSource module that reads ROS 1 .bag files and exposes their contents as MOLA observations, without requiring a ROS 1 installation.

The ROS 1 bag (de)serialization, message definitions, and rosbag_storage reader are vendored inside this package (see the ros1/ and mrpt_ros_bridge/ subdirectories), so the module builds and runs in a pure ROS 2 (or even non-ROS) colcon workspace.

Typical uses:

  • Feed a legacy ROS 1 dataset into MOLA LiDAR Odometry or any other MOLA consumer.
  • Turn MOLA into a ROS 1 -> ROS 2 bridge: read a .bag and re-publish its streams as ROS 2 topics + /tf, in real time (see demo below).
  • Inspect raw sensor streams in the MOLA visualizer.

Supported message types

ROS 1 message type MOLA / MRPT observation
sensor_msgs/Imu CObservationIMU
sensor_msgs/Image CObservationImage (mono8, mono16, rgb8, bgr8, rgba8, bgra8, bayer_rggb8, bayer_bggr8, bayer_gbrg8, bayer_grbg8)
sensor_msgs/CompressedImage CObservationImage (JPEG, PNG, BMP, TGA, GIF, PSD, HDR, PNM)
sensor_msgs/PointCloud2 CObservationPointCloud (XYZ / XYZI / XYZIRT) or CObservationRotatingScan
livox_ros_driver/CustomMsg, livox_ros_driver2/CustomMsg CObservationPointCloud (XYZIRT: intensity=reflectivity, ring=line, time=offset_time)
sensor_msgs/LaserScan CObservation2DRangeScan
sensor_msgs/NavSatFix CObservationGPS
nav_msgs/Odometry CObservationOdometry (planar; see note below)
geometry_msgs/PoseStamped, geometry_msgs/PoseWithCovarianceStamped CObservationRobotPose (full SE(3) + 6x6 covariance)
tf2_msgs/TFMessage (/tf, /tf_static) transform tree (sensor pose lookup)

CObservationOdometry is a planar type: it holds only (x, y, yaw) and a 2D twist (vx, vy, wz). For a 3D odometry source – a legged robot, a VIO, an aerial platform – that discards z, roll, pitch and the covariance the source publishes. To keep them, ask for the SE(3) type explicitly:

sensors:
  - topic: /state_estimator/odometry
    sensorLabel: odom
    type: CObservationRobotPose   # instead of the automatic CObservationOdometry

The automatic mapping is unchanged, so existing configurations keep the planar behavior. A source that publishes an all-zero covariance is given a default of 10 cm / 2 deg rather than being read as an exact measurement.

Topics with no known mapping are ignored (a one-time warning is logged).

Sensor poses and /tf

The pose of each sensor in the robot body frame is looked up from the bag’s /tf and /tf_static tree, as the transform base_link_frame_id -> <message frame_id>.

  • Set base_link_frame_id to the name of your robot body frame. Note that many ROS 1 bags use namespaced frames (e.g. r1/base_link instead of base_link).
  • If the relevant transform is not yet available when a message is read (e.g. the first few messages before any /tf), that single observation is dropped and a throttled warning lists the currently known tf frames, which is handy for discovering the correct base_link_frame_id.
  • If your bag has no /tf, override the pose per sensor with fixed_sensor_pose (see the example in rosbag1_lidar.yaml).

Parameters

Param Required Default Description
rosbag_filename yes - Path to the input .bag file, or a YAML sequence of paths to merge and replay jointly in time order (e.g. a sensors bag plus a separate ground-truth-only bag).
base_link_frame_id no base_link Robot body frame for tf pose lookup.
time_warp_scale no 1.0 Playback speed multiplier.
read_ahead_length no 15 Number of messages pre-read ahead.
start_paused no false Start playback paused.
sensors no auto Explicit list of topics, types, and pose overrides. If omitted, all topics with a known mapping are exposed automatically using the topic name as sensorLabel.
ground_truth_topic no - Topic (geometry_msgs/PoseStamped or nav_msgs/Odometry) pre-scanned at start-up into a full trajectory, exposed via the mola::OfflineDatasetSource ground-truth API (hasGroundTruthTrajectory() / getGroundTruthTrajectory()), e.g. for evo-style evaluation. This is independent from (and can be combined with) listing the same topic under sensors for normal per-timestep publishing as a CObservationRobotPose/CObservationOdometry.

See mola-cli-launchs/rosbag1_lidar.yaml for a fully documented sensors example, and mola-cli-launchs/rosbag1_botanicgarden.yaml for an example combining multiple input bags with ground_truth_topic.

Demos

Two ready-to-use mola-cli launch files are provided under mola-cli-launchs/.

1. Visualize raw LiDAR streams

File truncated at 100 lines see the full file

Repo symbol

mola_input_rosbag1 repository

mola_input_rosbag1

ROS Distro
rolling

Repository Summary

Checkout URI https://github.com/MOLAorg/mola_input_rosbag1.git
VCS Type git
VCS Version develop
Last Updated 2026-09-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
mola_input_rosbag1 0.5.0

README

mola_input_rosbag1

Distro Build dev Builds Stable release
ROS 2 Humble (u22.04) Build Status Build Status
Build Status
Version
ROS 2 Jazzy (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Kilted (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Lyrical (u26.04) Build Status Build Status
Build Status
Version
ROS 2 Rolling (u26.04) Build Status Build Status
Build Status
Version

In the “Builds” column, the top badge is for amd64 and the bottom one for arm64.

A MOLA RawDataSource module that reads ROS 1 .bag files and exposes their contents as MOLA observations, without requiring a ROS 1 installation.

The ROS 1 bag (de)serialization, message definitions, and rosbag_storage reader are vendored inside this package (see the ros1/ and mrpt_ros_bridge/ subdirectories), so the module builds and runs in a pure ROS 2 (or even non-ROS) colcon workspace.

Typical uses:

  • Feed a legacy ROS 1 dataset into MOLA LiDAR Odometry or any other MOLA consumer.
  • Turn MOLA into a ROS 1 -> ROS 2 bridge: read a .bag and re-publish its streams as ROS 2 topics + /tf, in real time (see demo below).
  • Inspect raw sensor streams in the MOLA visualizer.

Supported message types

ROS 1 message type MOLA / MRPT observation
sensor_msgs/Imu CObservationIMU
sensor_msgs/Image CObservationImage (mono8, mono16, rgb8, bgr8, rgba8, bgra8, bayer_rggb8, bayer_bggr8, bayer_gbrg8, bayer_grbg8)
sensor_msgs/CompressedImage CObservationImage (JPEG, PNG, BMP, TGA, GIF, PSD, HDR, PNM)
sensor_msgs/PointCloud2 CObservationPointCloud (XYZ / XYZI / XYZIRT) or CObservationRotatingScan
livox_ros_driver/CustomMsg, livox_ros_driver2/CustomMsg CObservationPointCloud (XYZIRT: intensity=reflectivity, ring=line, time=offset_time)
sensor_msgs/LaserScan CObservation2DRangeScan
sensor_msgs/NavSatFix CObservationGPS
nav_msgs/Odometry CObservationOdometry (planar; see note below)
geometry_msgs/PoseStamped, geometry_msgs/PoseWithCovarianceStamped CObservationRobotPose (full SE(3) + 6x6 covariance)
tf2_msgs/TFMessage (/tf, /tf_static) transform tree (sensor pose lookup)

CObservationOdometry is a planar type: it holds only (x, y, yaw) and a 2D twist (vx, vy, wz). For a 3D odometry source – a legged robot, a VIO, an aerial platform – that discards z, roll, pitch and the covariance the source publishes. To keep them, ask for the SE(3) type explicitly:

sensors:
  - topic: /state_estimator/odometry
    sensorLabel: odom
    type: CObservationRobotPose   # instead of the automatic CObservationOdometry

The automatic mapping is unchanged, so existing configurations keep the planar behavior. A source that publishes an all-zero covariance is given a default of 10 cm / 2 deg rather than being read as an exact measurement.

Topics with no known mapping are ignored (a one-time warning is logged).

Sensor poses and /tf

The pose of each sensor in the robot body frame is looked up from the bag’s /tf and /tf_static tree, as the transform base_link_frame_id -> <message frame_id>.

  • Set base_link_frame_id to the name of your robot body frame. Note that many ROS 1 bags use namespaced frames (e.g. r1/base_link instead of base_link).
  • If the relevant transform is not yet available when a message is read (e.g. the first few messages before any /tf), that single observation is dropped and a throttled warning lists the currently known tf frames, which is handy for discovering the correct base_link_frame_id.
  • If your bag has no /tf, override the pose per sensor with fixed_sensor_pose (see the example in rosbag1_lidar.yaml).

Parameters

Param Required Default Description
rosbag_filename yes - Path to the input .bag file, or a YAML sequence of paths to merge and replay jointly in time order (e.g. a sensors bag plus a separate ground-truth-only bag).
base_link_frame_id no base_link Robot body frame for tf pose lookup.
time_warp_scale no 1.0 Playback speed multiplier.
read_ahead_length no 15 Number of messages pre-read ahead.
start_paused no false Start playback paused.
sensors no auto Explicit list of topics, types, and pose overrides. If omitted, all topics with a known mapping are exposed automatically using the topic name as sensorLabel.
ground_truth_topic no - Topic (geometry_msgs/PoseStamped or nav_msgs/Odometry) pre-scanned at start-up into a full trajectory, exposed via the mola::OfflineDatasetSource ground-truth API (hasGroundTruthTrajectory() / getGroundTruthTrajectory()), e.g. for evo-style evaluation. This is independent from (and can be combined with) listing the same topic under sensors for normal per-timestep publishing as a CObservationRobotPose/CObservationOdometry.

See mola-cli-launchs/rosbag1_lidar.yaml for a fully documented sensors example, and mola-cli-launchs/rosbag1_botanicgarden.yaml for an example combining multiple input bags with ground_truth_topic.

Demos

Two ready-to-use mola-cli launch files are provided under mola-cli-launchs/.

1. Visualize raw LiDAR streams

File truncated at 100 lines see the full file

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

mola_input_rosbag1 repository

mola_input_rosbag1

ROS Distro
humble

Repository Summary

Checkout URI https://github.com/MOLAorg/mola_input_rosbag1.git
VCS Type git
VCS Version develop
Last Updated 2026-09-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
mola_input_rosbag1 0.5.0

README

mola_input_rosbag1

Distro Build dev Builds Stable release
ROS 2 Humble (u22.04) Build Status Build Status
Build Status
Version
ROS 2 Jazzy (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Kilted (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Lyrical (u26.04) Build Status Build Status
Build Status
Version
ROS 2 Rolling (u26.04) Build Status Build Status
Build Status
Version

In the “Builds” column, the top badge is for amd64 and the bottom one for arm64.

A MOLA RawDataSource module that reads ROS 1 .bag files and exposes their contents as MOLA observations, without requiring a ROS 1 installation.

The ROS 1 bag (de)serialization, message definitions, and rosbag_storage reader are vendored inside this package (see the ros1/ and mrpt_ros_bridge/ subdirectories), so the module builds and runs in a pure ROS 2 (or even non-ROS) colcon workspace.

Typical uses:

  • Feed a legacy ROS 1 dataset into MOLA LiDAR Odometry or any other MOLA consumer.
  • Turn MOLA into a ROS 1 -> ROS 2 bridge: read a .bag and re-publish its streams as ROS 2 topics + /tf, in real time (see demo below).
  • Inspect raw sensor streams in the MOLA visualizer.

Supported message types

ROS 1 message type MOLA / MRPT observation
sensor_msgs/Imu CObservationIMU
sensor_msgs/Image CObservationImage (mono8, mono16, rgb8, bgr8, rgba8, bgra8, bayer_rggb8, bayer_bggr8, bayer_gbrg8, bayer_grbg8)
sensor_msgs/CompressedImage CObservationImage (JPEG, PNG, BMP, TGA, GIF, PSD, HDR, PNM)
sensor_msgs/PointCloud2 CObservationPointCloud (XYZ / XYZI / XYZIRT) or CObservationRotatingScan
livox_ros_driver/CustomMsg, livox_ros_driver2/CustomMsg CObservationPointCloud (XYZIRT: intensity=reflectivity, ring=line, time=offset_time)
sensor_msgs/LaserScan CObservation2DRangeScan
sensor_msgs/NavSatFix CObservationGPS
nav_msgs/Odometry CObservationOdometry (planar; see note below)
geometry_msgs/PoseStamped, geometry_msgs/PoseWithCovarianceStamped CObservationRobotPose (full SE(3) + 6x6 covariance)
tf2_msgs/TFMessage (/tf, /tf_static) transform tree (sensor pose lookup)

CObservationOdometry is a planar type: it holds only (x, y, yaw) and a 2D twist (vx, vy, wz). For a 3D odometry source – a legged robot, a VIO, an aerial platform – that discards z, roll, pitch and the covariance the source publishes. To keep them, ask for the SE(3) type explicitly:

sensors:
  - topic: /state_estimator/odometry
    sensorLabel: odom
    type: CObservationRobotPose   # instead of the automatic CObservationOdometry

The automatic mapping is unchanged, so existing configurations keep the planar behavior. A source that publishes an all-zero covariance is given a default of 10 cm / 2 deg rather than being read as an exact measurement.

Topics with no known mapping are ignored (a one-time warning is logged).

Sensor poses and /tf

The pose of each sensor in the robot body frame is looked up from the bag’s /tf and /tf_static tree, as the transform base_link_frame_id -> <message frame_id>.

  • Set base_link_frame_id to the name of your robot body frame. Note that many ROS 1 bags use namespaced frames (e.g. r1/base_link instead of base_link).
  • If the relevant transform is not yet available when a message is read (e.g. the first few messages before any /tf), that single observation is dropped and a throttled warning lists the currently known tf frames, which is handy for discovering the correct base_link_frame_id.
  • If your bag has no /tf, override the pose per sensor with fixed_sensor_pose (see the example in rosbag1_lidar.yaml).

Parameters

Param Required Default Description
rosbag_filename yes - Path to the input .bag file, or a YAML sequence of paths to merge and replay jointly in time order (e.g. a sensors bag plus a separate ground-truth-only bag).
base_link_frame_id no base_link Robot body frame for tf pose lookup.
time_warp_scale no 1.0 Playback speed multiplier.
read_ahead_length no 15 Number of messages pre-read ahead.
start_paused no false Start playback paused.
sensors no auto Explicit list of topics, types, and pose overrides. If omitted, all topics with a known mapping are exposed automatically using the topic name as sensorLabel.
ground_truth_topic no - Topic (geometry_msgs/PoseStamped or nav_msgs/Odometry) pre-scanned at start-up into a full trajectory, exposed via the mola::OfflineDatasetSource ground-truth API (hasGroundTruthTrajectory() / getGroundTruthTrajectory()), e.g. for evo-style evaluation. This is independent from (and can be combined with) listing the same topic under sensors for normal per-timestep publishing as a CObservationRobotPose/CObservationOdometry.

See mola-cli-launchs/rosbag1_lidar.yaml for a fully documented sensors example, and mola-cli-launchs/rosbag1_botanicgarden.yaml for an example combining multiple input bags with ground_truth_topic.

Demos

Two ready-to-use mola-cli launch files are provided under mola-cli-launchs/.

1. Visualize raw LiDAR streams

File truncated at 100 lines see the full file

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

mola_input_rosbag1 repository

mola_input_rosbag1

ROS Distro
humble

Repository Summary

Checkout URI https://github.com/MOLAorg/mola_input_rosbag1.git
VCS Type git
VCS Version develop
Last Updated 2026-09-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
mola_input_rosbag1 0.5.0

README

mola_input_rosbag1

Distro Build dev Builds Stable release
ROS 2 Humble (u22.04) Build Status Build Status
Build Status
Version
ROS 2 Jazzy (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Kilted (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Lyrical (u26.04) Build Status Build Status
Build Status
Version
ROS 2 Rolling (u26.04) Build Status Build Status
Build Status
Version

In the “Builds” column, the top badge is for amd64 and the bottom one for arm64.

A MOLA RawDataSource module that reads ROS 1 .bag files and exposes their contents as MOLA observations, without requiring a ROS 1 installation.

The ROS 1 bag (de)serialization, message definitions, and rosbag_storage reader are vendored inside this package (see the ros1/ and mrpt_ros_bridge/ subdirectories), so the module builds and runs in a pure ROS 2 (or even non-ROS) colcon workspace.

Typical uses:

  • Feed a legacy ROS 1 dataset into MOLA LiDAR Odometry or any other MOLA consumer.
  • Turn MOLA into a ROS 1 -> ROS 2 bridge: read a .bag and re-publish its streams as ROS 2 topics + /tf, in real time (see demo below).
  • Inspect raw sensor streams in the MOLA visualizer.

Supported message types

ROS 1 message type MOLA / MRPT observation
sensor_msgs/Imu CObservationIMU
sensor_msgs/Image CObservationImage (mono8, mono16, rgb8, bgr8, rgba8, bgra8, bayer_rggb8, bayer_bggr8, bayer_gbrg8, bayer_grbg8)
sensor_msgs/CompressedImage CObservationImage (JPEG, PNG, BMP, TGA, GIF, PSD, HDR, PNM)
sensor_msgs/PointCloud2 CObservationPointCloud (XYZ / XYZI / XYZIRT) or CObservationRotatingScan
livox_ros_driver/CustomMsg, livox_ros_driver2/CustomMsg CObservationPointCloud (XYZIRT: intensity=reflectivity, ring=line, time=offset_time)
sensor_msgs/LaserScan CObservation2DRangeScan
sensor_msgs/NavSatFix CObservationGPS
nav_msgs/Odometry CObservationOdometry (planar; see note below)
geometry_msgs/PoseStamped, geometry_msgs/PoseWithCovarianceStamped CObservationRobotPose (full SE(3) + 6x6 covariance)
tf2_msgs/TFMessage (/tf, /tf_static) transform tree (sensor pose lookup)

CObservationOdometry is a planar type: it holds only (x, y, yaw) and a 2D twist (vx, vy, wz). For a 3D odometry source – a legged robot, a VIO, an aerial platform – that discards z, roll, pitch and the covariance the source publishes. To keep them, ask for the SE(3) type explicitly:

sensors:
  - topic: /state_estimator/odometry
    sensorLabel: odom
    type: CObservationRobotPose   # instead of the automatic CObservationOdometry

The automatic mapping is unchanged, so existing configurations keep the planar behavior. A source that publishes an all-zero covariance is given a default of 10 cm / 2 deg rather than being read as an exact measurement.

Topics with no known mapping are ignored (a one-time warning is logged).

Sensor poses and /tf

The pose of each sensor in the robot body frame is looked up from the bag’s /tf and /tf_static tree, as the transform base_link_frame_id -> <message frame_id>.

  • Set base_link_frame_id to the name of your robot body frame. Note that many ROS 1 bags use namespaced frames (e.g. r1/base_link instead of base_link).
  • If the relevant transform is not yet available when a message is read (e.g. the first few messages before any /tf), that single observation is dropped and a throttled warning lists the currently known tf frames, which is handy for discovering the correct base_link_frame_id.
  • If your bag has no /tf, override the pose per sensor with fixed_sensor_pose (see the example in rosbag1_lidar.yaml).

Parameters

Param Required Default Description
rosbag_filename yes - Path to the input .bag file, or a YAML sequence of paths to merge and replay jointly in time order (e.g. a sensors bag plus a separate ground-truth-only bag).
base_link_frame_id no base_link Robot body frame for tf pose lookup.
time_warp_scale no 1.0 Playback speed multiplier.
read_ahead_length no 15 Number of messages pre-read ahead.
start_paused no false Start playback paused.
sensors no auto Explicit list of topics, types, and pose overrides. If omitted, all topics with a known mapping are exposed automatically using the topic name as sensorLabel.
ground_truth_topic no - Topic (geometry_msgs/PoseStamped or nav_msgs/Odometry) pre-scanned at start-up into a full trajectory, exposed via the mola::OfflineDatasetSource ground-truth API (hasGroundTruthTrajectory() / getGroundTruthTrajectory()), e.g. for evo-style evaluation. This is independent from (and can be combined with) listing the same topic under sensors for normal per-timestep publishing as a CObservationRobotPose/CObservationOdometry.

See mola-cli-launchs/rosbag1_lidar.yaml for a fully documented sensors example, and mola-cli-launchs/rosbag1_botanicgarden.yaml for an example combining multiple input bags with ground_truth_topic.

Demos

Two ready-to-use mola-cli launch files are provided under mola-cli-launchs/.

1. Visualize raw LiDAR streams

File truncated at 100 lines see the full file

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

mola_input_rosbag1 repository

mola_input_rosbag1

ROS Distro
humble

Repository Summary

Checkout URI https://github.com/MOLAorg/mola_input_rosbag1.git
VCS Type git
VCS Version develop
Last Updated 2026-09-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
mola_input_rosbag1 0.5.0

README

mola_input_rosbag1

Distro Build dev Builds Stable release
ROS 2 Humble (u22.04) Build Status Build Status
Build Status
Version
ROS 2 Jazzy (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Kilted (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Lyrical (u26.04) Build Status Build Status
Build Status
Version
ROS 2 Rolling (u26.04) Build Status Build Status
Build Status
Version

In the “Builds” column, the top badge is for amd64 and the bottom one for arm64.

A MOLA RawDataSource module that reads ROS 1 .bag files and exposes their contents as MOLA observations, without requiring a ROS 1 installation.

The ROS 1 bag (de)serialization, message definitions, and rosbag_storage reader are vendored inside this package (see the ros1/ and mrpt_ros_bridge/ subdirectories), so the module builds and runs in a pure ROS 2 (or even non-ROS) colcon workspace.

Typical uses:

  • Feed a legacy ROS 1 dataset into MOLA LiDAR Odometry or any other MOLA consumer.
  • Turn MOLA into a ROS 1 -> ROS 2 bridge: read a .bag and re-publish its streams as ROS 2 topics + /tf, in real time (see demo below).
  • Inspect raw sensor streams in the MOLA visualizer.

Supported message types

ROS 1 message type MOLA / MRPT observation
sensor_msgs/Imu CObservationIMU
sensor_msgs/Image CObservationImage (mono8, mono16, rgb8, bgr8, rgba8, bgra8, bayer_rggb8, bayer_bggr8, bayer_gbrg8, bayer_grbg8)
sensor_msgs/CompressedImage CObservationImage (JPEG, PNG, BMP, TGA, GIF, PSD, HDR, PNM)
sensor_msgs/PointCloud2 CObservationPointCloud (XYZ / XYZI / XYZIRT) or CObservationRotatingScan
livox_ros_driver/CustomMsg, livox_ros_driver2/CustomMsg CObservationPointCloud (XYZIRT: intensity=reflectivity, ring=line, time=offset_time)
sensor_msgs/LaserScan CObservation2DRangeScan
sensor_msgs/NavSatFix CObservationGPS
nav_msgs/Odometry CObservationOdometry (planar; see note below)
geometry_msgs/PoseStamped, geometry_msgs/PoseWithCovarianceStamped CObservationRobotPose (full SE(3) + 6x6 covariance)
tf2_msgs/TFMessage (/tf, /tf_static) transform tree (sensor pose lookup)

CObservationOdometry is a planar type: it holds only (x, y, yaw) and a 2D twist (vx, vy, wz). For a 3D odometry source – a legged robot, a VIO, an aerial platform – that discards z, roll, pitch and the covariance the source publishes. To keep them, ask for the SE(3) type explicitly:

sensors:
  - topic: /state_estimator/odometry
    sensorLabel: odom
    type: CObservationRobotPose   # instead of the automatic CObservationOdometry

The automatic mapping is unchanged, so existing configurations keep the planar behavior. A source that publishes an all-zero covariance is given a default of 10 cm / 2 deg rather than being read as an exact measurement.

Topics with no known mapping are ignored (a one-time warning is logged).

Sensor poses and /tf

The pose of each sensor in the robot body frame is looked up from the bag’s /tf and /tf_static tree, as the transform base_link_frame_id -> <message frame_id>.

  • Set base_link_frame_id to the name of your robot body frame. Note that many ROS 1 bags use namespaced frames (e.g. r1/base_link instead of base_link).
  • If the relevant transform is not yet available when a message is read (e.g. the first few messages before any /tf), that single observation is dropped and a throttled warning lists the currently known tf frames, which is handy for discovering the correct base_link_frame_id.
  • If your bag has no /tf, override the pose per sensor with fixed_sensor_pose (see the example in rosbag1_lidar.yaml).

Parameters

Param Required Default Description
rosbag_filename yes - Path to the input .bag file, or a YAML sequence of paths to merge and replay jointly in time order (e.g. a sensors bag plus a separate ground-truth-only bag).
base_link_frame_id no base_link Robot body frame for tf pose lookup.
time_warp_scale no 1.0 Playback speed multiplier.
read_ahead_length no 15 Number of messages pre-read ahead.
start_paused no false Start playback paused.
sensors no auto Explicit list of topics, types, and pose overrides. If omitted, all topics with a known mapping are exposed automatically using the topic name as sensorLabel.
ground_truth_topic no - Topic (geometry_msgs/PoseStamped or nav_msgs/Odometry) pre-scanned at start-up into a full trajectory, exposed via the mola::OfflineDatasetSource ground-truth API (hasGroundTruthTrajectory() / getGroundTruthTrajectory()), e.g. for evo-style evaluation. This is independent from (and can be combined with) listing the same topic under sensors for normal per-timestep publishing as a CObservationRobotPose/CObservationOdometry.

See mola-cli-launchs/rosbag1_lidar.yaml for a fully documented sensors example, and mola-cli-launchs/rosbag1_botanicgarden.yaml for an example combining multiple input bags with ground_truth_topic.

Demos

Two ready-to-use mola-cli launch files are provided under mola-cli-launchs/.

1. Visualize raw LiDAR streams

File truncated at 100 lines see the full file

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

mola_input_rosbag1 repository

mola_input_rosbag1

ROS Distro
humble

Repository Summary

Checkout URI https://github.com/MOLAorg/mola_input_rosbag1.git
VCS Type git
VCS Version develop
Last Updated 2026-09-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
mola_input_rosbag1 0.5.0

README

mola_input_rosbag1

Distro Build dev Builds Stable release
ROS 2 Humble (u22.04) Build Status Build Status
Build Status
Version
ROS 2 Jazzy (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Kilted (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Lyrical (u26.04) Build Status Build Status
Build Status
Version
ROS 2 Rolling (u26.04) Build Status Build Status
Build Status
Version

In the “Builds” column, the top badge is for amd64 and the bottom one for arm64.

A MOLA RawDataSource module that reads ROS 1 .bag files and exposes their contents as MOLA observations, without requiring a ROS 1 installation.

The ROS 1 bag (de)serialization, message definitions, and rosbag_storage reader are vendored inside this package (see the ros1/ and mrpt_ros_bridge/ subdirectories), so the module builds and runs in a pure ROS 2 (or even non-ROS) colcon workspace.

Typical uses:

  • Feed a legacy ROS 1 dataset into MOLA LiDAR Odometry or any other MOLA consumer.
  • Turn MOLA into a ROS 1 -> ROS 2 bridge: read a .bag and re-publish its streams as ROS 2 topics + /tf, in real time (see demo below).
  • Inspect raw sensor streams in the MOLA visualizer.

Supported message types

ROS 1 message type MOLA / MRPT observation
sensor_msgs/Imu CObservationIMU
sensor_msgs/Image CObservationImage (mono8, mono16, rgb8, bgr8, rgba8, bgra8, bayer_rggb8, bayer_bggr8, bayer_gbrg8, bayer_grbg8)
sensor_msgs/CompressedImage CObservationImage (JPEG, PNG, BMP, TGA, GIF, PSD, HDR, PNM)
sensor_msgs/PointCloud2 CObservationPointCloud (XYZ / XYZI / XYZIRT) or CObservationRotatingScan
livox_ros_driver/CustomMsg, livox_ros_driver2/CustomMsg CObservationPointCloud (XYZIRT: intensity=reflectivity, ring=line, time=offset_time)
sensor_msgs/LaserScan CObservation2DRangeScan
sensor_msgs/NavSatFix CObservationGPS
nav_msgs/Odometry CObservationOdometry (planar; see note below)
geometry_msgs/PoseStamped, geometry_msgs/PoseWithCovarianceStamped CObservationRobotPose (full SE(3) + 6x6 covariance)
tf2_msgs/TFMessage (/tf, /tf_static) transform tree (sensor pose lookup)

CObservationOdometry is a planar type: it holds only (x, y, yaw) and a 2D twist (vx, vy, wz). For a 3D odometry source – a legged robot, a VIO, an aerial platform – that discards z, roll, pitch and the covariance the source publishes. To keep them, ask for the SE(3) type explicitly:

sensors:
  - topic: /state_estimator/odometry
    sensorLabel: odom
    type: CObservationRobotPose   # instead of the automatic CObservationOdometry

The automatic mapping is unchanged, so existing configurations keep the planar behavior. A source that publishes an all-zero covariance is given a default of 10 cm / 2 deg rather than being read as an exact measurement.

Topics with no known mapping are ignored (a one-time warning is logged).

Sensor poses and /tf

The pose of each sensor in the robot body frame is looked up from the bag’s /tf and /tf_static tree, as the transform base_link_frame_id -> <message frame_id>.

  • Set base_link_frame_id to the name of your robot body frame. Note that many ROS 1 bags use namespaced frames (e.g. r1/base_link instead of base_link).
  • If the relevant transform is not yet available when a message is read (e.g. the first few messages before any /tf), that single observation is dropped and a throttled warning lists the currently known tf frames, which is handy for discovering the correct base_link_frame_id.
  • If your bag has no /tf, override the pose per sensor with fixed_sensor_pose (see the example in rosbag1_lidar.yaml).

Parameters

Param Required Default Description
rosbag_filename yes - Path to the input .bag file, or a YAML sequence of paths to merge and replay jointly in time order (e.g. a sensors bag plus a separate ground-truth-only bag).
base_link_frame_id no base_link Robot body frame for tf pose lookup.
time_warp_scale no 1.0 Playback speed multiplier.
read_ahead_length no 15 Number of messages pre-read ahead.
start_paused no false Start playback paused.
sensors no auto Explicit list of topics, types, and pose overrides. If omitted, all topics with a known mapping are exposed automatically using the topic name as sensorLabel.
ground_truth_topic no - Topic (geometry_msgs/PoseStamped or nav_msgs/Odometry) pre-scanned at start-up into a full trajectory, exposed via the mola::OfflineDatasetSource ground-truth API (hasGroundTruthTrajectory() / getGroundTruthTrajectory()), e.g. for evo-style evaluation. This is independent from (and can be combined with) listing the same topic under sensors for normal per-timestep publishing as a CObservationRobotPose/CObservationOdometry.

See mola-cli-launchs/rosbag1_lidar.yaml for a fully documented sensors example, and mola-cli-launchs/rosbag1_botanicgarden.yaml for an example combining multiple input bags with ground_truth_topic.

Demos

Two ready-to-use mola-cli launch files are provided under mola-cli-launchs/.

1. Visualize raw LiDAR streams

File truncated at 100 lines see the full file

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

mola_input_rosbag1 repository

mola_input_rosbag1

ROS Distro
humble

Repository Summary

Checkout URI https://github.com/MOLAorg/mola_input_rosbag1.git
VCS Type git
VCS Version develop
Last Updated 2026-09-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
mola_input_rosbag1 0.5.0

README

mola_input_rosbag1

Distro Build dev Builds Stable release
ROS 2 Humble (u22.04) Build Status Build Status
Build Status
Version
ROS 2 Jazzy (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Kilted (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Lyrical (u26.04) Build Status Build Status
Build Status
Version
ROS 2 Rolling (u26.04) Build Status Build Status
Build Status
Version

In the “Builds” column, the top badge is for amd64 and the bottom one for arm64.

A MOLA RawDataSource module that reads ROS 1 .bag files and exposes their contents as MOLA observations, without requiring a ROS 1 installation.

The ROS 1 bag (de)serialization, message definitions, and rosbag_storage reader are vendored inside this package (see the ros1/ and mrpt_ros_bridge/ subdirectories), so the module builds and runs in a pure ROS 2 (or even non-ROS) colcon workspace.

Typical uses:

  • Feed a legacy ROS 1 dataset into MOLA LiDAR Odometry or any other MOLA consumer.
  • Turn MOLA into a ROS 1 -> ROS 2 bridge: read a .bag and re-publish its streams as ROS 2 topics + /tf, in real time (see demo below).
  • Inspect raw sensor streams in the MOLA visualizer.

Supported message types

ROS 1 message type MOLA / MRPT observation
sensor_msgs/Imu CObservationIMU
sensor_msgs/Image CObservationImage (mono8, mono16, rgb8, bgr8, rgba8, bgra8, bayer_rggb8, bayer_bggr8, bayer_gbrg8, bayer_grbg8)
sensor_msgs/CompressedImage CObservationImage (JPEG, PNG, BMP, TGA, GIF, PSD, HDR, PNM)
sensor_msgs/PointCloud2 CObservationPointCloud (XYZ / XYZI / XYZIRT) or CObservationRotatingScan
livox_ros_driver/CustomMsg, livox_ros_driver2/CustomMsg CObservationPointCloud (XYZIRT: intensity=reflectivity, ring=line, time=offset_time)
sensor_msgs/LaserScan CObservation2DRangeScan
sensor_msgs/NavSatFix CObservationGPS
nav_msgs/Odometry CObservationOdometry (planar; see note below)
geometry_msgs/PoseStamped, geometry_msgs/PoseWithCovarianceStamped CObservationRobotPose (full SE(3) + 6x6 covariance)
tf2_msgs/TFMessage (/tf, /tf_static) transform tree (sensor pose lookup)

CObservationOdometry is a planar type: it holds only (x, y, yaw) and a 2D twist (vx, vy, wz). For a 3D odometry source – a legged robot, a VIO, an aerial platform – that discards z, roll, pitch and the covariance the source publishes. To keep them, ask for the SE(3) type explicitly:

sensors:
  - topic: /state_estimator/odometry
    sensorLabel: odom
    type: CObservationRobotPose   # instead of the automatic CObservationOdometry

The automatic mapping is unchanged, so existing configurations keep the planar behavior. A source that publishes an all-zero covariance is given a default of 10 cm / 2 deg rather than being read as an exact measurement.

Topics with no known mapping are ignored (a one-time warning is logged).

Sensor poses and /tf

The pose of each sensor in the robot body frame is looked up from the bag’s /tf and /tf_static tree, as the transform base_link_frame_id -> <message frame_id>.

  • Set base_link_frame_id to the name of your robot body frame. Note that many ROS 1 bags use namespaced frames (e.g. r1/base_link instead of base_link).
  • If the relevant transform is not yet available when a message is read (e.g. the first few messages before any /tf), that single observation is dropped and a throttled warning lists the currently known tf frames, which is handy for discovering the correct base_link_frame_id.
  • If your bag has no /tf, override the pose per sensor with fixed_sensor_pose (see the example in rosbag1_lidar.yaml).

Parameters

Param Required Default Description
rosbag_filename yes - Path to the input .bag file, or a YAML sequence of paths to merge and replay jointly in time order (e.g. a sensors bag plus a separate ground-truth-only bag).
base_link_frame_id no base_link Robot body frame for tf pose lookup.
time_warp_scale no 1.0 Playback speed multiplier.
read_ahead_length no 15 Number of messages pre-read ahead.
start_paused no false Start playback paused.
sensors no auto Explicit list of topics, types, and pose overrides. If omitted, all topics with a known mapping are exposed automatically using the topic name as sensorLabel.
ground_truth_topic no - Topic (geometry_msgs/PoseStamped or nav_msgs/Odometry) pre-scanned at start-up into a full trajectory, exposed via the mola::OfflineDatasetSource ground-truth API (hasGroundTruthTrajectory() / getGroundTruthTrajectory()), e.g. for evo-style evaluation. This is independent from (and can be combined with) listing the same topic under sensors for normal per-timestep publishing as a CObservationRobotPose/CObservationOdometry.

See mola-cli-launchs/rosbag1_lidar.yaml for a fully documented sensors example, and mola-cli-launchs/rosbag1_botanicgarden.yaml for an example combining multiple input bags with ground_truth_topic.

Demos

Two ready-to-use mola-cli launch files are provided under mola-cli-launchs/.

1. Visualize raw LiDAR streams

File truncated at 100 lines see the full file

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

mola_input_rosbag1 repository

mola_input_rosbag1

ROS Distro
humble

Repository Summary

Checkout URI https://github.com/MOLAorg/mola_input_rosbag1.git
VCS Type git
VCS Version develop
Last Updated 2026-09-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
mola_input_rosbag1 0.5.0

README

mola_input_rosbag1

Distro Build dev Builds Stable release
ROS 2 Humble (u22.04) Build Status Build Status
Build Status
Version
ROS 2 Jazzy (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Kilted (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Lyrical (u26.04) Build Status Build Status
Build Status
Version
ROS 2 Rolling (u26.04) Build Status Build Status
Build Status
Version

In the “Builds” column, the top badge is for amd64 and the bottom one for arm64.

A MOLA RawDataSource module that reads ROS 1 .bag files and exposes their contents as MOLA observations, without requiring a ROS 1 installation.

The ROS 1 bag (de)serialization, message definitions, and rosbag_storage reader are vendored inside this package (see the ros1/ and mrpt_ros_bridge/ subdirectories), so the module builds and runs in a pure ROS 2 (or even non-ROS) colcon workspace.

Typical uses:

  • Feed a legacy ROS 1 dataset into MOLA LiDAR Odometry or any other MOLA consumer.
  • Turn MOLA into a ROS 1 -> ROS 2 bridge: read a .bag and re-publish its streams as ROS 2 topics + /tf, in real time (see demo below).
  • Inspect raw sensor streams in the MOLA visualizer.

Supported message types

ROS 1 message type MOLA / MRPT observation
sensor_msgs/Imu CObservationIMU
sensor_msgs/Image CObservationImage (mono8, mono16, rgb8, bgr8, rgba8, bgra8, bayer_rggb8, bayer_bggr8, bayer_gbrg8, bayer_grbg8)
sensor_msgs/CompressedImage CObservationImage (JPEG, PNG, BMP, TGA, GIF, PSD, HDR, PNM)
sensor_msgs/PointCloud2 CObservationPointCloud (XYZ / XYZI / XYZIRT) or CObservationRotatingScan
livox_ros_driver/CustomMsg, livox_ros_driver2/CustomMsg CObservationPointCloud (XYZIRT: intensity=reflectivity, ring=line, time=offset_time)
sensor_msgs/LaserScan CObservation2DRangeScan
sensor_msgs/NavSatFix CObservationGPS
nav_msgs/Odometry CObservationOdometry (planar; see note below)
geometry_msgs/PoseStamped, geometry_msgs/PoseWithCovarianceStamped CObservationRobotPose (full SE(3) + 6x6 covariance)
tf2_msgs/TFMessage (/tf, /tf_static) transform tree (sensor pose lookup)

CObservationOdometry is a planar type: it holds only (x, y, yaw) and a 2D twist (vx, vy, wz). For a 3D odometry source – a legged robot, a VIO, an aerial platform – that discards z, roll, pitch and the covariance the source publishes. To keep them, ask for the SE(3) type explicitly:

sensors:
  - topic: /state_estimator/odometry
    sensorLabel: odom
    type: CObservationRobotPose   # instead of the automatic CObservationOdometry

The automatic mapping is unchanged, so existing configurations keep the planar behavior. A source that publishes an all-zero covariance is given a default of 10 cm / 2 deg rather than being read as an exact measurement.

Topics with no known mapping are ignored (a one-time warning is logged).

Sensor poses and /tf

The pose of each sensor in the robot body frame is looked up from the bag’s /tf and /tf_static tree, as the transform base_link_frame_id -> <message frame_id>.

  • Set base_link_frame_id to the name of your robot body frame. Note that many ROS 1 bags use namespaced frames (e.g. r1/base_link instead of base_link).
  • If the relevant transform is not yet available when a message is read (e.g. the first few messages before any /tf), that single observation is dropped and a throttled warning lists the currently known tf frames, which is handy for discovering the correct base_link_frame_id.
  • If your bag has no /tf, override the pose per sensor with fixed_sensor_pose (see the example in rosbag1_lidar.yaml).

Parameters

Param Required Default Description
rosbag_filename yes - Path to the input .bag file, or a YAML sequence of paths to merge and replay jointly in time order (e.g. a sensors bag plus a separate ground-truth-only bag).
base_link_frame_id no base_link Robot body frame for tf pose lookup.
time_warp_scale no 1.0 Playback speed multiplier.
read_ahead_length no 15 Number of messages pre-read ahead.
start_paused no false Start playback paused.
sensors no auto Explicit list of topics, types, and pose overrides. If omitted, all topics with a known mapping are exposed automatically using the topic name as sensorLabel.
ground_truth_topic no - Topic (geometry_msgs/PoseStamped or nav_msgs/Odometry) pre-scanned at start-up into a full trajectory, exposed via the mola::OfflineDatasetSource ground-truth API (hasGroundTruthTrajectory() / getGroundTruthTrajectory()), e.g. for evo-style evaluation. This is independent from (and can be combined with) listing the same topic under sensors for normal per-timestep publishing as a CObservationRobotPose/CObservationOdometry.

See mola-cli-launchs/rosbag1_lidar.yaml for a fully documented sensors example, and mola-cli-launchs/rosbag1_botanicgarden.yaml for an example combining multiple input bags with ground_truth_topic.

Demos

Two ready-to-use mola-cli launch files are provided under mola-cli-launchs/.

1. Visualize raw LiDAR streams

File truncated at 100 lines see the full file

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

mola_input_rosbag1 repository

mola_input_rosbag1

ROS Distro
humble

Repository Summary

Checkout URI https://github.com/MOLAorg/mola_input_rosbag1.git
VCS Type git
VCS Version develop
Last Updated 2026-09-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
mola_input_rosbag1 0.5.0

README

mola_input_rosbag1

Distro Build dev Builds Stable release
ROS 2 Humble (u22.04) Build Status Build Status
Build Status
Version
ROS 2 Jazzy (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Kilted (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Lyrical (u26.04) Build Status Build Status
Build Status
Version
ROS 2 Rolling (u26.04) Build Status Build Status
Build Status
Version

In the “Builds” column, the top badge is for amd64 and the bottom one for arm64.

A MOLA RawDataSource module that reads ROS 1 .bag files and exposes their contents as MOLA observations, without requiring a ROS 1 installation.

The ROS 1 bag (de)serialization, message definitions, and rosbag_storage reader are vendored inside this package (see the ros1/ and mrpt_ros_bridge/ subdirectories), so the module builds and runs in a pure ROS 2 (or even non-ROS) colcon workspace.

Typical uses:

  • Feed a legacy ROS 1 dataset into MOLA LiDAR Odometry or any other MOLA consumer.
  • Turn MOLA into a ROS 1 -> ROS 2 bridge: read a .bag and re-publish its streams as ROS 2 topics + /tf, in real time (see demo below).
  • Inspect raw sensor streams in the MOLA visualizer.

Supported message types

ROS 1 message type MOLA / MRPT observation
sensor_msgs/Imu CObservationIMU
sensor_msgs/Image CObservationImage (mono8, mono16, rgb8, bgr8, rgba8, bgra8, bayer_rggb8, bayer_bggr8, bayer_gbrg8, bayer_grbg8)
sensor_msgs/CompressedImage CObservationImage (JPEG, PNG, BMP, TGA, GIF, PSD, HDR, PNM)
sensor_msgs/PointCloud2 CObservationPointCloud (XYZ / XYZI / XYZIRT) or CObservationRotatingScan
livox_ros_driver/CustomMsg, livox_ros_driver2/CustomMsg CObservationPointCloud (XYZIRT: intensity=reflectivity, ring=line, time=offset_time)
sensor_msgs/LaserScan CObservation2DRangeScan
sensor_msgs/NavSatFix CObservationGPS
nav_msgs/Odometry CObservationOdometry (planar; see note below)
geometry_msgs/PoseStamped, geometry_msgs/PoseWithCovarianceStamped CObservationRobotPose (full SE(3) + 6x6 covariance)
tf2_msgs/TFMessage (/tf, /tf_static) transform tree (sensor pose lookup)

CObservationOdometry is a planar type: it holds only (x, y, yaw) and a 2D twist (vx, vy, wz). For a 3D odometry source – a legged robot, a VIO, an aerial platform – that discards z, roll, pitch and the covariance the source publishes. To keep them, ask for the SE(3) type explicitly:

sensors:
  - topic: /state_estimator/odometry
    sensorLabel: odom
    type: CObservationRobotPose   # instead of the automatic CObservationOdometry

The automatic mapping is unchanged, so existing configurations keep the planar behavior. A source that publishes an all-zero covariance is given a default of 10 cm / 2 deg rather than being read as an exact measurement.

Topics with no known mapping are ignored (a one-time warning is logged).

Sensor poses and /tf

The pose of each sensor in the robot body frame is looked up from the bag’s /tf and /tf_static tree, as the transform base_link_frame_id -> <message frame_id>.

  • Set base_link_frame_id to the name of your robot body frame. Note that many ROS 1 bags use namespaced frames (e.g. r1/base_link instead of base_link).
  • If the relevant transform is not yet available when a message is read (e.g. the first few messages before any /tf), that single observation is dropped and a throttled warning lists the currently known tf frames, which is handy for discovering the correct base_link_frame_id.
  • If your bag has no /tf, override the pose per sensor with fixed_sensor_pose (see the example in rosbag1_lidar.yaml).

Parameters

Param Required Default Description
rosbag_filename yes - Path to the input .bag file, or a YAML sequence of paths to merge and replay jointly in time order (e.g. a sensors bag plus a separate ground-truth-only bag).
base_link_frame_id no base_link Robot body frame for tf pose lookup.
time_warp_scale no 1.0 Playback speed multiplier.
read_ahead_length no 15 Number of messages pre-read ahead.
start_paused no false Start playback paused.
sensors no auto Explicit list of topics, types, and pose overrides. If omitted, all topics with a known mapping are exposed automatically using the topic name as sensorLabel.
ground_truth_topic no - Topic (geometry_msgs/PoseStamped or nav_msgs/Odometry) pre-scanned at start-up into a full trajectory, exposed via the mola::OfflineDatasetSource ground-truth API (hasGroundTruthTrajectory() / getGroundTruthTrajectory()), e.g. for evo-style evaluation. This is independent from (and can be combined with) listing the same topic under sensors for normal per-timestep publishing as a CObservationRobotPose/CObservationOdometry.

See mola-cli-launchs/rosbag1_lidar.yaml for a fully documented sensors example, and mola-cli-launchs/rosbag1_botanicgarden.yaml for an example combining multiple input bags with ground_truth_topic.

Demos

Two ready-to-use mola-cli launch files are provided under mola-cli-launchs/.

1. Visualize raw LiDAR streams

File truncated at 100 lines see the full file

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

mola_input_rosbag1 repository

mola_input_rosbag1

ROS Distro
humble

Repository Summary

Checkout URI https://github.com/MOLAorg/mola_input_rosbag1.git
VCS Type git
VCS Version develop
Last Updated 2026-09-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
mola_input_rosbag1 0.5.0

README

mola_input_rosbag1

Distro Build dev Builds Stable release
ROS 2 Humble (u22.04) Build Status Build Status
Build Status
Version
ROS 2 Jazzy (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Kilted (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Lyrical (u26.04) Build Status Build Status
Build Status
Version
ROS 2 Rolling (u26.04) Build Status Build Status
Build Status
Version

In the “Builds” column, the top badge is for amd64 and the bottom one for arm64.

A MOLA RawDataSource module that reads ROS 1 .bag files and exposes their contents as MOLA observations, without requiring a ROS 1 installation.

The ROS 1 bag (de)serialization, message definitions, and rosbag_storage reader are vendored inside this package (see the ros1/ and mrpt_ros_bridge/ subdirectories), so the module builds and runs in a pure ROS 2 (or even non-ROS) colcon workspace.

Typical uses:

  • Feed a legacy ROS 1 dataset into MOLA LiDAR Odometry or any other MOLA consumer.
  • Turn MOLA into a ROS 1 -> ROS 2 bridge: read a .bag and re-publish its streams as ROS 2 topics + /tf, in real time (see demo below).
  • Inspect raw sensor streams in the MOLA visualizer.

Supported message types

ROS 1 message type MOLA / MRPT observation
sensor_msgs/Imu CObservationIMU
sensor_msgs/Image CObservationImage (mono8, mono16, rgb8, bgr8, rgba8, bgra8, bayer_rggb8, bayer_bggr8, bayer_gbrg8, bayer_grbg8)
sensor_msgs/CompressedImage CObservationImage (JPEG, PNG, BMP, TGA, GIF, PSD, HDR, PNM)
sensor_msgs/PointCloud2 CObservationPointCloud (XYZ / XYZI / XYZIRT) or CObservationRotatingScan
livox_ros_driver/CustomMsg, livox_ros_driver2/CustomMsg CObservationPointCloud (XYZIRT: intensity=reflectivity, ring=line, time=offset_time)
sensor_msgs/LaserScan CObservation2DRangeScan
sensor_msgs/NavSatFix CObservationGPS
nav_msgs/Odometry CObservationOdometry (planar; see note below)
geometry_msgs/PoseStamped, geometry_msgs/PoseWithCovarianceStamped CObservationRobotPose (full SE(3) + 6x6 covariance)
tf2_msgs/TFMessage (/tf, /tf_static) transform tree (sensor pose lookup)

CObservationOdometry is a planar type: it holds only (x, y, yaw) and a 2D twist (vx, vy, wz). For a 3D odometry source – a legged robot, a VIO, an aerial platform – that discards z, roll, pitch and the covariance the source publishes. To keep them, ask for the SE(3) type explicitly:

sensors:
  - topic: /state_estimator/odometry
    sensorLabel: odom
    type: CObservationRobotPose   # instead of the automatic CObservationOdometry

The automatic mapping is unchanged, so existing configurations keep the planar behavior. A source that publishes an all-zero covariance is given a default of 10 cm / 2 deg rather than being read as an exact measurement.

Topics with no known mapping are ignored (a one-time warning is logged).

Sensor poses and /tf

The pose of each sensor in the robot body frame is looked up from the bag’s /tf and /tf_static tree, as the transform base_link_frame_id -> <message frame_id>.

  • Set base_link_frame_id to the name of your robot body frame. Note that many ROS 1 bags use namespaced frames (e.g. r1/base_link instead of base_link).
  • If the relevant transform is not yet available when a message is read (e.g. the first few messages before any /tf), that single observation is dropped and a throttled warning lists the currently known tf frames, which is handy for discovering the correct base_link_frame_id.
  • If your bag has no /tf, override the pose per sensor with fixed_sensor_pose (see the example in rosbag1_lidar.yaml).

Parameters

Param Required Default Description
rosbag_filename yes - Path to the input .bag file, or a YAML sequence of paths to merge and replay jointly in time order (e.g. a sensors bag plus a separate ground-truth-only bag).
base_link_frame_id no base_link Robot body frame for tf pose lookup.
time_warp_scale no 1.0 Playback speed multiplier.
read_ahead_length no 15 Number of messages pre-read ahead.
start_paused no false Start playback paused.
sensors no auto Explicit list of topics, types, and pose overrides. If omitted, all topics with a known mapping are exposed automatically using the topic name as sensorLabel.
ground_truth_topic no - Topic (geometry_msgs/PoseStamped or nav_msgs/Odometry) pre-scanned at start-up into a full trajectory, exposed via the mola::OfflineDatasetSource ground-truth API (hasGroundTruthTrajectory() / getGroundTruthTrajectory()), e.g. for evo-style evaluation. This is independent from (and can be combined with) listing the same topic under sensors for normal per-timestep publishing as a CObservationRobotPose/CObservationOdometry.

See mola-cli-launchs/rosbag1_lidar.yaml for a fully documented sensors example, and mola-cli-launchs/rosbag1_botanicgarden.yaml for an example combining multiple input bags with ground_truth_topic.

Demos

Two ready-to-use mola-cli launch files are provided under mola-cli-launchs/.

1. Visualize raw LiDAR streams

File truncated at 100 lines see the full file

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

mola_input_rosbag1 repository

mola_input_rosbag1

ROS Distro
humble

Repository Summary

Checkout URI https://github.com/MOLAorg/mola_input_rosbag1.git
VCS Type git
VCS Version develop
Last Updated 2026-09-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
mola_input_rosbag1 0.5.0

README

mola_input_rosbag1

Distro Build dev Builds Stable release
ROS 2 Humble (u22.04) Build Status Build Status
Build Status
Version
ROS 2 Jazzy (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Kilted (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Lyrical (u26.04) Build Status Build Status
Build Status
Version
ROS 2 Rolling (u26.04) Build Status Build Status
Build Status
Version

In the “Builds” column, the top badge is for amd64 and the bottom one for arm64.

A MOLA RawDataSource module that reads ROS 1 .bag files and exposes their contents as MOLA observations, without requiring a ROS 1 installation.

The ROS 1 bag (de)serialization, message definitions, and rosbag_storage reader are vendored inside this package (see the ros1/ and mrpt_ros_bridge/ subdirectories), so the module builds and runs in a pure ROS 2 (or even non-ROS) colcon workspace.

Typical uses:

  • Feed a legacy ROS 1 dataset into MOLA LiDAR Odometry or any other MOLA consumer.
  • Turn MOLA into a ROS 1 -> ROS 2 bridge: read a .bag and re-publish its streams as ROS 2 topics + /tf, in real time (see demo below).
  • Inspect raw sensor streams in the MOLA visualizer.

Supported message types

ROS 1 message type MOLA / MRPT observation
sensor_msgs/Imu CObservationIMU
sensor_msgs/Image CObservationImage (mono8, mono16, rgb8, bgr8, rgba8, bgra8, bayer_rggb8, bayer_bggr8, bayer_gbrg8, bayer_grbg8)
sensor_msgs/CompressedImage CObservationImage (JPEG, PNG, BMP, TGA, GIF, PSD, HDR, PNM)
sensor_msgs/PointCloud2 CObservationPointCloud (XYZ / XYZI / XYZIRT) or CObservationRotatingScan
livox_ros_driver/CustomMsg, livox_ros_driver2/CustomMsg CObservationPointCloud (XYZIRT: intensity=reflectivity, ring=line, time=offset_time)
sensor_msgs/LaserScan CObservation2DRangeScan
sensor_msgs/NavSatFix CObservationGPS
nav_msgs/Odometry CObservationOdometry (planar; see note below)
geometry_msgs/PoseStamped, geometry_msgs/PoseWithCovarianceStamped CObservationRobotPose (full SE(3) + 6x6 covariance)
tf2_msgs/TFMessage (/tf, /tf_static) transform tree (sensor pose lookup)

CObservationOdometry is a planar type: it holds only (x, y, yaw) and a 2D twist (vx, vy, wz). For a 3D odometry source – a legged robot, a VIO, an aerial platform – that discards z, roll, pitch and the covariance the source publishes. To keep them, ask for the SE(3) type explicitly:

sensors:
  - topic: /state_estimator/odometry
    sensorLabel: odom
    type: CObservationRobotPose   # instead of the automatic CObservationOdometry

The automatic mapping is unchanged, so existing configurations keep the planar behavior. A source that publishes an all-zero covariance is given a default of 10 cm / 2 deg rather than being read as an exact measurement.

Topics with no known mapping are ignored (a one-time warning is logged).

Sensor poses and /tf

The pose of each sensor in the robot body frame is looked up from the bag’s /tf and /tf_static tree, as the transform base_link_frame_id -> <message frame_id>.

  • Set base_link_frame_id to the name of your robot body frame. Note that many ROS 1 bags use namespaced frames (e.g. r1/base_link instead of base_link).
  • If the relevant transform is not yet available when a message is read (e.g. the first few messages before any /tf), that single observation is dropped and a throttled warning lists the currently known tf frames, which is handy for discovering the correct base_link_frame_id.
  • If your bag has no /tf, override the pose per sensor with fixed_sensor_pose (see the example in rosbag1_lidar.yaml).

Parameters

Param Required Default Description
rosbag_filename yes - Path to the input .bag file, or a YAML sequence of paths to merge and replay jointly in time order (e.g. a sensors bag plus a separate ground-truth-only bag).
base_link_frame_id no base_link Robot body frame for tf pose lookup.
time_warp_scale no 1.0 Playback speed multiplier.
read_ahead_length no 15 Number of messages pre-read ahead.
start_paused no false Start playback paused.
sensors no auto Explicit list of topics, types, and pose overrides. If omitted, all topics with a known mapping are exposed automatically using the topic name as sensorLabel.
ground_truth_topic no - Topic (geometry_msgs/PoseStamped or nav_msgs/Odometry) pre-scanned at start-up into a full trajectory, exposed via the mola::OfflineDatasetSource ground-truth API (hasGroundTruthTrajectory() / getGroundTruthTrajectory()), e.g. for evo-style evaluation. This is independent from (and can be combined with) listing the same topic under sensors for normal per-timestep publishing as a CObservationRobotPose/CObservationOdometry.

See mola-cli-launchs/rosbag1_lidar.yaml for a fully documented sensors example, and mola-cli-launchs/rosbag1_botanicgarden.yaml for an example combining multiple input bags with ground_truth_topic.

Demos

Two ready-to-use mola-cli launch files are provided under mola-cli-launchs/.

1. Visualize raw LiDAR streams

File truncated at 100 lines see the full file

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

mola_input_rosbag1 repository

mola_input_rosbag1

ROS Distro
humble

Repository Summary

Checkout URI https://github.com/MOLAorg/mola_input_rosbag1.git
VCS Type git
VCS Version develop
Last Updated 2026-09-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
mola_input_rosbag1 0.5.0

README

mola_input_rosbag1

Distro Build dev Builds Stable release
ROS 2 Humble (u22.04) Build Status Build Status
Build Status
Version
ROS 2 Jazzy (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Kilted (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Lyrical (u26.04) Build Status Build Status
Build Status
Version
ROS 2 Rolling (u26.04) Build Status Build Status
Build Status
Version

In the “Builds” column, the top badge is for amd64 and the bottom one for arm64.

A MOLA RawDataSource module that reads ROS 1 .bag files and exposes their contents as MOLA observations, without requiring a ROS 1 installation.

The ROS 1 bag (de)serialization, message definitions, and rosbag_storage reader are vendored inside this package (see the ros1/ and mrpt_ros_bridge/ subdirectories), so the module builds and runs in a pure ROS 2 (or even non-ROS) colcon workspace.

Typical uses:

  • Feed a legacy ROS 1 dataset into MOLA LiDAR Odometry or any other MOLA consumer.
  • Turn MOLA into a ROS 1 -> ROS 2 bridge: read a .bag and re-publish its streams as ROS 2 topics + /tf, in real time (see demo below).
  • Inspect raw sensor streams in the MOLA visualizer.

Supported message types

ROS 1 message type MOLA / MRPT observation
sensor_msgs/Imu CObservationIMU
sensor_msgs/Image CObservationImage (mono8, mono16, rgb8, bgr8, rgba8, bgra8, bayer_rggb8, bayer_bggr8, bayer_gbrg8, bayer_grbg8)
sensor_msgs/CompressedImage CObservationImage (JPEG, PNG, BMP, TGA, GIF, PSD, HDR, PNM)
sensor_msgs/PointCloud2 CObservationPointCloud (XYZ / XYZI / XYZIRT) or CObservationRotatingScan
livox_ros_driver/CustomMsg, livox_ros_driver2/CustomMsg CObservationPointCloud (XYZIRT: intensity=reflectivity, ring=line, time=offset_time)
sensor_msgs/LaserScan CObservation2DRangeScan
sensor_msgs/NavSatFix CObservationGPS
nav_msgs/Odometry CObservationOdometry (planar; see note below)
geometry_msgs/PoseStamped, geometry_msgs/PoseWithCovarianceStamped CObservationRobotPose (full SE(3) + 6x6 covariance)
tf2_msgs/TFMessage (/tf, /tf_static) transform tree (sensor pose lookup)

CObservationOdometry is a planar type: it holds only (x, y, yaw) and a 2D twist (vx, vy, wz). For a 3D odometry source – a legged robot, a VIO, an aerial platform – that discards z, roll, pitch and the covariance the source publishes. To keep them, ask for the SE(3) type explicitly:

sensors:
  - topic: /state_estimator/odometry
    sensorLabel: odom
    type: CObservationRobotPose   # instead of the automatic CObservationOdometry

The automatic mapping is unchanged, so existing configurations keep the planar behavior. A source that publishes an all-zero covariance is given a default of 10 cm / 2 deg rather than being read as an exact measurement.

Topics with no known mapping are ignored (a one-time warning is logged).

Sensor poses and /tf

The pose of each sensor in the robot body frame is looked up from the bag’s /tf and /tf_static tree, as the transform base_link_frame_id -> <message frame_id>.

  • Set base_link_frame_id to the name of your robot body frame. Note that many ROS 1 bags use namespaced frames (e.g. r1/base_link instead of base_link).
  • If the relevant transform is not yet available when a message is read (e.g. the first few messages before any /tf), that single observation is dropped and a throttled warning lists the currently known tf frames, which is handy for discovering the correct base_link_frame_id.
  • If your bag has no /tf, override the pose per sensor with fixed_sensor_pose (see the example in rosbag1_lidar.yaml).

Parameters

Param Required Default Description
rosbag_filename yes - Path to the input .bag file, or a YAML sequence of paths to merge and replay jointly in time order (e.g. a sensors bag plus a separate ground-truth-only bag).
base_link_frame_id no base_link Robot body frame for tf pose lookup.
time_warp_scale no 1.0 Playback speed multiplier.
read_ahead_length no 15 Number of messages pre-read ahead.
start_paused no false Start playback paused.
sensors no auto Explicit list of topics, types, and pose overrides. If omitted, all topics with a known mapping are exposed automatically using the topic name as sensorLabel.
ground_truth_topic no - Topic (geometry_msgs/PoseStamped or nav_msgs/Odometry) pre-scanned at start-up into a full trajectory, exposed via the mola::OfflineDatasetSource ground-truth API (hasGroundTruthTrajectory() / getGroundTruthTrajectory()), e.g. for evo-style evaluation. This is independent from (and can be combined with) listing the same topic under sensors for normal per-timestep publishing as a CObservationRobotPose/CObservationOdometry.

See mola-cli-launchs/rosbag1_lidar.yaml for a fully documented sensors example, and mola-cli-launchs/rosbag1_botanicgarden.yaml for an example combining multiple input bags with ground_truth_topic.

Demos

Two ready-to-use mola-cli launch files are provided under mola-cli-launchs/.

1. Visualize raw LiDAR streams

File truncated at 100 lines see the full file

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

mola_input_rosbag1 repository

mola_input_rosbag1

ROS Distro
humble

Repository Summary

Checkout URI https://github.com/MOLAorg/mola_input_rosbag1.git
VCS Type git
VCS Version develop
Last Updated 2026-09-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
mola_input_rosbag1 0.5.0

README

mola_input_rosbag1

Distro Build dev Builds Stable release
ROS 2 Humble (u22.04) Build Status Build Status
Build Status
Version
ROS 2 Jazzy (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Kilted (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Lyrical (u26.04) Build Status Build Status
Build Status
Version
ROS 2 Rolling (u26.04) Build Status Build Status
Build Status
Version

In the “Builds” column, the top badge is for amd64 and the bottom one for arm64.

A MOLA RawDataSource module that reads ROS 1 .bag files and exposes their contents as MOLA observations, without requiring a ROS 1 installation.

The ROS 1 bag (de)serialization, message definitions, and rosbag_storage reader are vendored inside this package (see the ros1/ and mrpt_ros_bridge/ subdirectories), so the module builds and runs in a pure ROS 2 (or even non-ROS) colcon workspace.

Typical uses:

  • Feed a legacy ROS 1 dataset into MOLA LiDAR Odometry or any other MOLA consumer.
  • Turn MOLA into a ROS 1 -> ROS 2 bridge: read a .bag and re-publish its streams as ROS 2 topics + /tf, in real time (see demo below).
  • Inspect raw sensor streams in the MOLA visualizer.

Supported message types

ROS 1 message type MOLA / MRPT observation
sensor_msgs/Imu CObservationIMU
sensor_msgs/Image CObservationImage (mono8, mono16, rgb8, bgr8, rgba8, bgra8, bayer_rggb8, bayer_bggr8, bayer_gbrg8, bayer_grbg8)
sensor_msgs/CompressedImage CObservationImage (JPEG, PNG, BMP, TGA, GIF, PSD, HDR, PNM)
sensor_msgs/PointCloud2 CObservationPointCloud (XYZ / XYZI / XYZIRT) or CObservationRotatingScan
livox_ros_driver/CustomMsg, livox_ros_driver2/CustomMsg CObservationPointCloud (XYZIRT: intensity=reflectivity, ring=line, time=offset_time)
sensor_msgs/LaserScan CObservation2DRangeScan
sensor_msgs/NavSatFix CObservationGPS
nav_msgs/Odometry CObservationOdometry (planar; see note below)
geometry_msgs/PoseStamped, geometry_msgs/PoseWithCovarianceStamped CObservationRobotPose (full SE(3) + 6x6 covariance)
tf2_msgs/TFMessage (/tf, /tf_static) transform tree (sensor pose lookup)

CObservationOdometry is a planar type: it holds only (x, y, yaw) and a 2D twist (vx, vy, wz). For a 3D odometry source – a legged robot, a VIO, an aerial platform – that discards z, roll, pitch and the covariance the source publishes. To keep them, ask for the SE(3) type explicitly:

sensors:
  - topic: /state_estimator/odometry
    sensorLabel: odom
    type: CObservationRobotPose   # instead of the automatic CObservationOdometry

The automatic mapping is unchanged, so existing configurations keep the planar behavior. A source that publishes an all-zero covariance is given a default of 10 cm / 2 deg rather than being read as an exact measurement.

Topics with no known mapping are ignored (a one-time warning is logged).

Sensor poses and /tf

The pose of each sensor in the robot body frame is looked up from the bag’s /tf and /tf_static tree, as the transform base_link_frame_id -> <message frame_id>.

  • Set base_link_frame_id to the name of your robot body frame. Note that many ROS 1 bags use namespaced frames (e.g. r1/base_link instead of base_link).
  • If the relevant transform is not yet available when a message is read (e.g. the first few messages before any /tf), that single observation is dropped and a throttled warning lists the currently known tf frames, which is handy for discovering the correct base_link_frame_id.
  • If your bag has no /tf, override the pose per sensor with fixed_sensor_pose (see the example in rosbag1_lidar.yaml).

Parameters

Param Required Default Description
rosbag_filename yes - Path to the input .bag file, or a YAML sequence of paths to merge and replay jointly in time order (e.g. a sensors bag plus a separate ground-truth-only bag).
base_link_frame_id no base_link Robot body frame for tf pose lookup.
time_warp_scale no 1.0 Playback speed multiplier.
read_ahead_length no 15 Number of messages pre-read ahead.
start_paused no false Start playback paused.
sensors no auto Explicit list of topics, types, and pose overrides. If omitted, all topics with a known mapping are exposed automatically using the topic name as sensorLabel.
ground_truth_topic no - Topic (geometry_msgs/PoseStamped or nav_msgs/Odometry) pre-scanned at start-up into a full trajectory, exposed via the mola::OfflineDatasetSource ground-truth API (hasGroundTruthTrajectory() / getGroundTruthTrajectory()), e.g. for evo-style evaluation. This is independent from (and can be combined with) listing the same topic under sensors for normal per-timestep publishing as a CObservationRobotPose/CObservationOdometry.

See mola-cli-launchs/rosbag1_lidar.yaml for a fully documented sensors example, and mola-cli-launchs/rosbag1_botanicgarden.yaml for an example combining multiple input bags with ground_truth_topic.

Demos

Two ready-to-use mola-cli launch files are provided under mola-cli-launchs/.

1. Visualize raw LiDAR streams

File truncated at 100 lines see the full file

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

mola_input_rosbag1 repository

mola_input_rosbag1

ROS Distro
humble

Repository Summary

Checkout URI https://github.com/MOLAorg/mola_input_rosbag1.git
VCS Type git
VCS Version develop
Last Updated 2026-09-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
mola_input_rosbag1 0.5.0

README

mola_input_rosbag1

Distro Build dev Builds Stable release
ROS 2 Humble (u22.04) Build Status Build Status
Build Status
Version
ROS 2 Jazzy (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Kilted (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Lyrical (u26.04) Build Status Build Status
Build Status
Version
ROS 2 Rolling (u26.04) Build Status Build Status
Build Status
Version

In the “Builds” column, the top badge is for amd64 and the bottom one for arm64.

A MOLA RawDataSource module that reads ROS 1 .bag files and exposes their contents as MOLA observations, without requiring a ROS 1 installation.

The ROS 1 bag (de)serialization, message definitions, and rosbag_storage reader are vendored inside this package (see the ros1/ and mrpt_ros_bridge/ subdirectories), so the module builds and runs in a pure ROS 2 (or even non-ROS) colcon workspace.

Typical uses:

  • Feed a legacy ROS 1 dataset into MOLA LiDAR Odometry or any other MOLA consumer.
  • Turn MOLA into a ROS 1 -> ROS 2 bridge: read a .bag and re-publish its streams as ROS 2 topics + /tf, in real time (see demo below).
  • Inspect raw sensor streams in the MOLA visualizer.

Supported message types

ROS 1 message type MOLA / MRPT observation
sensor_msgs/Imu CObservationIMU
sensor_msgs/Image CObservationImage (mono8, mono16, rgb8, bgr8, rgba8, bgra8, bayer_rggb8, bayer_bggr8, bayer_gbrg8, bayer_grbg8)
sensor_msgs/CompressedImage CObservationImage (JPEG, PNG, BMP, TGA, GIF, PSD, HDR, PNM)
sensor_msgs/PointCloud2 CObservationPointCloud (XYZ / XYZI / XYZIRT) or CObservationRotatingScan
livox_ros_driver/CustomMsg, livox_ros_driver2/CustomMsg CObservationPointCloud (XYZIRT: intensity=reflectivity, ring=line, time=offset_time)
sensor_msgs/LaserScan CObservation2DRangeScan
sensor_msgs/NavSatFix CObservationGPS
nav_msgs/Odometry CObservationOdometry (planar; see note below)
geometry_msgs/PoseStamped, geometry_msgs/PoseWithCovarianceStamped CObservationRobotPose (full SE(3) + 6x6 covariance)
tf2_msgs/TFMessage (/tf, /tf_static) transform tree (sensor pose lookup)

CObservationOdometry is a planar type: it holds only (x, y, yaw) and a 2D twist (vx, vy, wz). For a 3D odometry source – a legged robot, a VIO, an aerial platform – that discards z, roll, pitch and the covariance the source publishes. To keep them, ask for the SE(3) type explicitly:

sensors:
  - topic: /state_estimator/odometry
    sensorLabel: odom
    type: CObservationRobotPose   # instead of the automatic CObservationOdometry

The automatic mapping is unchanged, so existing configurations keep the planar behavior. A source that publishes an all-zero covariance is given a default of 10 cm / 2 deg rather than being read as an exact measurement.

Topics with no known mapping are ignored (a one-time warning is logged).

Sensor poses and /tf

The pose of each sensor in the robot body frame is looked up from the bag’s /tf and /tf_static tree, as the transform base_link_frame_id -> <message frame_id>.

  • Set base_link_frame_id to the name of your robot body frame. Note that many ROS 1 bags use namespaced frames (e.g. r1/base_link instead of base_link).
  • If the relevant transform is not yet available when a message is read (e.g. the first few messages before any /tf), that single observation is dropped and a throttled warning lists the currently known tf frames, which is handy for discovering the correct base_link_frame_id.
  • If your bag has no /tf, override the pose per sensor with fixed_sensor_pose (see the example in rosbag1_lidar.yaml).

Parameters

Param Required Default Description
rosbag_filename yes - Path to the input .bag file, or a YAML sequence of paths to merge and replay jointly in time order (e.g. a sensors bag plus a separate ground-truth-only bag).
base_link_frame_id no base_link Robot body frame for tf pose lookup.
time_warp_scale no 1.0 Playback speed multiplier.
read_ahead_length no 15 Number of messages pre-read ahead.
start_paused no false Start playback paused.
sensors no auto Explicit list of topics, types, and pose overrides. If omitted, all topics with a known mapping are exposed automatically using the topic name as sensorLabel.
ground_truth_topic no - Topic (geometry_msgs/PoseStamped or nav_msgs/Odometry) pre-scanned at start-up into a full trajectory, exposed via the mola::OfflineDatasetSource ground-truth API (hasGroundTruthTrajectory() / getGroundTruthTrajectory()), e.g. for evo-style evaluation. This is independent from (and can be combined with) listing the same topic under sensors for normal per-timestep publishing as a CObservationRobotPose/CObservationOdometry.

See mola-cli-launchs/rosbag1_lidar.yaml for a fully documented sensors example, and mola-cli-launchs/rosbag1_botanicgarden.yaml for an example combining multiple input bags with ground_truth_topic.

Demos

Two ready-to-use mola-cli launch files are provided under mola-cli-launchs/.

1. Visualize raw LiDAR streams

File truncated at 100 lines see the full file

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

mola_input_rosbag1 repository

mola_input_rosbag1

ROS Distro
humble

Repository Summary

Checkout URI https://github.com/MOLAorg/mola_input_rosbag1.git
VCS Type git
VCS Version develop
Last Updated 2026-09-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
mola_input_rosbag1 0.5.0

README

mola_input_rosbag1

Distro Build dev Builds Stable release
ROS 2 Humble (u22.04) Build Status Build Status
Build Status
Version
ROS 2 Jazzy (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Kilted (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Lyrical (u26.04) Build Status Build Status
Build Status
Version
ROS 2 Rolling (u26.04) Build Status Build Status
Build Status
Version

In the “Builds” column, the top badge is for amd64 and the bottom one for arm64.

A MOLA RawDataSource module that reads ROS 1 .bag files and exposes their contents as MOLA observations, without requiring a ROS 1 installation.

The ROS 1 bag (de)serialization, message definitions, and rosbag_storage reader are vendored inside this package (see the ros1/ and mrpt_ros_bridge/ subdirectories), so the module builds and runs in a pure ROS 2 (or even non-ROS) colcon workspace.

Typical uses:

  • Feed a legacy ROS 1 dataset into MOLA LiDAR Odometry or any other MOLA consumer.
  • Turn MOLA into a ROS 1 -> ROS 2 bridge: read a .bag and re-publish its streams as ROS 2 topics + /tf, in real time (see demo below).
  • Inspect raw sensor streams in the MOLA visualizer.

Supported message types

ROS 1 message type MOLA / MRPT observation
sensor_msgs/Imu CObservationIMU
sensor_msgs/Image CObservationImage (mono8, mono16, rgb8, bgr8, rgba8, bgra8, bayer_rggb8, bayer_bggr8, bayer_gbrg8, bayer_grbg8)
sensor_msgs/CompressedImage CObservationImage (JPEG, PNG, BMP, TGA, GIF, PSD, HDR, PNM)
sensor_msgs/PointCloud2 CObservationPointCloud (XYZ / XYZI / XYZIRT) or CObservationRotatingScan
livox_ros_driver/CustomMsg, livox_ros_driver2/CustomMsg CObservationPointCloud (XYZIRT: intensity=reflectivity, ring=line, time=offset_time)
sensor_msgs/LaserScan CObservation2DRangeScan
sensor_msgs/NavSatFix CObservationGPS
nav_msgs/Odometry CObservationOdometry (planar; see note below)
geometry_msgs/PoseStamped, geometry_msgs/PoseWithCovarianceStamped CObservationRobotPose (full SE(3) + 6x6 covariance)
tf2_msgs/TFMessage (/tf, /tf_static) transform tree (sensor pose lookup)

CObservationOdometry is a planar type: it holds only (x, y, yaw) and a 2D twist (vx, vy, wz). For a 3D odometry source – a legged robot, a VIO, an aerial platform – that discards z, roll, pitch and the covariance the source publishes. To keep them, ask for the SE(3) type explicitly:

sensors:
  - topic: /state_estimator/odometry
    sensorLabel: odom
    type: CObservationRobotPose   # instead of the automatic CObservationOdometry

The automatic mapping is unchanged, so existing configurations keep the planar behavior. A source that publishes an all-zero covariance is given a default of 10 cm / 2 deg rather than being read as an exact measurement.

Topics with no known mapping are ignored (a one-time warning is logged).

Sensor poses and /tf

The pose of each sensor in the robot body frame is looked up from the bag’s /tf and /tf_static tree, as the transform base_link_frame_id -> <message frame_id>.

  • Set base_link_frame_id to the name of your robot body frame. Note that many ROS 1 bags use namespaced frames (e.g. r1/base_link instead of base_link).
  • If the relevant transform is not yet available when a message is read (e.g. the first few messages before any /tf), that single observation is dropped and a throttled warning lists the currently known tf frames, which is handy for discovering the correct base_link_frame_id.
  • If your bag has no /tf, override the pose per sensor with fixed_sensor_pose (see the example in rosbag1_lidar.yaml).

Parameters

Param Required Default Description
rosbag_filename yes - Path to the input .bag file, or a YAML sequence of paths to merge and replay jointly in time order (e.g. a sensors bag plus a separate ground-truth-only bag).
base_link_frame_id no base_link Robot body frame for tf pose lookup.
time_warp_scale no 1.0 Playback speed multiplier.
read_ahead_length no 15 Number of messages pre-read ahead.
start_paused no false Start playback paused.
sensors no auto Explicit list of topics, types, and pose overrides. If omitted, all topics with a known mapping are exposed automatically using the topic name as sensorLabel.
ground_truth_topic no - Topic (geometry_msgs/PoseStamped or nav_msgs/Odometry) pre-scanned at start-up into a full trajectory, exposed via the mola::OfflineDatasetSource ground-truth API (hasGroundTruthTrajectory() / getGroundTruthTrajectory()), e.g. for evo-style evaluation. This is independent from (and can be combined with) listing the same topic under sensors for normal per-timestep publishing as a CObservationRobotPose/CObservationOdometry.

See mola-cli-launchs/rosbag1_lidar.yaml for a fully documented sensors example, and mola-cli-launchs/rosbag1_botanicgarden.yaml for an example combining multiple input bags with ground_truth_topic.

Demos

Two ready-to-use mola-cli launch files are provided under mola-cli-launchs/.

1. Visualize raw LiDAR streams

File truncated at 100 lines see the full file

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

mola_input_rosbag1 repository

mola_input_rosbag1

ROS Distro
humble

Repository Summary

Checkout URI https://github.com/MOLAorg/mola_input_rosbag1.git
VCS Type git
VCS Version develop
Last Updated 2026-09-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
mola_input_rosbag1 0.5.0

README

mola_input_rosbag1

Distro Build dev Builds Stable release
ROS 2 Humble (u22.04) Build Status Build Status
Build Status
Version
ROS 2 Jazzy (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Kilted (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Lyrical (u26.04) Build Status Build Status
Build Status
Version
ROS 2 Rolling (u26.04) Build Status Build Status
Build Status
Version

In the “Builds” column, the top badge is for amd64 and the bottom one for arm64.

A MOLA RawDataSource module that reads ROS 1 .bag files and exposes their contents as MOLA observations, without requiring a ROS 1 installation.

The ROS 1 bag (de)serialization, message definitions, and rosbag_storage reader are vendored inside this package (see the ros1/ and mrpt_ros_bridge/ subdirectories), so the module builds and runs in a pure ROS 2 (or even non-ROS) colcon workspace.

Typical uses:

  • Feed a legacy ROS 1 dataset into MOLA LiDAR Odometry or any other MOLA consumer.
  • Turn MOLA into a ROS 1 -> ROS 2 bridge: read a .bag and re-publish its streams as ROS 2 topics + /tf, in real time (see demo below).
  • Inspect raw sensor streams in the MOLA visualizer.

Supported message types

ROS 1 message type MOLA / MRPT observation
sensor_msgs/Imu CObservationIMU
sensor_msgs/Image CObservationImage (mono8, mono16, rgb8, bgr8, rgba8, bgra8, bayer_rggb8, bayer_bggr8, bayer_gbrg8, bayer_grbg8)
sensor_msgs/CompressedImage CObservationImage (JPEG, PNG, BMP, TGA, GIF, PSD, HDR, PNM)
sensor_msgs/PointCloud2 CObservationPointCloud (XYZ / XYZI / XYZIRT) or CObservationRotatingScan
livox_ros_driver/CustomMsg, livox_ros_driver2/CustomMsg CObservationPointCloud (XYZIRT: intensity=reflectivity, ring=line, time=offset_time)
sensor_msgs/LaserScan CObservation2DRangeScan
sensor_msgs/NavSatFix CObservationGPS
nav_msgs/Odometry CObservationOdometry (planar; see note below)
geometry_msgs/PoseStamped, geometry_msgs/PoseWithCovarianceStamped CObservationRobotPose (full SE(3) + 6x6 covariance)
tf2_msgs/TFMessage (/tf, /tf_static) transform tree (sensor pose lookup)

CObservationOdometry is a planar type: it holds only (x, y, yaw) and a 2D twist (vx, vy, wz). For a 3D odometry source – a legged robot, a VIO, an aerial platform – that discards z, roll, pitch and the covariance the source publishes. To keep them, ask for the SE(3) type explicitly:

sensors:
  - topic: /state_estimator/odometry
    sensorLabel: odom
    type: CObservationRobotPose   # instead of the automatic CObservationOdometry

The automatic mapping is unchanged, so existing configurations keep the planar behavior. A source that publishes an all-zero covariance is given a default of 10 cm / 2 deg rather than being read as an exact measurement.

Topics with no known mapping are ignored (a one-time warning is logged).

Sensor poses and /tf

The pose of each sensor in the robot body frame is looked up from the bag’s /tf and /tf_static tree, as the transform base_link_frame_id -> <message frame_id>.

  • Set base_link_frame_id to the name of your robot body frame. Note that many ROS 1 bags use namespaced frames (e.g. r1/base_link instead of base_link).
  • If the relevant transform is not yet available when a message is read (e.g. the first few messages before any /tf), that single observation is dropped and a throttled warning lists the currently known tf frames, which is handy for discovering the correct base_link_frame_id.
  • If your bag has no /tf, override the pose per sensor with fixed_sensor_pose (see the example in rosbag1_lidar.yaml).

Parameters

Param Required Default Description
rosbag_filename yes - Path to the input .bag file, or a YAML sequence of paths to merge and replay jointly in time order (e.g. a sensors bag plus a separate ground-truth-only bag).
base_link_frame_id no base_link Robot body frame for tf pose lookup.
time_warp_scale no 1.0 Playback speed multiplier.
read_ahead_length no 15 Number of messages pre-read ahead.
start_paused no false Start playback paused.
sensors no auto Explicit list of topics, types, and pose overrides. If omitted, all topics with a known mapping are exposed automatically using the topic name as sensorLabel.
ground_truth_topic no - Topic (geometry_msgs/PoseStamped or nav_msgs/Odometry) pre-scanned at start-up into a full trajectory, exposed via the mola::OfflineDatasetSource ground-truth API (hasGroundTruthTrajectory() / getGroundTruthTrajectory()), e.g. for evo-style evaluation. This is independent from (and can be combined with) listing the same topic under sensors for normal per-timestep publishing as a CObservationRobotPose/CObservationOdometry.

See mola-cli-launchs/rosbag1_lidar.yaml for a fully documented sensors example, and mola-cli-launchs/rosbag1_botanicgarden.yaml for an example combining multiple input bags with ground_truth_topic.

Demos

Two ready-to-use mola-cli launch files are provided under mola-cli-launchs/.

1. Visualize raw LiDAR streams

File truncated at 100 lines see the full file

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

mola_input_rosbag1 repository

mola_input_rosbag1

ROS Distro
humble

Repository Summary

Checkout URI https://github.com/MOLAorg/mola_input_rosbag1.git
VCS Type git
VCS Version develop
Last Updated 2026-09-28
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
mola_input_rosbag1 0.5.0

README

mola_input_rosbag1

Distro Build dev Builds Stable release
ROS 2 Humble (u22.04) Build Status Build Status
Build Status
Version
ROS 2 Jazzy (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Kilted (u24.04) Build Status Build Status
Build Status
Version
ROS 2 Lyrical (u26.04) Build Status Build Status
Build Status
Version
ROS 2 Rolling (u26.04) Build Status Build Status
Build Status
Version

In the “Builds” column, the top badge is for amd64 and the bottom one for arm64.

A MOLA RawDataSource module that reads ROS 1 .bag files and exposes their contents as MOLA observations, without requiring a ROS 1 installation.

The ROS 1 bag (de)serialization, message definitions, and rosbag_storage reader are vendored inside this package (see the ros1/ and mrpt_ros_bridge/ subdirectories), so the module builds and runs in a pure ROS 2 (or even non-ROS) colcon workspace.

Typical uses:

  • Feed a legacy ROS 1 dataset into MOLA LiDAR Odometry or any other MOLA consumer.
  • Turn MOLA into a ROS 1 -> ROS 2 bridge: read a .bag and re-publish its streams as ROS 2 topics + /tf, in real time (see demo below).
  • Inspect raw sensor streams in the MOLA visualizer.

Supported message types

ROS 1 message type MOLA / MRPT observation
sensor_msgs/Imu CObservationIMU
sensor_msgs/Image CObservationImage (mono8, mono16, rgb8, bgr8, rgba8, bgra8, bayer_rggb8, bayer_bggr8, bayer_gbrg8, bayer_grbg8)
sensor_msgs/CompressedImage CObservationImage (JPEG, PNG, BMP, TGA, GIF, PSD, HDR, PNM)
sensor_msgs/PointCloud2 CObservationPointCloud (XYZ / XYZI / XYZIRT) or CObservationRotatingScan
livox_ros_driver/CustomMsg, livox_ros_driver2/CustomMsg CObservationPointCloud (XYZIRT: intensity=reflectivity, ring=line, time=offset_time)
sensor_msgs/LaserScan CObservation2DRangeScan
sensor_msgs/NavSatFix CObservationGPS
nav_msgs/Odometry CObservationOdometry (planar; see note below)
geometry_msgs/PoseStamped, geometry_msgs/PoseWithCovarianceStamped CObservationRobotPose (full SE(3) + 6x6 covariance)
tf2_msgs/TFMessage (/tf, /tf_static) transform tree (sensor pose lookup)

CObservationOdometry is a planar type: it holds only (x, y, yaw) and a 2D twist (vx, vy, wz). For a 3D odometry source – a legged robot, a VIO, an aerial platform – that discards z, roll, pitch and the covariance the source publishes. To keep them, ask for the SE(3) type explicitly:

sensors:
  - topic: /state_estimator/odometry
    sensorLabel: odom
    type: CObservationRobotPose   # instead of the automatic CObservationOdometry

The automatic mapping is unchanged, so existing configurations keep the planar behavior. A source that publishes an all-zero covariance is given a default of 10 cm / 2 deg rather than being read as an exact measurement.

Topics with no known mapping are ignored (a one-time warning is logged).

Sensor poses and /tf

The pose of each sensor in the robot body frame is looked up from the bag’s /tf and /tf_static tree, as the transform base_link_frame_id -> <message frame_id>.

  • Set base_link_frame_id to the name of your robot body frame. Note that many ROS 1 bags use namespaced frames (e.g. r1/base_link instead of base_link).
  • If the relevant transform is not yet available when a message is read (e.g. the first few messages before any /tf), that single observation is dropped and a throttled warning lists the currently known tf frames, which is handy for discovering the correct base_link_frame_id.
  • If your bag has no /tf, override the pose per sensor with fixed_sensor_pose (see the example in rosbag1_lidar.yaml).

Parameters

Param Required Default Description
rosbag_filename yes - Path to the input .bag file, or a YAML sequence of paths to merge and replay jointly in time order (e.g. a sensors bag plus a separate ground-truth-only bag).
base_link_frame_id no base_link Robot body frame for tf pose lookup.
time_warp_scale no 1.0 Playback speed multiplier.
read_ahead_length no 15 Number of messages pre-read ahead.
start_paused no false Start playback paused.
sensors no auto Explicit list of topics, types, and pose overrides. If omitted, all topics with a known mapping are exposed automatically using the topic name as sensorLabel.
ground_truth_topic no - Topic (geometry_msgs/PoseStamped or nav_msgs/Odometry) pre-scanned at start-up into a full trajectory, exposed via the mola::OfflineDatasetSource ground-truth API (hasGroundTruthTrajectory() / getGroundTruthTrajectory()), e.g. for evo-style evaluation. This is independent from (and can be combined with) listing the same topic under sensors for normal per-timestep publishing as a CObservationRobotPose/CObservationOdometry.

See mola-cli-launchs/rosbag1_lidar.yaml for a fully documented sensors example, and mola-cli-launchs/rosbag1_botanicgarden.yaml for an example combining multiple input bags with ground_truth_topic.

Demos

Two ready-to-use mola-cli launch files are provided under mola-cli-launchs/.

1. Visualize raw LiDAR streams

File truncated at 100 lines see the full file