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-06-21
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
mola_input_rosbag1 0.2.0

README

mola_input_rosbag1

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

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, and any format supported by OpenCV imdecode)
sensor_msgs/PointCloud2 CObservationPointCloud (XYZ / XYZI / XYZIRT) or CObservationRotatingScan
sensor_msgs/LaserScan CObservation2DRangeScan
sensor_msgs/NavSatFix CObservationGPS
nav_msgs/Odometry CObservationOdometry
tf2_msgs/TFMessage (/tf, /tf_static) transform tree (sensor pose lookup)

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

ROSBAG1_FILE=/path/to/dataset.bag \
  mola-cli src/mola_input_rosbag1/mola-cli-launchs/rosbag1_lidar.yaml

2. ROS 1 -> ROS 2 bridge

Example for the NTU Viral dataset:

ROSBAG1_FILE=/mnt/storage/ntu-viral/eee_01/eee_01.bag \
mola-cli \
  src/mola_input_rosbag1/mola-cli-launchs/rosbag1_ntu_viral.yaml \
  src/mola_input_rosbag1/mola-cli-launchs/publish_to_ros2.yam

Then, in another terminal with ROS 2 sourced:

```bash ros2 topic list

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-06-21
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
mola_input_rosbag1 0.2.0

README

mola_input_rosbag1

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

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, and any format supported by OpenCV imdecode)
sensor_msgs/PointCloud2 CObservationPointCloud (XYZ / XYZI / XYZIRT) or CObservationRotatingScan
sensor_msgs/LaserScan CObservation2DRangeScan
sensor_msgs/NavSatFix CObservationGPS
nav_msgs/Odometry CObservationOdometry
tf2_msgs/TFMessage (/tf, /tf_static) transform tree (sensor pose lookup)

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

ROSBAG1_FILE=/path/to/dataset.bag \
  mola-cli src/mola_input_rosbag1/mola-cli-launchs/rosbag1_lidar.yaml

2. ROS 1 -> ROS 2 bridge

Example for the NTU Viral dataset:

ROSBAG1_FILE=/mnt/storage/ntu-viral/eee_01/eee_01.bag \
mola-cli \
  src/mola_input_rosbag1/mola-cli-launchs/rosbag1_ntu_viral.yaml \
  src/mola_input_rosbag1/mola-cli-launchs/publish_to_ros2.yam

Then, in another terminal with ROS 2 sourced:

```bash ros2 topic list

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-06-21
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
mola_input_rosbag1 0.2.0

README

mola_input_rosbag1

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

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, and any format supported by OpenCV imdecode)
sensor_msgs/PointCloud2 CObservationPointCloud (XYZ / XYZI / XYZIRT) or CObservationRotatingScan
sensor_msgs/LaserScan CObservation2DRangeScan
sensor_msgs/NavSatFix CObservationGPS
nav_msgs/Odometry CObservationOdometry
tf2_msgs/TFMessage (/tf, /tf_static) transform tree (sensor pose lookup)

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

ROSBAG1_FILE=/path/to/dataset.bag \
  mola-cli src/mola_input_rosbag1/mola-cli-launchs/rosbag1_lidar.yaml

2. ROS 1 -> ROS 2 bridge

Example for the NTU Viral dataset:

ROSBAG1_FILE=/mnt/storage/ntu-viral/eee_01/eee_01.bag \
mola-cli \
  src/mola_input_rosbag1/mola-cli-launchs/rosbag1_ntu_viral.yaml \
  src/mola_input_rosbag1/mola-cli-launchs/publish_to_ros2.yam

Then, in another terminal with ROS 2 sourced:

