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) | amd64 arm64 |
||
| ROS 2 Jazzy (u24.04) | |||
| ROS 2 Kilted (u24.04) | |||
| ROS 2 Lyrical (u26.04) | amd64 arm64 |
||
| ROS 2 Rolling (u26.04) | amd64 arm64 |
A MOLA RawDataSource module that reads ROS 1 .bag files and exposes their
contents as MOLA observations, without requiring a ROS 1 installation.
The ROS 1 bag (de)serialization, message definitions, and rosbag_storage
reader are vendored inside this package (see the ros1/ and
mrpt_ros_bridge/ subdirectories), so the module builds and runs in a pure
ROS 2 (or even non-ROS) colcon workspace.
Typical uses:
- Feed a legacy ROS 1 dataset into MOLA LiDAR Odometry or any other MOLA consumer.
- Turn MOLA into a ROS 1 -> ROS 2 bridge: read a
.bagand 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_idto the name of your robot body frame. Note that many ROS 1 bags use namespaced frames (e.g.r1/base_linkinstead ofbase_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 correctbase_link_frame_id. - If your bag has no
/tf, override the pose per sensor withfixed_sensor_pose(see the example inrosbag1_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
CONTRIBUTING
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) | amd64 arm64 |
||
| ROS 2 Jazzy (u24.04) | |||
| ROS 2 Kilted (u24.04) | |||
| ROS 2 Lyrical (u26.04) | amd64 arm64 |
||
| ROS 2 Rolling (u26.04) | amd64 arm64 |
A MOLA RawDataSource module that reads ROS 1 .bag files and exposes their
contents as MOLA observations, without requiring a ROS 1 installation.
The ROS 1 bag (de)serialization, message definitions, and rosbag_storage
reader are vendored inside this package (see the ros1/ and
mrpt_ros_bridge/ subdirectories), so the module builds and runs in a pure
ROS 2 (or even non-ROS) colcon workspace.
Typical uses:
- Feed a legacy ROS 1 dataset into MOLA LiDAR Odometry or any other MOLA consumer.
- Turn MOLA into a ROS 1 -> ROS 2 bridge: read a
.bagand 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_idto the name of your robot body frame. Note that many ROS 1 bags use namespaced frames (e.g.r1/base_linkinstead ofbase_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 correctbase_link_frame_id. - If your bag has no
/tf, override the pose per sensor withfixed_sensor_pose(see the example inrosbag1_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
CONTRIBUTING
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) | amd64 arm64 |
||
| ROS 2 Jazzy (u24.04) | |||
| ROS 2 Kilted (u24.04) | |||
| ROS 2 Lyrical (u26.04) | amd64 arm64 |
||
| ROS 2 Rolling (u26.04) | amd64 arm64 |
A MOLA RawDataSource module that reads ROS 1 .bag files and exposes their
contents as MOLA observations, without requiring a ROS 1 installation.
The ROS 1 bag (de)serialization, message definitions, and rosbag_storage
reader are vendored inside this package (see the ros1/ and
mrpt_ros_bridge/ subdirectories), so the module builds and runs in a pure
ROS 2 (or even non-ROS) colcon workspace.
Typical uses:
- Feed a legacy ROS 1 dataset into MOLA LiDAR Odometry or any other MOLA consumer.
- Turn MOLA into a ROS 1 -> ROS 2 bridge: read a
.bagand 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_idto the name of your robot body frame. Note that many ROS 1 bags use namespaced frames (e.g.r1/base_linkinstead ofbase_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 correctbase_link_frame_id. - If your bag has no
/tf, override the pose per sensor withfixed_sensor_pose(see the example inrosbag1_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
CONTRIBUTING
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) | amd64 arm64 |
||
| ROS 2 Jazzy (u24.04) | |||
| ROS 2 Kilted (u24.04) | |||
| ROS 2 Lyrical (u26.04) | amd64 arm64 |
||
| ROS 2 Rolling (u26.04) | amd64 arm64 |
A MOLA RawDataSource module that reads ROS 1 .bag files and exposes their
contents as MOLA observations, without requiring a ROS 1 installation.
The ROS 1 bag (de)serialization, message definitions, and rosbag_storage
reader are vendored inside this package (see the ros1/ and
mrpt_ros_bridge/ subdirectories), so the module builds and runs in a pure
ROS 2 (or even non-ROS) colcon workspace.
Typical uses:
- Feed a legacy ROS 1 dataset into MOLA LiDAR Odometry or any other MOLA consumer.
- Turn MOLA into a ROS 1 -> ROS 2 bridge: read a
.bagand 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_idto the name of your robot body frame. Note that many ROS 1 bags use namespaced frames (e.g.r1/base_linkinstead ofbase_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 correctbase_link_frame_id. - If your bag has no
/tf, override the pose per sensor withfixed_sensor_pose(see the example inrosbag1_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
CONTRIBUTING
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) | amd64 arm64 |
||
| ROS 2 Jazzy (u24.04) | |||
| ROS 2 Kilted (u24.04) | |||
| ROS 2 Lyrical (u26.04) | amd64 arm64 |
||
| ROS 2 Rolling (u26.04) | amd64 arm64 |
A MOLA RawDataSource module that reads ROS 1 .bag files and exposes their
contents as MOLA observations, without requiring a ROS 1 installation.
The ROS 1 bag (de)serialization, message definitions, and rosbag_storage
reader are vendored inside this package (see the ros1/ and
mrpt_ros_bridge/ subdirectories), so the module builds and runs in a pure
ROS 2 (or even non-ROS) colcon workspace.
Typical uses:
- Feed a legacy ROS 1 dataset into MOLA LiDAR Odometry or any other MOLA consumer.
- Turn MOLA into a ROS 1 -> ROS 2 bridge: read a
.bagand 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_idto the name of your robot body frame. Note that many ROS 1 bags use namespaced frames (e.g.r1/base_linkinstead ofbase_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 correctbase_link_frame_id. - If your bag has no
/tf, override the pose per sensor withfixed_sensor_pose(see the example inrosbag1_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
CONTRIBUTING
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) | amd64 arm64 |
||
| ROS 2 Jazzy (u24.04) | |||
| ROS 2 Kilted (u24.04) | |||
| ROS 2 Lyrical (u26.04) | amd64 arm64 |
||
| ROS 2 Rolling (u26.04) | amd64 arm64 |
A MOLA RawDataSource module that reads ROS 1 .bag files and exposes their
contents as MOLA observations, without requiring a ROS 1 installation.
The ROS 1 bag (de)serialization, message definitions, and rosbag_storage
reader are vendored inside this package (see the ros1/ and
mrpt_ros_bridge/ subdirectories), so the module builds and runs in a pure
ROS 2 (or even non-ROS) colcon workspace.
Typical uses:
- Feed a legacy ROS 1 dataset into MOLA LiDAR Odometry or any other MOLA consumer.
- Turn MOLA into a ROS 1 -> ROS 2 bridge: read a
.bagand 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_idto the name of your robot body frame. Note that many ROS 1 bags use namespaced frames (e.g.r1/base_linkinstead ofbase_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 correctbase_link_frame_id. - If your bag has no
/tf, override the pose per sensor withfixed_sensor_pose(see the example inrosbag1_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
CONTRIBUTING
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) | amd64 arm64 |
||
| ROS 2 Jazzy (u24.04) | |||
| ROS 2 Kilted (u24.04) | |||
| ROS 2 Lyrical (u26.04) | amd64 arm64 |
||
| ROS 2 Rolling (u26.04) | amd64 arm64 |
A MOLA RawDataSource module that reads ROS 1 .bag files and exposes their
contents as MOLA observations, without requiring a ROS 1 installation.
The ROS 1 bag (de)serialization, message definitions, and rosbag_storage
reader are vendored inside this package (see the ros1/ and
mrpt_ros_bridge/ subdirectories), so the module builds and runs in a pure
ROS 2 (or even non-ROS) colcon workspace.
Typical uses:
- Feed a legacy ROS 1 dataset into MOLA LiDAR Odometry or any other MOLA consumer.
- Turn MOLA into a ROS 1 -> ROS 2 bridge: read a
.bagand 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_idto the name of your robot body frame. Note that many ROS 1 bags use namespaced frames (e.g.r1/base_linkinstead ofbase_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 correctbase_link_frame_id. - If your bag has no
/tf, override the pose per sensor withfixed_sensor_pose(see the example inrosbag1_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
CONTRIBUTING
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) | amd64 arm64 |
||
| ROS 2 Jazzy (u24.04) | |||
| ROS 2 Kilted (u24.04) | |||
| ROS 2 Lyrical (u26.04) | amd64 arm64 |
||
| ROS 2 Rolling (u26.04) | amd64 arm64 |
A MOLA RawDataSource module that reads ROS 1 .bag files and exposes their
contents as MOLA observations, without requiring a ROS 1 installation.
The ROS 1 bag (de)serialization, message definitions, and rosbag_storage
reader are vendored inside this package (see the ros1/ and
mrpt_ros_bridge/ subdirectories), so the module builds and runs in a pure
ROS 2 (or even non-ROS) colcon workspace.
Typical uses:
- Feed a legacy ROS 1 dataset into MOLA LiDAR Odometry or any other MOLA consumer.
- Turn MOLA into a ROS 1 -> ROS 2 bridge: read a
.bagand 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_idto the name of your robot body frame. Note that many ROS 1 bags use namespaced frames (e.g.r1/base_linkinstead ofbase_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 correctbase_link_frame_id. - If your bag has no
/tf, override the pose per sensor withfixed_sensor_pose(see the example inrosbag1_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
CONTRIBUTING
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) | amd64 arm64 |
||
| ROS 2 Jazzy (u24.04) | |||
| ROS 2 Kilted (u24.04) | |||
| ROS 2 Lyrical (u26.04) | amd64 arm64 |
||
| ROS 2 Rolling (u26.04) | amd64 arm64 |
A MOLA RawDataSource module that reads ROS 1 .bag files and exposes their
contents as MOLA observations, without requiring a ROS 1 installation.
The ROS 1 bag (de)serialization, message definitions, and rosbag_storage
reader are vendored inside this package (see the ros1/ and
mrpt_ros_bridge/ subdirectories), so the module builds and runs in a pure
ROS 2 (or even non-ROS) colcon workspace.
Typical uses:
- Feed a legacy ROS 1 dataset into MOLA LiDAR Odometry or any other MOLA consumer.
- Turn MOLA into a ROS 1 -> ROS 2 bridge: read a
.bagand 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_idto the name of your robot body frame. Note that many ROS 1 bags use namespaced frames (e.g.r1/base_linkinstead ofbase_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 correctbase_link_frame_id. - If your bag has no
/tf, override the pose per sensor withfixed_sensor_pose(see the example inrosbag1_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
CONTRIBUTING
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) | amd64 arm64 |
||
| ROS 2 Jazzy (u24.04) | |||
| ROS 2 Kilted (u24.04) | |||
| ROS 2 Lyrical (u26.04) | amd64 arm64 |
||
| ROS 2 Rolling (u26.04) | amd64 arm64 |
A MOLA RawDataSource module that reads ROS 1 .bag files and exposes their
contents as MOLA observations, without requiring a ROS 1 installation.
The ROS 1 bag (de)serialization, message definitions, and rosbag_storage
reader are vendored inside this package (see the ros1/ and
mrpt_ros_bridge/ subdirectories), so the module builds and runs in a pure
ROS 2 (or even non-ROS) colcon workspace.
Typical uses:
- Feed a legacy ROS 1 dataset into MOLA LiDAR Odometry or any other MOLA consumer.
- Turn MOLA into a ROS 1 -> ROS 2 bridge: read a
.bagand 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_idto the name of your robot body frame. Note that many ROS 1 bags use namespaced frames (e.g.r1/base_linkinstead ofbase_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 correctbase_link_frame_id. - If your bag has no
/tf, override the pose per sensor withfixed_sensor_pose(see the example inrosbag1_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
CONTRIBUTING
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) | amd64 arm64 |
||
| ROS 2 Jazzy (u24.04) | |||
| ROS 2 Kilted (u24.04) | |||
| ROS 2 Lyrical (u26.04) | amd64 arm64 |
||
| ROS 2 Rolling (u26.04) | amd64 arm64 |
A MOLA RawDataSource module that reads ROS 1 .bag files and exposes their
contents as MOLA observations, without requiring a ROS 1 installation.
The ROS 1 bag (de)serialization, message definitions, and rosbag_storage
reader are vendored inside this package (see the ros1/ and
mrpt_ros_bridge/ subdirectories), so the module builds and runs in a pure
ROS 2 (or even non-ROS) colcon workspace.
Typical uses:
- Feed a legacy ROS 1 dataset into MOLA LiDAR Odometry or any other MOLA consumer.
- Turn MOLA into a ROS 1 -> ROS 2 bridge: read a
.bagand 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_idto the name of your robot body frame. Note that many ROS 1 bags use namespaced frames (e.g.r1/base_linkinstead ofbase_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 correctbase_link_frame_id. - If your bag has no
/tf, override the pose per sensor withfixed_sensor_pose(see the example inrosbag1_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
CONTRIBUTING
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) | amd64 arm64 |
||
| ROS 2 Jazzy (u24.04) | |||
| ROS 2 Kilted (u24.04) | |||
| ROS 2 Lyrical (u26.04) | amd64 arm64 |
||
| ROS 2 Rolling (u26.04) | amd64 arm64 |
A MOLA RawDataSource module that reads ROS 1 .bag files and exposes their
contents as MOLA observations, without requiring a ROS 1 installation.
The ROS 1 bag (de)serialization, message definitions, and rosbag_storage
reader are vendored inside this package (see the ros1/ and
mrpt_ros_bridge/ subdirectories), so the module builds and runs in a pure
ROS 2 (or even non-ROS) colcon workspace.
Typical uses:
- Feed a legacy ROS 1 dataset into MOLA LiDAR Odometry or any other MOLA consumer.
- Turn MOLA into a ROS 1 -> ROS 2 bridge: read a
.bagand 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_idto the name of your robot body frame. Note that many ROS 1 bags use namespaced frames (e.g.r1/base_linkinstead ofbase_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 correctbase_link_frame_id. - If your bag has no
/tf, override the pose per sensor withfixed_sensor_pose(see the example inrosbag1_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
CONTRIBUTING
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) | amd64 arm64 |
||
| ROS 2 Jazzy (u24.04) | |||
| ROS 2 Kilted (u24.04) | |||
| ROS 2 Lyrical (u26.04) | amd64 arm64 |
||
| ROS 2 Rolling (u26.04) | amd64 arm64 |
A MOLA RawDataSource module that reads ROS 1 .bag files and exposes their
contents as MOLA observations, without requiring a ROS 1 installation.
The ROS 1 bag (de)serialization, message definitions, and rosbag_storage
reader are vendored inside this package (see the ros1/ and
mrpt_ros_bridge/ subdirectories), so the module builds and runs in a pure
ROS 2 (or even non-ROS) colcon workspace.
Typical uses:
- Feed a legacy ROS 1 dataset into MOLA LiDAR Odometry or any other MOLA consumer.
- Turn MOLA into a ROS 1 -> ROS 2 bridge: read a
.bagand 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_idto the name of your robot body frame. Note that many ROS 1 bags use namespaced frames (e.g.r1/base_linkinstead ofbase_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 correctbase_link_frame_id. - If your bag has no
/tf, override the pose per sensor withfixed_sensor_pose(see the example inrosbag1_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
CONTRIBUTING
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) | amd64 arm64 |
||
| ROS 2 Jazzy (u24.04) | |||
| ROS 2 Kilted (u24.04) | |||
| ROS 2 Lyrical (u26.04) | amd64 arm64 |
||
| ROS 2 Rolling (u26.04) | amd64 arm64 |
A MOLA RawDataSource module that reads ROS 1 .bag files and exposes their
contents as MOLA observations, without requiring a ROS 1 installation.
The ROS 1 bag (de)serialization, message definitions, and rosbag_storage
reader are vendored inside this package (see the ros1/ and
mrpt_ros_bridge/ subdirectories), so the module builds and runs in a pure
ROS 2 (or even non-ROS) colcon workspace.
Typical uses:
- Feed a legacy ROS 1 dataset into MOLA LiDAR Odometry or any other MOLA consumer.
- Turn MOLA into a ROS 1 -> ROS 2 bridge: read a
.bagand 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_idto the name of your robot body frame. Note that many ROS 1 bags use namespaced frames (e.g.r1/base_linkinstead ofbase_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 correctbase_link_frame_id. - If your bag has no
/tf, override the pose per sensor withfixed_sensor_pose(see the example inrosbag1_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
CONTRIBUTING
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) | amd64 arm64 |
||
| ROS 2 Jazzy (u24.04) | |||
| ROS 2 Kilted (u24.04) | |||
| ROS 2 Lyrical (u26.04) | amd64 arm64 |
||
| ROS 2 Rolling (u26.04) | amd64 arm64 |
A MOLA RawDataSource module that reads ROS 1 .bag files and exposes their
contents as MOLA observations, without requiring a ROS 1 installation.
The ROS 1 bag (de)serialization, message definitions, and rosbag_storage
reader are vendored inside this package (see the ros1/ and
mrpt_ros_bridge/ subdirectories), so the module builds and runs in a pure
ROS 2 (or even non-ROS) colcon workspace.
Typical uses:
- Feed a legacy ROS 1 dataset into MOLA LiDAR Odometry or any other MOLA consumer.
- Turn MOLA into a ROS 1 -> ROS 2 bridge: read a
.bagand 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_idto the name of your robot body frame. Note that many ROS 1 bags use namespaced frames (e.g.r1/base_linkinstead ofbase_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 correctbase_link_frame_id. - If your bag has no
/tf, override the pose per sensor withfixed_sensor_pose(see the example inrosbag1_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
CONTRIBUTING
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) | amd64 arm64 |
||
| ROS 2 Jazzy (u24.04) | |||
| ROS 2 Kilted (u24.04) | |||
| ROS 2 Lyrical (u26.04) | amd64 arm64 |
||
| ROS 2 Rolling (u26.04) | amd64 arm64 |
A MOLA RawDataSource module that reads ROS 1 .bag files and exposes their
contents as MOLA observations, without requiring a ROS 1 installation.
The ROS 1 bag (de)serialization, message definitions, and rosbag_storage
reader are vendored inside this package (see the ros1/ and
mrpt_ros_bridge/ subdirectories), so the module builds and runs in a pure
ROS 2 (or even non-ROS) colcon workspace.
Typical uses:
- Feed a legacy ROS 1 dataset into MOLA LiDAR Odometry or any other MOLA consumer.
- Turn MOLA into a ROS 1 -> ROS 2 bridge: read a
.bagand 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_idto the name of your robot body frame. Note that many ROS 1 bags use namespaced frames (e.g.r1/base_linkinstead ofbase_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 correctbase_link_frame_id. - If your bag has no
/tf, override the pose per sensor withfixed_sensor_pose(see the example inrosbag1_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
CONTRIBUTING
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) | amd64 arm64 |
||
| ROS 2 Jazzy (u24.04) | |||
| ROS 2 Kilted (u24.04) | |||
| ROS 2 Lyrical (u26.04) | amd64 arm64 |
||
| ROS 2 Rolling (u26.04) | amd64 arm64 |
A MOLA RawDataSource module that reads ROS 1 .bag files and exposes their
contents as MOLA observations, without requiring a ROS 1 installation.
The ROS 1 bag (de)serialization, message definitions, and rosbag_storage
reader are vendored inside this package (see the ros1/ and
mrpt_ros_bridge/ subdirectories), so the module builds and runs in a pure
ROS 2 (or even non-ROS) colcon workspace.
Typical uses:
- Feed a legacy ROS 1 dataset into MOLA LiDAR Odometry or any other MOLA consumer.
- Turn MOLA into a ROS 1 -> ROS 2 bridge: read a
.bagand 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_idto the name of your robot body frame. Note that many ROS 1 bags use namespaced frames (e.g.r1/base_linkinstead ofbase_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 correctbase_link_frame_id. - If your bag has no
/tf, override the pose per sensor withfixed_sensor_pose(see the example inrosbag1_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
CONTRIBUTING
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) | amd64 arm64 |
||
| ROS 2 Jazzy (u24.04) | |||
| ROS 2 Kilted (u24.04) | |||
| ROS 2 Lyrical (u26.04) | amd64 arm64 |
||
| ROS 2 Rolling (u26.04) | amd64 arm64 |
A MOLA RawDataSource module that reads ROS 1 .bag files and exposes their
contents as MOLA observations, without requiring a ROS 1 installation.
The ROS 1 bag (de)serialization, message definitions, and rosbag_storage
reader are vendored inside this package (see the ros1/ and
mrpt_ros_bridge/ subdirectories), so the module builds and runs in a pure
ROS 2 (or even non-ROS) colcon workspace.
Typical uses:
- Feed a legacy ROS 1 dataset into MOLA LiDAR Odometry or any other MOLA consumer.
- Turn MOLA into a ROS 1 -> ROS 2 bridge: read a
.bagand 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_idto the name of your robot body frame. Note that many ROS 1 bags use namespaced frames (e.g.r1/base_linkinstead ofbase_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 correctbase_link_frame_id. - If your bag has no
/tf, override the pose per sensor withfixed_sensor_pose(see the example inrosbag1_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
CONTRIBUTING
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) | amd64 arm64 |
||
| ROS 2 Jazzy (u24.04) | |||
| ROS 2 Kilted (u24.04) | |||
| ROS 2 Lyrical (u26.04) | amd64 arm64 |
||
| ROS 2 Rolling (u26.04) | amd64 arm64 |
A MOLA RawDataSource module that reads ROS 1 .bag files and exposes their
contents as MOLA observations, without requiring a ROS 1 installation.
The ROS 1 bag (de)serialization, message definitions, and rosbag_storage
reader are vendored inside this package (see the ros1/ and
mrpt_ros_bridge/ subdirectories), so the module builds and runs in a pure
ROS 2 (or even non-ROS) colcon workspace.
Typical uses:
- Feed a legacy ROS 1 dataset into MOLA LiDAR Odometry or any other MOLA consumer.
- Turn MOLA into a ROS 1 -> ROS 2 bridge: read a
.bagand 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_idto the name of your robot body frame. Note that many ROS 1 bags use namespaced frames (e.g.r1/base_linkinstead ofbase_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 correctbase_link_frame_id. - If your bag has no
/tf, override the pose per sensor withfixed_sensor_pose(see the example inrosbag1_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
CONTRIBUTING
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) | amd64 arm64 |
||
| ROS 2 Jazzy (u24.04) | |||
| ROS 2 Kilted (u24.04) | |||
| ROS 2 Lyrical (u26.04) | amd64 arm64 |
||
| ROS 2 Rolling (u26.04) | amd64 arm64 |
A MOLA RawDataSource module that reads ROS 1 .bag files and exposes their
contents as MOLA observations, without requiring a ROS 1 installation.
The ROS 1 bag (de)serialization, message definitions, and rosbag_storage
reader are vendored inside this package (see the ros1/ and
mrpt_ros_bridge/ subdirectories), so the module builds and runs in a pure
ROS 2 (or even non-ROS) colcon workspace.
Typical uses:
- Feed a legacy ROS 1 dataset into MOLA LiDAR Odometry or any other MOLA consumer.
- Turn MOLA into a ROS 1 -> ROS 2 bridge: read a
.bagand 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_idto the name of your robot body frame. Note that many ROS 1 bags use namespaced frames (e.g.r1/base_linkinstead ofbase_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 correctbase_link_frame_id. - If your bag has no
/tf, override the pose per sensor withfixed_sensor_pose(see the example inrosbag1_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