```bash ros2 topic list

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-06-21
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
mola_input_rosbag1 0.2.0

README

mola_input_rosbag1

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

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, and any format supported by OpenCV imdecode)
sensor_msgs/PointCloud2 CObservationPointCloud (XYZ / XYZI / XYZIRT) or CObservationRotatingScan
sensor_msgs/LaserScan CObservation2DRangeScan
sensor_msgs/NavSatFix CObservationGPS
nav_msgs/Odometry CObservationOdometry
tf2_msgs/TFMessage (/tf, /tf_static) transform tree (sensor pose lookup)

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

ROSBAG1_FILE=/path/to/dataset.bag \
  mola-cli src/mola_input_rosbag1/mola-cli-launchs/rosbag1_lidar.yaml

2. ROS 1 -> ROS 2 bridge

Example for the NTU Viral dataset:

ROSBAG1_FILE=/mnt/storage/ntu-viral/eee_01/eee_01.bag \
mola-cli \
  src/mola_input_rosbag1/mola-cli-launchs/rosbag1_ntu_viral.yaml \
  src/mola_input_rosbag1/mola-cli-launchs/publish_to_ros2.yam

Then, in another terminal with ROS 2 sourced:

```bash ros2 topic list

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-06-21
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
mola_input_rosbag1 0.2.0

README

mola_input_rosbag1

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

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, and any format supported by OpenCV imdecode)
sensor_msgs/PointCloud2 CObservationPointCloud (XYZ / XYZI / XYZIRT) or CObservationRotatingScan
sensor_msgs/LaserScan CObservation2DRangeScan
sensor_msgs/NavSatFix CObservationGPS
nav_msgs/Odometry CObservationOdometry
tf2_msgs/TFMessage (/tf, /tf_static) transform tree (sensor pose lookup)

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

ROSBAG1_FILE=/path/to/dataset.bag \
  mola-cli src/mola_input_rosbag1/mola-cli-launchs/rosbag1_lidar.yaml

2. ROS 1 -> ROS 2 bridge

Example for the NTU Viral dataset:

ROSBAG1_FILE=/mnt/storage/ntu-viral/eee_01/eee_01.bag \
mola-cli \
  src/mola_input_rosbag1/mola-cli-launchs/rosbag1_ntu_viral.yaml \
  src/mola_input_rosbag1/mola-cli-launchs/publish_to_ros2.yam

Then, in another terminal with ROS 2 sourced:

```bash ros2 topic list

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-06-21
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
mola_input_rosbag1 0.2.0

README

mola_input_rosbag1

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

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, and any format supported by OpenCV imdecode)
sensor_msgs/PointCloud2 CObservationPointCloud (XYZ / XYZI / XYZIRT) or CObservationRotatingScan
sensor_msgs/LaserScan CObservation2DRangeScan
sensor_msgs/NavSatFix CObservationGPS
nav_msgs/Odometry CObservationOdometry
tf2_msgs/TFMessage (/tf, /tf_static) transform tree (sensor pose lookup)

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

ROSBAG1_FILE=/path/to/dataset.bag \
  mola-cli src/mola_input_rosbag1/mola-cli-launchs/rosbag1_lidar.yaml

2. ROS 1 -> ROS 2 bridge

Example for the NTU Viral dataset:

ROSBAG1_FILE=/mnt/storage/ntu-viral/eee_01/eee_01.bag \
mola-cli \
  src/mola_input_rosbag1/mola-cli-launchs/rosbag1_ntu_viral.yaml \
  src/mola_input_rosbag1/mola-cli-launchs/publish_to_ros2.yam

Then, in another terminal with ROS 2 sourced:

```bash ros2 topic list

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-06-21
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
mola_input_rosbag1 0.2.0

README

mola_input_rosbag1

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

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, and any format supported by OpenCV imdecode)
sensor_msgs/PointCloud2 CObservationPointCloud (XYZ / XYZI / XYZIRT) or CObservationRotatingScan
sensor_msgs/LaserScan CObservation2DRangeScan
sensor_msgs/NavSatFix CObservationGPS
nav_msgs/Odometry CObservationOdometry
tf2_msgs/TFMessage (/tf, /tf_static) transform tree (sensor pose lookup)

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

ROSBAG1_FILE=/path/to/dataset.bag \
  mola-cli src/mola_input_rosbag1/mola-cli-launchs/rosbag1_lidar.yaml

2. ROS 1 -> ROS 2 bridge

Example for the NTU Viral dataset:

ROSBAG1_FILE=/mnt/storage/ntu-viral/eee_01/eee_01.bag \
mola-cli \
  src/mola_input_rosbag1/mola-cli-launchs/rosbag1_ntu_viral.yaml \
  src/mola_input_rosbag1/mola-cli-launchs/publish_to_ros2.yam

Then, in another terminal with ROS 2 sourced:

```bash ros2 topic list

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-06-21
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
mola_input_rosbag1 0.2.0

README

mola_input_rosbag1

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

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, and any format supported by OpenCV imdecode)
sensor_msgs/PointCloud2 CObservationPointCloud (XYZ / XYZI / XYZIRT) or CObservationRotatingScan
sensor_msgs/LaserScan CObservation2DRangeScan
sensor_msgs/NavSatFix CObservationGPS
nav_msgs/Odometry CObservationOdometry
tf2_msgs/TFMessage (/tf, /tf_static) transform tree (sensor pose lookup)

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

ROSBAG1_FILE=/path/to/dataset.bag \
  mola-cli src/mola_input_rosbag1/mola-cli-launchs/rosbag1_lidar.yaml

2. ROS 1 -> ROS 2 bridge

Example for the NTU Viral dataset:

ROSBAG1_FILE=/mnt/storage/ntu-viral/eee_01/eee_01.bag \
mola-cli \
  src/mola_input_rosbag1/mola-cli-launchs/rosbag1_ntu_viral.yaml \
  src/mola_input_rosbag1/mola-cli-launchs/publish_to_ros2.yam

Then, in another terminal with ROS 2 sourced:

```bash ros2 topic list

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-06-21
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
mola_input_rosbag1 0.2.0

README

mola_input_rosbag1

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

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, and any format supported by OpenCV imdecode)
sensor_msgs/PointCloud2 CObservationPointCloud (XYZ / XYZI / XYZIRT) or CObservationRotatingScan
sensor_msgs/LaserScan CObservation2DRangeScan
sensor_msgs/NavSatFix CObservationGPS
nav_msgs/Odometry CObservationOdometry
tf2_msgs/TFMessage (/tf, /tf_static) transform tree (sensor pose lookup)

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

ROSBAG1_FILE=/path/to/dataset.bag \
  mola-cli src/mola_input_rosbag1/mola-cli-launchs/rosbag1_lidar.yaml

2. ROS 1 -> ROS 2 bridge

Example for the NTU Viral dataset:

ROSBAG1_FILE=/mnt/storage/ntu-viral/eee_01/eee_01.bag \
mola-cli \
  src/mola_input_rosbag1/mola-cli-launchs/rosbag1_ntu_viral.yaml \
  src/mola_input_rosbag1/mola-cli-launchs/publish_to_ros2.yam

Then, in another terminal with ROS 2 sourced:

```bash ros2 topic list

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-06-21
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
mola_input_rosbag1 0.2.0

README

mola_input_rosbag1

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

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, and any format supported by OpenCV imdecode)
sensor_msgs/PointCloud2 CObservationPointCloud (XYZ / XYZI / XYZIRT) or CObservationRotatingScan
sensor_msgs/LaserScan CObservation2DRangeScan
sensor_msgs/NavSatFix CObservationGPS
nav_msgs/Odometry CObservationOdometry
tf2_msgs/TFMessage (/tf, /tf_static) transform tree (sensor pose lookup)

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

ROSBAG1_FILE=/path/to/dataset.bag \
  mola-cli src/mola_input_rosbag1/mola-cli-launchs/rosbag1_lidar.yaml

2. ROS 1 -> ROS 2 bridge

Example for the NTU Viral dataset:

ROSBAG1_FILE=/mnt/storage/ntu-viral/eee_01/eee_01.bag \
mola-cli \
  src/mola_input_rosbag1/mola-cli-launchs/rosbag1_ntu_viral.yaml \
  src/mola_input_rosbag1/mola-cli-launchs/publish_to_ros2.yam

Then, in another terminal with ROS 2 sourced:

```bash ros2 topic list

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-06-21
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
mola_input_rosbag1 0.2.0

README

mola_input_rosbag1

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

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, and any format supported by OpenCV imdecode)
sensor_msgs/PointCloud2 CObservationPointCloud (XYZ / XYZI / XYZIRT) or CObservationRotatingScan
sensor_msgs/LaserScan CObservation2DRangeScan
sensor_msgs/NavSatFix CObservationGPS
nav_msgs/Odometry CObservationOdometry
tf2_msgs/TFMessage (/tf, /tf_static) transform tree (sensor pose lookup)

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

ROSBAG1_FILE=/path/to/dataset.bag \
  mola-cli src/mola_input_rosbag1/mola-cli-launchs/rosbag1_lidar.yaml

2. ROS 1 -> ROS 2 bridge

Example for the NTU Viral dataset:

ROSBAG1_FILE=/mnt/storage/ntu-viral/eee_01/eee_01.bag \
mola-cli \
  src/mola_input_rosbag1/mola-cli-launchs/rosbag1_ntu_viral.yaml \
  src/mola_input_rosbag1/mola-cli-launchs/publish_to_ros2.yam

Then, in another terminal with ROS 2 sourced:

```bash ros2 topic list

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-06-21
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
mola_input_rosbag1 0.2.0

README

mola_input_rosbag1

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

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, and any format supported by OpenCV imdecode)
sensor_msgs/PointCloud2 CObservationPointCloud (XYZ / XYZI / XYZIRT) or CObservationRotatingScan
sensor_msgs/LaserScan CObservation2DRangeScan
sensor_msgs/NavSatFix CObservationGPS
nav_msgs/Odometry CObservationOdometry
tf2_msgs/TFMessage (/tf, /tf_static) transform tree (sensor pose lookup)

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

ROSBAG1_FILE=/path/to/dataset.bag \
  mola-cli src/mola_input_rosbag1/mola-cli-launchs/rosbag1_lidar.yaml

2. ROS 1 -> ROS 2 bridge

Example for the NTU Viral dataset:

ROSBAG1_FILE=/mnt/storage/ntu-viral/eee_01/eee_01.bag \
mola-cli \
  src/mola_input_rosbag1/mola-cli-launchs/rosbag1_ntu_viral.yaml \
  src/mola_input_rosbag1/mola-cli-launchs/publish_to_ros2.yam

Then, in another terminal with ROS 2 sourced:

```bash ros2 topic list

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-06-21
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
mola_input_rosbag1 0.2.0

README

mola_input_rosbag1

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

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, and any format supported by OpenCV imdecode)
sensor_msgs/PointCloud2 CObservationPointCloud (XYZ / XYZI / XYZIRT) or CObservationRotatingScan
sensor_msgs/LaserScan CObservation2DRangeScan
sensor_msgs/NavSatFix CObservationGPS
nav_msgs/Odometry CObservationOdometry
tf2_msgs/TFMessage (/tf, /tf_static) transform tree (sensor pose lookup)

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

ROSBAG1_FILE=/path/to/dataset.bag \
  mola-cli src/mola_input_rosbag1/mola-cli-launchs/rosbag1_lidar.yaml

2. ROS 1 -> ROS 2 bridge

Example for the NTU Viral dataset:

ROSBAG1_FILE=/mnt/storage/ntu-viral/eee_01/eee_01.bag \
mola-cli \
  src/mola_input_rosbag1/mola-cli-launchs/rosbag1_ntu_viral.yaml \
  src/mola_input_rosbag1/mola-cli-launchs/publish_to_ros2.yam

Then, in another terminal with ROS 2 sourced:

```bash ros2 topic list

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-06-21
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
mola_input_rosbag1 0.2.0

README

mola_input_rosbag1

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

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, and any format supported by OpenCV imdecode)
sensor_msgs/PointCloud2 CObservationPointCloud (XYZ / XYZI / XYZIRT) or CObservationRotatingScan
sensor_msgs/LaserScan CObservation2DRangeScan
sensor_msgs/NavSatFix CObservationGPS
nav_msgs/Odometry CObservationOdometry
tf2_msgs/TFMessage (/tf, /tf_static) transform tree (sensor pose lookup)

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

ROSBAG1_FILE=/path/to/dataset.bag \
  mola-cli src/mola_input_rosbag1/mola-cli-launchs/rosbag1_lidar.yaml

2. ROS 1 -> ROS 2 bridge

Example for the NTU Viral dataset:

ROSBAG1_FILE=/mnt/storage/ntu-viral/eee_01/eee_01.bag \
mola-cli \
  src/mola_input_rosbag1/mola-cli-launchs/rosbag1_ntu_viral.yaml \
  src/mola_input_rosbag1/mola-cli-launchs/publish_to_ros2.yam

Then, in another terminal with ROS 2 sourced:

```bash ros2 topic list

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-06-21
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
mola_input_rosbag1 0.2.0

README

mola_input_rosbag1

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

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, and any format supported by OpenCV imdecode)
sensor_msgs/PointCloud2 CObservationPointCloud (XYZ / XYZI / XYZIRT) or CObservationRotatingScan
sensor_msgs/LaserScan CObservation2DRangeScan
sensor_msgs/NavSatFix CObservationGPS
nav_msgs/Odometry CObservationOdometry
tf2_msgs/TFMessage (/tf, /tf_static) transform tree (sensor pose lookup)

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

ROSBAG1_FILE=/path/to/dataset.bag \
  mola-cli src/mola_input_rosbag1/mola-cli-launchs/rosbag1_lidar.yaml

2. ROS 1 -> ROS 2 bridge

Example for the NTU Viral dataset:

ROSBAG1_FILE=/mnt/storage/ntu-viral/eee_01/eee_01.bag \
mola-cli \
  src/mola_input_rosbag1/mola-cli-launchs/rosbag1_ntu_viral.yaml \
  src/mola_input_rosbag1/mola-cli-launchs/publish_to_ros2.yam

Then, in another terminal with ROS 2 sourced:

```bash ros2 topic list

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-06-21
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
mola_input_rosbag1 0.2.0

README

mola_input_rosbag1

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

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, and any format supported by OpenCV imdecode)
sensor_msgs/PointCloud2 CObservationPointCloud (XYZ / XYZI / XYZIRT) or CObservationRotatingScan
sensor_msgs/LaserScan CObservation2DRangeScan
sensor_msgs/NavSatFix CObservationGPS
nav_msgs/Odometry CObservationOdometry
tf2_msgs/TFMessage (/tf, /tf_static) transform tree (sensor pose lookup)

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

ROSBAG1_FILE=/path/to/dataset.bag \
  mola-cli src/mola_input_rosbag1/mola-cli-launchs/rosbag1_lidar.yaml

2. ROS 1 -> ROS 2 bridge

Example for the NTU Viral dataset:

ROSBAG1_FILE=/mnt/storage/ntu-viral/eee_01/eee_01.bag \
mola-cli \
  src/mola_input_rosbag1/mola-cli-launchs/rosbag1_ntu_viral.yaml \
  src/mola_input_rosbag1/mola-cli-launchs/publish_to_ros2.yam

Then, in another terminal with ROS 2 sourced:

```bash ros2 topic list

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-06-21
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
mola_input_rosbag1 0.2.0

README

mola_input_rosbag1

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

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, and any format supported by OpenCV imdecode)
sensor_msgs/PointCloud2 CObservationPointCloud (XYZ / XYZI / XYZIRT) or CObservationRotatingScan
sensor_msgs/LaserScan CObservation2DRangeScan
sensor_msgs/NavSatFix CObservationGPS
nav_msgs/Odometry CObservationOdometry
tf2_msgs/TFMessage (/tf, /tf_static) transform tree (sensor pose lookup)

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

ROSBAG1_FILE=/path/to/dataset.bag \
  mola-cli src/mola_input_rosbag1/mola-cli-launchs/rosbag1_lidar.yaml

2. ROS 1 -> ROS 2 bridge

Example for the NTU Viral dataset:

ROSBAG1_FILE=/mnt/storage/ntu-viral/eee_01/eee_01.bag \
mola-cli \
  src/mola_input_rosbag1/mola-cli-launchs/rosbag1_ntu_viral.yaml \
  src/mola_input_rosbag1/mola-cli-launchs/publish_to_ros2.yam

Then, in another terminal with ROS 2 sourced:

```bash ros2 topic list

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-06-21
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
mola_input_rosbag1 0.2.0

README

mola_input_rosbag1

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

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, and any format supported by OpenCV imdecode)
sensor_msgs/PointCloud2 CObservationPointCloud (XYZ / XYZI / XYZIRT) or CObservationRotatingScan
sensor_msgs/LaserScan CObservation2DRangeScan
sensor_msgs/NavSatFix CObservationGPS
nav_msgs/Odometry CObservationOdometry
tf2_msgs/TFMessage (/tf, /tf_static) transform tree (sensor pose lookup)

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

ROSBAG1_FILE=/path/to/dataset.bag \
  mola-cli src/mola_input_rosbag1/mola-cli-launchs/rosbag1_lidar.yaml

2. ROS 1 -> ROS 2 bridge

Example for the NTU Viral dataset:

ROSBAG1_FILE=/mnt/storage/ntu-viral/eee_01/eee_01.bag \
mola-cli \
  src/mola_input_rosbag1/mola-cli-launchs/rosbag1_ntu_viral.yaml \
  src/mola_input_rosbag1/mola-cli-launchs/publish_to_ros2.yam

Then, in another terminal with ROS 2 sourced:

```bash ros2 topic list

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-06-21
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
mola_input_rosbag1 0.2.0

README

mola_input_rosbag1

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

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, and any format supported by OpenCV imdecode)
sensor_msgs/PointCloud2 CObservationPointCloud (XYZ / XYZI / XYZIRT) or CObservationRotatingScan
sensor_msgs/LaserScan CObservation2DRangeScan
sensor_msgs/NavSatFix CObservationGPS
nav_msgs/Odometry CObservationOdometry
tf2_msgs/TFMessage (/tf, /tf_static) transform tree (sensor pose lookup)

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

ROSBAG1_FILE=/path/to/dataset.bag \
  mola-cli src/mola_input_rosbag1/mola-cli-launchs/rosbag1_lidar.yaml

2. ROS 1 -> ROS 2 bridge

Example for the NTU Viral dataset:

ROSBAG1_FILE=/mnt/storage/ntu-viral/eee_01/eee_01.bag \
mola-cli \
  src/mola_input_rosbag1/mola-cli-launchs/rosbag1_ntu_viral.yaml \
  src/mola_input_rosbag1/mola-cli-launchs/publish_to_ros2.yam

Then, in another terminal with ROS 2 sourced:

```bash ros2 topic list

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-06-21
Dev Status DEVELOPED
Released RELEASED
Contributing Help Wanted (-)
Good First Issues (-)
Pull Requests to Review (-)

Packages

Name Version
mola_input_rosbag1 0.2.0

README

mola_input_rosbag1

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

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, and any format supported by OpenCV imdecode)
sensor_msgs/PointCloud2 CObservationPointCloud (XYZ / XYZI / XYZIRT) or CObservationRotatingScan
sensor_msgs/LaserScan CObservation2DRangeScan
sensor_msgs/NavSatFix CObservationGPS
nav_msgs/Odometry CObservationOdometry
tf2_msgs/TFMessage (/tf, /tf_static) transform tree (sensor pose lookup)

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

ROSBAG1_FILE=/path/to/dataset.bag \
  mola-cli src/mola_input_rosbag1/mola-cli-launchs/rosbag1_lidar.yaml

2. ROS 1 -> ROS 2 bridge

Example for the NTU Viral dataset:

ROSBAG1_FILE=/mnt/storage/ntu-viral/eee_01/eee_01.bag \
mola-cli \
  src/mola_input_rosbag1/mola-cli-launchs/rosbag1_ntu_viral.yaml \
  src/mola_input_rosbag1/mola-cli-launchs/publish_to_ros2.yam

Then, in another terminal with ROS 2 sourced:

```bash ros2 topic list

File truncated at 100 lines see the full file