Package symbol

mola_input_rosbag1 package from mola_input_rosbag1 repo

mola_input_rosbag1

ROS Distro
humble

Package Summary

Version 0.5.0
License BSD-3-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

MOLA DataSource from ROS1 bag files that does not need a ROS1 installation

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

mola_input_rosbag1

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

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

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

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

Typical uses:

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

Supported message types

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

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

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

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

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

Sensor poses and /tf

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

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

Parameters

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

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

Demos

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

1. Visualize raw LiDAR streams

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mola_input_rosbag1

0.5.0 (2026-09-25)

  • ci: add GitHub release workflow on version tags
  • Bump mrpt_ros_bridge: fix FLOAT64 per-point timestamps
  • Merge pull request #10 from MOLAorg/feat/mrpt3
  • Vendor mrpt_ros_bridge's ros1-mola-vendored branch instead of ros1
  • Merge pull request #9 from MOLAorg/feat/mrpt3
  • fix: review observations
  • Use the bridge's ros1 branch, now that it builds against MRPT 3.x; fix RGB/BGR channel swap in image conversion
  • Merge remote-tracking branch 'origin/develop' into feat/mrpt3
  • Merge remote-tracking branch 'origin/feat/per-sensor-time-offset' into feat/mrpt3
  • Merge pull request #8 from MOLAorg/fix/float64-per-point-timestamps
  • Vendor the bridge's ros1 branch instead of ros1-mola-vendored, fixing FLOAT64 per-point timestamps
  • Merge remote-tracking branch 'origin/develop' into feat/mrpt3
  • Merge pull request #6 from MOLAorg/fix/camera-info-distortion-model
  • Add an optional per-sensor time_offset to correct a constant per-sensor stamp bias
  • Accept more camera_info distortion model names, and warn when one is unhandled
  • Populate CObservationImage::cameraParams from sensor_msgs/CameraInfo
  • Merge pull request #5 from MOLAorg/feat/rosbag1-comma-separated-bag-list
  • Accept a comma-separated bag list in rosbag_filename
  • Port to MRPT 3.x: cmake targets, TImageChannels, yaml associativity
  • Merge pull request #4 from MOLAorg/feat/se3-odometry-as-robot-pose
  • Allow reading a 3D odometry source as CObservationRobotPose
  • Report the dataset playback time to the GUI (#3)
  • Fix a segfault in findOutSensorPose, and resolve ROS1-era slashed frame ids
  • Fix build warnings on newer ROS2 distro/g++
  • Contributors: Jose Luis Blanco-Claraco

0.4.0 (2026-08-07)

  • Expose the bag's /tf tree via mola::TransformTreeSource, so other MOLA modules can query the subtree of coordinate frames below a given root (e.g. a legged robot's joints) with poses resolved against it.
  • fix: support missing timestamp channel
  • Hide vendored roslz4/xxhash symbols to prevent collision with a system libxxhash, which could otherwise corrupt LZ4 checksum verification on some distros.
  • update ros rolling to u26.04
  • Contributors: Jose Luis Blanco-Claraco

0.3.0 (2026-07-31)

  • fix clang-format

  • Add use_bag_record_time option for drivers with unsynced header stamps Some drivers (observed on TIERS's Ouster and Livox streams) publish header.stamp from an internal/relative clock never synced to the recording PC's wall clock, which silently breaks ground-truth time lookup for every scan. When set on a sensor, the observation's timestamp is taken from the bag's own message storage time instead.

  • Add support for livox_ros_driver2/CustomMsg too

  • Update mrpt_ros_bridge submodule: drop deprecated point-map overloads Removes the CPointsMapXYZI/CPointsMapXYZIRT fromROS/toROS overloads, which were the source of -Wdeprecated-declarations warnings when building Rosbag1Dataset.cpp; CGenericPointsMap already covers the same conversions.

  • launch: add per-app imgui_app_name for MolaVizImGui Sets a unique imgui_app_name in each launch file so Dear ImGui's layout persistence stores a separate UI configuration per app.

  • Merge pull request #1 from MOLAorg/feature/multi-bag-gt-and-livox-custommsg Multi-bag input, ground-truth trajectory API, and Livox CustomMsg support

  • fix: validate nav_msgs/Odometry GT quaternion; migrate toPointCloud2 off deprecated point map classes

    - Apply the same non-finite-quaternion guard already used for geometry_msgs/PoseStamped to the nav_msgs/Odometry ground-truth branch.

    - Update mrpt_ros_bridge submodule to a commit adding CGenericPointsMap fromROS/toROS overloads for sensor_msgs/PointCloud2, and switch toPointCloud2() to use them

File truncated at 100 lines see the full file

Launch files

Messages

Plugins

No plugins found.

Recent questions tagged mola_input_rosbag1 at Robotics Stack Exchange

Package symbol

mola_input_rosbag1 package from mola_input_rosbag1 repo

mola_input_rosbag1

ROS Distro
jazzy

Package Summary

Version 0.5.0
License BSD-3-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

MOLA DataSource from ROS1 bag files that does not need a ROS1 installation

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

mola_input_rosbag1

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

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

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

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

Typical uses:

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

Supported message types

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

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

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

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

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

Sensor poses and /tf

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

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

Parameters

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

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

Demos

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

1. Visualize raw LiDAR streams

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mola_input_rosbag1

0.5.0 (2026-09-25)

  • ci: add GitHub release workflow on version tags
  • Bump mrpt_ros_bridge: fix FLOAT64 per-point timestamps
  • Merge pull request #10 from MOLAorg/feat/mrpt3
  • Vendor mrpt_ros_bridge's ros1-mola-vendored branch instead of ros1
  • Merge pull request #9 from MOLAorg/feat/mrpt3
  • fix: review observations
  • Use the bridge's ros1 branch, now that it builds against MRPT 3.x; fix RGB/BGR channel swap in image conversion
  • Merge remote-tracking branch 'origin/develop' into feat/mrpt3
  • Merge remote-tracking branch 'origin/feat/per-sensor-time-offset' into feat/mrpt3
  • Merge pull request #8 from MOLAorg/fix/float64-per-point-timestamps
  • Vendor the bridge's ros1 branch instead of ros1-mola-vendored, fixing FLOAT64 per-point timestamps
  • Merge remote-tracking branch 'origin/develop' into feat/mrpt3
  • Merge pull request #6 from MOLAorg/fix/camera-info-distortion-model
  • Add an optional per-sensor time_offset to correct a constant per-sensor stamp bias
  • Accept more camera_info distortion model names, and warn when one is unhandled
  • Populate CObservationImage::cameraParams from sensor_msgs/CameraInfo
  • Merge pull request #5 from MOLAorg/feat/rosbag1-comma-separated-bag-list
  • Accept a comma-separated bag list in rosbag_filename
  • Port to MRPT 3.x: cmake targets, TImageChannels, yaml associativity
  • Merge pull request #4 from MOLAorg/feat/se3-odometry-as-robot-pose
  • Allow reading a 3D odometry source as CObservationRobotPose
  • Report the dataset playback time to the GUI (#3)
  • Fix a segfault in findOutSensorPose, and resolve ROS1-era slashed frame ids
  • Fix build warnings on newer ROS2 distro/g++
  • Contributors: Jose Luis Blanco-Claraco

0.4.0 (2026-08-07)

  • Expose the bag's /tf tree via mola::TransformTreeSource, so other MOLA modules can query the subtree of coordinate frames below a given root (e.g. a legged robot's joints) with poses resolved against it.
  • fix: support missing timestamp channel
  • Hide vendored roslz4/xxhash symbols to prevent collision with a system libxxhash, which could otherwise corrupt LZ4 checksum verification on some distros.
  • update ros rolling to u26.04
  • Contributors: Jose Luis Blanco-Claraco

0.3.0 (2026-07-31)

  • fix clang-format

  • Add use_bag_record_time option for drivers with unsynced header stamps Some drivers (observed on TIERS's Ouster and Livox streams) publish header.stamp from an internal/relative clock never synced to the recording PC's wall clock, which silently breaks ground-truth time lookup for every scan. When set on a sensor, the observation's timestamp is taken from the bag's own message storage time instead.

  • Add support for livox_ros_driver2/CustomMsg too

  • Update mrpt_ros_bridge submodule: drop deprecated point-map overloads Removes the CPointsMapXYZI/CPointsMapXYZIRT fromROS/toROS overloads, which were the source of -Wdeprecated-declarations warnings when building Rosbag1Dataset.cpp; CGenericPointsMap already covers the same conversions.

  • launch: add per-app imgui_app_name for MolaVizImGui Sets a unique imgui_app_name in each launch file so Dear ImGui's layout persistence stores a separate UI configuration per app.

  • Merge pull request #1 from MOLAorg/feature/multi-bag-gt-and-livox-custommsg Multi-bag input, ground-truth trajectory API, and Livox CustomMsg support

  • fix: validate nav_msgs/Odometry GT quaternion; migrate toPointCloud2 off deprecated point map classes

    - Apply the same non-finite-quaternion guard already used for geometry_msgs/PoseStamped to the nav_msgs/Odometry ground-truth branch.

    - Update mrpt_ros_bridge submodule to a commit adding CGenericPointsMap fromROS/toROS overloads for sensor_msgs/PointCloud2, and switch toPointCloud2() to use them

File truncated at 100 lines see the full file

Launch files

Messages

Plugins

No plugins found.

Recent questions tagged mola_input_rosbag1 at Robotics Stack Exchange

Package symbol

mola_input_rosbag1 package from mola_input_rosbag1 repo

mola_input_rosbag1

ROS Distro
kilted

Package Summary

Version 0.5.0
License BSD-3-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

MOLA DataSource from ROS1 bag files that does not need a ROS1 installation

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

mola_input_rosbag1

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

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

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

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

Typical uses:

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

Supported message types

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

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

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

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

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

Sensor poses and /tf

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

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

Parameters

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

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

Demos

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

1. Visualize raw LiDAR streams

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mola_input_rosbag1

0.5.0 (2026-09-25)

  • ci: add GitHub release workflow on version tags
  • Bump mrpt_ros_bridge: fix FLOAT64 per-point timestamps
  • Merge pull request #10 from MOLAorg/feat/mrpt3
  • Vendor mrpt_ros_bridge's ros1-mola-vendored branch instead of ros1
  • Merge pull request #9 from MOLAorg/feat/mrpt3
  • fix: review observations
  • Use the bridge's ros1 branch, now that it builds against MRPT 3.x; fix RGB/BGR channel swap in image conversion
  • Merge remote-tracking branch 'origin/develop' into feat/mrpt3
  • Merge remote-tracking branch 'origin/feat/per-sensor-time-offset' into feat/mrpt3
  • Merge pull request #8 from MOLAorg/fix/float64-per-point-timestamps
  • Vendor the bridge's ros1 branch instead of ros1-mola-vendored, fixing FLOAT64 per-point timestamps
  • Merge remote-tracking branch 'origin/develop' into feat/mrpt3
  • Merge pull request #6 from MOLAorg/fix/camera-info-distortion-model
  • Add an optional per-sensor time_offset to correct a constant per-sensor stamp bias
  • Accept more camera_info distortion model names, and warn when one is unhandled
  • Populate CObservationImage::cameraParams from sensor_msgs/CameraInfo
  • Merge pull request #5 from MOLAorg/feat/rosbag1-comma-separated-bag-list
  • Accept a comma-separated bag list in rosbag_filename
  • Port to MRPT 3.x: cmake targets, TImageChannels, yaml associativity
  • Merge pull request #4 from MOLAorg/feat/se3-odometry-as-robot-pose
  • Allow reading a 3D odometry source as CObservationRobotPose
  • Report the dataset playback time to the GUI (#3)
  • Fix a segfault in findOutSensorPose, and resolve ROS1-era slashed frame ids
  • Fix build warnings on newer ROS2 distro/g++
  • Contributors: Jose Luis Blanco-Claraco

0.4.0 (2026-08-07)

  • Expose the bag's /tf tree via mola::TransformTreeSource, so other MOLA modules can query the subtree of coordinate frames below a given root (e.g. a legged robot's joints) with poses resolved against it.
  • fix: support missing timestamp channel
  • Hide vendored roslz4/xxhash symbols to prevent collision with a system libxxhash, which could otherwise corrupt LZ4 checksum verification on some distros.
  • update ros rolling to u26.04
  • Contributors: Jose Luis Blanco-Claraco

0.3.0 (2026-07-31)

  • fix clang-format

  • Add use_bag_record_time option for drivers with unsynced header stamps Some drivers (observed on TIERS's Ouster and Livox streams) publish header.stamp from an internal/relative clock never synced to the recording PC's wall clock, which silently breaks ground-truth time lookup for every scan. When set on a sensor, the observation's timestamp is taken from the bag's own message storage time instead.

  • Add support for livox_ros_driver2/CustomMsg too

  • Update mrpt_ros_bridge submodule: drop deprecated point-map overloads Removes the CPointsMapXYZI/CPointsMapXYZIRT fromROS/toROS overloads, which were the source of -Wdeprecated-declarations warnings when building Rosbag1Dataset.cpp; CGenericPointsMap already covers the same conversions.

  • launch: add per-app imgui_app_name for MolaVizImGui Sets a unique imgui_app_name in each launch file so Dear ImGui's layout persistence stores a separate UI configuration per app.

  • Merge pull request #1 from MOLAorg/feature/multi-bag-gt-and-livox-custommsg Multi-bag input, ground-truth trajectory API, and Livox CustomMsg support

  • fix: validate nav_msgs/Odometry GT quaternion; migrate toPointCloud2 off deprecated point map classes

    - Apply the same non-finite-quaternion guard already used for geometry_msgs/PoseStamped to the nav_msgs/Odometry ground-truth branch.

    - Update mrpt_ros_bridge submodule to a commit adding CGenericPointsMap fromROS/toROS overloads for sensor_msgs/PointCloud2, and switch toPointCloud2() to use them

File truncated at 100 lines see the full file

Launch files

Messages

Plugins

No plugins found.

Recent questions tagged mola_input_rosbag1 at Robotics Stack Exchange

Package symbol

mola_input_rosbag1 package from mola_input_rosbag1 repo

mola_input_rosbag1

ROS Distro
lyrical

Package Summary

Version 0.5.0
License BSD-3-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

MOLA DataSource from ROS1 bag files that does not need a ROS1 installation

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

mola_input_rosbag1

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

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

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

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

Typical uses:

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

Supported message types

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

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

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

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

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

Sensor poses and /tf

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

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

Parameters

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

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

Demos

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

1. Visualize raw LiDAR streams

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mola_input_rosbag1

0.5.0 (2026-09-25)

  • ci: add GitHub release workflow on version tags
  • Bump mrpt_ros_bridge: fix FLOAT64 per-point timestamps
  • Merge pull request #10 from MOLAorg/feat/mrpt3
  • Vendor mrpt_ros_bridge's ros1-mola-vendored branch instead of ros1
  • Merge pull request #9 from MOLAorg/feat/mrpt3
  • fix: review observations
  • Use the bridge's ros1 branch, now that it builds against MRPT 3.x; fix RGB/BGR channel swap in image conversion
  • Merge remote-tracking branch 'origin/develop' into feat/mrpt3
  • Merge remote-tracking branch 'origin/feat/per-sensor-time-offset' into feat/mrpt3
  • Merge pull request #8 from MOLAorg/fix/float64-per-point-timestamps
  • Vendor the bridge's ros1 branch instead of ros1-mola-vendored, fixing FLOAT64 per-point timestamps
  • Merge remote-tracking branch 'origin/develop' into feat/mrpt3
  • Merge pull request #6 from MOLAorg/fix/camera-info-distortion-model
  • Add an optional per-sensor time_offset to correct a constant per-sensor stamp bias
  • Accept more camera_info distortion model names, and warn when one is unhandled
  • Populate CObservationImage::cameraParams from sensor_msgs/CameraInfo
  • Merge pull request #5 from MOLAorg/feat/rosbag1-comma-separated-bag-list
  • Accept a comma-separated bag list in rosbag_filename
  • Port to MRPT 3.x: cmake targets, TImageChannels, yaml associativity
  • Merge pull request #4 from MOLAorg/feat/se3-odometry-as-robot-pose
  • Allow reading a 3D odometry source as CObservationRobotPose
  • Report the dataset playback time to the GUI (#3)
  • Fix a segfault in findOutSensorPose, and resolve ROS1-era slashed frame ids
  • Fix build warnings on newer ROS2 distro/g++
  • Contributors: Jose Luis Blanco-Claraco

0.4.0 (2026-08-07)

  • Expose the bag's /tf tree via mola::TransformTreeSource, so other MOLA modules can query the subtree of coordinate frames below a given root (e.g. a legged robot's joints) with poses resolved against it.
  • fix: support missing timestamp channel
  • Hide vendored roslz4/xxhash symbols to prevent collision with a system libxxhash, which could otherwise corrupt LZ4 checksum verification on some distros.
  • update ros rolling to u26.04
  • Contributors: Jose Luis Blanco-Claraco

0.3.0 (2026-07-31)

  • fix clang-format

  • Add use_bag_record_time option for drivers with unsynced header stamps Some drivers (observed on TIERS's Ouster and Livox streams) publish header.stamp from an internal/relative clock never synced to the recording PC's wall clock, which silently breaks ground-truth time lookup for every scan. When set on a sensor, the observation's timestamp is taken from the bag's own message storage time instead.

  • Add support for livox_ros_driver2/CustomMsg too

  • Update mrpt_ros_bridge submodule: drop deprecated point-map overloads Removes the CPointsMapXYZI/CPointsMapXYZIRT fromROS/toROS overloads, which were the source of -Wdeprecated-declarations warnings when building Rosbag1Dataset.cpp; CGenericPointsMap already covers the same conversions.

  • launch: add per-app imgui_app_name for MolaVizImGui Sets a unique imgui_app_name in each launch file so Dear ImGui's layout persistence stores a separate UI configuration per app.

  • Merge pull request #1 from MOLAorg/feature/multi-bag-gt-and-livox-custommsg Multi-bag input, ground-truth trajectory API, and Livox CustomMsg support

  • fix: validate nav_msgs/Odometry GT quaternion; migrate toPointCloud2 off deprecated point map classes

    - Apply the same non-finite-quaternion guard already used for geometry_msgs/PoseStamped to the nav_msgs/Odometry ground-truth branch.

    - Update mrpt_ros_bridge submodule to a commit adding CGenericPointsMap fromROS/toROS overloads for sensor_msgs/PointCloud2, and switch toPointCloud2() to use them

File truncated at 100 lines see the full file

Launch files

Messages

Plugins

No plugins found.

Recent questions tagged mola_input_rosbag1 at Robotics Stack Exchange

Package symbol

mola_input_rosbag1 package from mola_input_rosbag1 repo

mola_input_rosbag1

ROS Distro
rolling

Package Summary

Version 0.5.0
License BSD-3-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

MOLA DataSource from ROS1 bag files that does not need a ROS1 installation

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

mola_input_rosbag1

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

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

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

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

Typical uses:

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

Supported message types

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

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

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

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

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

Sensor poses and /tf

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

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

Parameters

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

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

Demos

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

1. Visualize raw LiDAR streams

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mola_input_rosbag1

0.5.0 (2026-09-25)

  • ci: add GitHub release workflow on version tags
  • Bump mrpt_ros_bridge: fix FLOAT64 per-point timestamps
  • Merge pull request #10 from MOLAorg/feat/mrpt3
  • Vendor mrpt_ros_bridge's ros1-mola-vendored branch instead of ros1
  • Merge pull request #9 from MOLAorg/feat/mrpt3
  • fix: review observations
  • Use the bridge's ros1 branch, now that it builds against MRPT 3.x; fix RGB/BGR channel swap in image conversion
  • Merge remote-tracking branch 'origin/develop' into feat/mrpt3
  • Merge remote-tracking branch 'origin/feat/per-sensor-time-offset' into feat/mrpt3
  • Merge pull request #8 from MOLAorg/fix/float64-per-point-timestamps
  • Vendor the bridge's ros1 branch instead of ros1-mola-vendored, fixing FLOAT64 per-point timestamps
  • Merge remote-tracking branch 'origin/develop' into feat/mrpt3
  • Merge pull request #6 from MOLAorg/fix/camera-info-distortion-model
  • Add an optional per-sensor time_offset to correct a constant per-sensor stamp bias
  • Accept more camera_info distortion model names, and warn when one is unhandled
  • Populate CObservationImage::cameraParams from sensor_msgs/CameraInfo
  • Merge pull request #5 from MOLAorg/feat/rosbag1-comma-separated-bag-list
  • Accept a comma-separated bag list in rosbag_filename
  • Port to MRPT 3.x: cmake targets, TImageChannels, yaml associativity
  • Merge pull request #4 from MOLAorg/feat/se3-odometry-as-robot-pose
  • Allow reading a 3D odometry source as CObservationRobotPose
  • Report the dataset playback time to the GUI (#3)
  • Fix a segfault in findOutSensorPose, and resolve ROS1-era slashed frame ids
  • Fix build warnings on newer ROS2 distro/g++
  • Contributors: Jose Luis Blanco-Claraco

0.4.0 (2026-08-07)

  • Expose the bag's /tf tree via mola::TransformTreeSource, so other MOLA modules can query the subtree of coordinate frames below a given root (e.g. a legged robot's joints) with poses resolved against it.
  • fix: support missing timestamp channel
  • Hide vendored roslz4/xxhash symbols to prevent collision with a system libxxhash, which could otherwise corrupt LZ4 checksum verification on some distros.
  • update ros rolling to u26.04
  • Contributors: Jose Luis Blanco-Claraco

0.3.0 (2026-07-31)

  • fix clang-format

  • Add use_bag_record_time option for drivers with unsynced header stamps Some drivers (observed on TIERS's Ouster and Livox streams) publish header.stamp from an internal/relative clock never synced to the recording PC's wall clock, which silently breaks ground-truth time lookup for every scan. When set on a sensor, the observation's timestamp is taken from the bag's own message storage time instead.

  • Add support for livox_ros_driver2/CustomMsg too

  • Update mrpt_ros_bridge submodule: drop deprecated point-map overloads Removes the CPointsMapXYZI/CPointsMapXYZIRT fromROS/toROS overloads, which were the source of -Wdeprecated-declarations warnings when building Rosbag1Dataset.cpp; CGenericPointsMap already covers the same conversions.

  • launch: add per-app imgui_app_name for MolaVizImGui Sets a unique imgui_app_name in each launch file so Dear ImGui's layout persistence stores a separate UI configuration per app.

  • Merge pull request #1 from MOLAorg/feature/multi-bag-gt-and-livox-custommsg Multi-bag input, ground-truth trajectory API, and Livox CustomMsg support

  • fix: validate nav_msgs/Odometry GT quaternion; migrate toPointCloud2 off deprecated point map classes

    - Apply the same non-finite-quaternion guard already used for geometry_msgs/PoseStamped to the nav_msgs/Odometry ground-truth branch.

    - Update mrpt_ros_bridge submodule to a commit adding CGenericPointsMap fromROS/toROS overloads for sensor_msgs/PointCloud2, and switch toPointCloud2() to use them

File truncated at 100 lines see the full file

Launch files

Messages

Plugins

No plugins found.

Recent questions tagged mola_input_rosbag1 at Robotics Stack Exchange

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

mola_input_rosbag1 package from mola_input_rosbag1 repo

mola_input_rosbag1

ROS Distro
humble

Package Summary

Version 0.5.0
License BSD-3-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

MOLA DataSource from ROS1 bag files that does not need a ROS1 installation

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

mola_input_rosbag1

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

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

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

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

Typical uses:

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

Supported message types

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

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

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

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

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

Sensor poses and /tf

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

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

Parameters

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

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

Demos

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

1. Visualize raw LiDAR streams

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mola_input_rosbag1

0.5.0 (2026-09-25)

  • ci: add GitHub release workflow on version tags
  • Bump mrpt_ros_bridge: fix FLOAT64 per-point timestamps
  • Merge pull request #10 from MOLAorg/feat/mrpt3
  • Vendor mrpt_ros_bridge's ros1-mola-vendored branch instead of ros1
  • Merge pull request #9 from MOLAorg/feat/mrpt3
  • fix: review observations
  • Use the bridge's ros1 branch, now that it builds against MRPT 3.x; fix RGB/BGR channel swap in image conversion
  • Merge remote-tracking branch 'origin/develop' into feat/mrpt3
  • Merge remote-tracking branch 'origin/feat/per-sensor-time-offset' into feat/mrpt3
  • Merge pull request #8 from MOLAorg/fix/float64-per-point-timestamps
  • Vendor the bridge's ros1 branch instead of ros1-mola-vendored, fixing FLOAT64 per-point timestamps
  • Merge remote-tracking branch 'origin/develop' into feat/mrpt3
  • Merge pull request #6 from MOLAorg/fix/camera-info-distortion-model
  • Add an optional per-sensor time_offset to correct a constant per-sensor stamp bias
  • Accept more camera_info distortion model names, and warn when one is unhandled
  • Populate CObservationImage::cameraParams from sensor_msgs/CameraInfo
  • Merge pull request #5 from MOLAorg/feat/rosbag1-comma-separated-bag-list
  • Accept a comma-separated bag list in rosbag_filename
  • Port to MRPT 3.x: cmake targets, TImageChannels, yaml associativity
  • Merge pull request #4 from MOLAorg/feat/se3-odometry-as-robot-pose
  • Allow reading a 3D odometry source as CObservationRobotPose
  • Report the dataset playback time to the GUI (#3)
  • Fix a segfault in findOutSensorPose, and resolve ROS1-era slashed frame ids
  • Fix build warnings on newer ROS2 distro/g++
  • Contributors: Jose Luis Blanco-Claraco

0.4.0 (2026-08-07)

  • Expose the bag's /tf tree via mola::TransformTreeSource, so other MOLA modules can query the subtree of coordinate frames below a given root (e.g. a legged robot's joints) with poses resolved against it.
  • fix: support missing timestamp channel
  • Hide vendored roslz4/xxhash symbols to prevent collision with a system libxxhash, which could otherwise corrupt LZ4 checksum verification on some distros.
  • update ros rolling to u26.04
  • Contributors: Jose Luis Blanco-Claraco

0.3.0 (2026-07-31)

  • fix clang-format

  • Add use_bag_record_time option for drivers with unsynced header stamps Some drivers (observed on TIERS's Ouster and Livox streams) publish header.stamp from an internal/relative clock never synced to the recording PC's wall clock, which silently breaks ground-truth time lookup for every scan. When set on a sensor, the observation's timestamp is taken from the bag's own message storage time instead.

  • Add support for livox_ros_driver2/CustomMsg too

  • Update mrpt_ros_bridge submodule: drop deprecated point-map overloads Removes the CPointsMapXYZI/CPointsMapXYZIRT fromROS/toROS overloads, which were the source of -Wdeprecated-declarations warnings when building Rosbag1Dataset.cpp; CGenericPointsMap already covers the same conversions.

  • launch: add per-app imgui_app_name for MolaVizImGui Sets a unique imgui_app_name in each launch file so Dear ImGui's layout persistence stores a separate UI configuration per app.

  • Merge pull request #1 from MOLAorg/feature/multi-bag-gt-and-livox-custommsg Multi-bag input, ground-truth trajectory API, and Livox CustomMsg support

  • fix: validate nav_msgs/Odometry GT quaternion; migrate toPointCloud2 off deprecated point map classes

    - Apply the same non-finite-quaternion guard already used for geometry_msgs/PoseStamped to the nav_msgs/Odometry ground-truth branch.

    - Update mrpt_ros_bridge submodule to a commit adding CGenericPointsMap fromROS/toROS overloads for sensor_msgs/PointCloud2, and switch toPointCloud2() to use them

File truncated at 100 lines see the full file

Launch files

Messages

Plugins

No plugins found.

Recent questions tagged mola_input_rosbag1 at Robotics Stack Exchange

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

mola_input_rosbag1 package from mola_input_rosbag1 repo

mola_input_rosbag1

ROS Distro
humble

Package Summary

Version 0.5.0
License BSD-3-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

MOLA DataSource from ROS1 bag files that does not need a ROS1 installation

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

mola_input_rosbag1

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

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

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

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

Typical uses:

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

Supported message types

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

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

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

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

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

Sensor poses and /tf

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

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

Parameters

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

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

Demos

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

1. Visualize raw LiDAR streams

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mola_input_rosbag1

0.5.0 (2026-09-25)

  • ci: add GitHub release workflow on version tags
  • Bump mrpt_ros_bridge: fix FLOAT64 per-point timestamps
  • Merge pull request #10 from MOLAorg/feat/mrpt3
  • Vendor mrpt_ros_bridge's ros1-mola-vendored branch instead of ros1
  • Merge pull request #9 from MOLAorg/feat/mrpt3
  • fix: review observations
  • Use the bridge's ros1 branch, now that it builds against MRPT 3.x; fix RGB/BGR channel swap in image conversion
  • Merge remote-tracking branch 'origin/develop' into feat/mrpt3
  • Merge remote-tracking branch 'origin/feat/per-sensor-time-offset' into feat/mrpt3
  • Merge pull request #8 from MOLAorg/fix/float64-per-point-timestamps
  • Vendor the bridge's ros1 branch instead of ros1-mola-vendored, fixing FLOAT64 per-point timestamps
  • Merge remote-tracking branch 'origin/develop' into feat/mrpt3
  • Merge pull request #6 from MOLAorg/fix/camera-info-distortion-model
  • Add an optional per-sensor time_offset to correct a constant per-sensor stamp bias
  • Accept more camera_info distortion model names, and warn when one is unhandled
  • Populate CObservationImage::cameraParams from sensor_msgs/CameraInfo
  • Merge pull request #5 from MOLAorg/feat/rosbag1-comma-separated-bag-list
  • Accept a comma-separated bag list in rosbag_filename
  • Port to MRPT 3.x: cmake targets, TImageChannels, yaml associativity
  • Merge pull request #4 from MOLAorg/feat/se3-odometry-as-robot-pose
  • Allow reading a 3D odometry source as CObservationRobotPose
  • Report the dataset playback time to the GUI (#3)
  • Fix a segfault in findOutSensorPose, and resolve ROS1-era slashed frame ids
  • Fix build warnings on newer ROS2 distro/g++
  • Contributors: Jose Luis Blanco-Claraco

0.4.0 (2026-08-07)

  • Expose the bag's /tf tree via mola::TransformTreeSource, so other MOLA modules can query the subtree of coordinate frames below a given root (e.g. a legged robot's joints) with poses resolved against it.
  • fix: support missing timestamp channel
  • Hide vendored roslz4/xxhash symbols to prevent collision with a system libxxhash, which could otherwise corrupt LZ4 checksum verification on some distros.
  • update ros rolling to u26.04
  • Contributors: Jose Luis Blanco-Claraco

0.3.0 (2026-07-31)

  • fix clang-format

  • Add use_bag_record_time option for drivers with unsynced header stamps Some drivers (observed on TIERS's Ouster and Livox streams) publish header.stamp from an internal/relative clock never synced to the recording PC's wall clock, which silently breaks ground-truth time lookup for every scan. When set on a sensor, the observation's timestamp is taken from the bag's own message storage time instead.

  • Add support for livox_ros_driver2/CustomMsg too

  • Update mrpt_ros_bridge submodule: drop deprecated point-map overloads Removes the CPointsMapXYZI/CPointsMapXYZIRT fromROS/toROS overloads, which were the source of -Wdeprecated-declarations warnings when building Rosbag1Dataset.cpp; CGenericPointsMap already covers the same conversions.

  • launch: add per-app imgui_app_name for MolaVizImGui Sets a unique imgui_app_name in each launch file so Dear ImGui's layout persistence stores a separate UI configuration per app.

  • Merge pull request #1 from MOLAorg/feature/multi-bag-gt-and-livox-custommsg Multi-bag input, ground-truth trajectory API, and Livox CustomMsg support

  • fix: validate nav_msgs/Odometry GT quaternion; migrate toPointCloud2 off deprecated point map classes

    - Apply the same non-finite-quaternion guard already used for geometry_msgs/PoseStamped to the nav_msgs/Odometry ground-truth branch.

    - Update mrpt_ros_bridge submodule to a commit adding CGenericPointsMap fromROS/toROS overloads for sensor_msgs/PointCloud2, and switch toPointCloud2() to use them

File truncated at 100 lines see the full file

Launch files

Messages

Plugins

No plugins found.

Recent questions tagged mola_input_rosbag1 at Robotics Stack Exchange

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

mola_input_rosbag1 package from mola_input_rosbag1 repo

mola_input_rosbag1

ROS Distro
humble

Package Summary

Version 0.5.0
License BSD-3-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

MOLA DataSource from ROS1 bag files that does not need a ROS1 installation

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

mola_input_rosbag1

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

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

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

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

Typical uses:

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

Supported message types

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

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

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

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

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

Sensor poses and /tf

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

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

Parameters

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

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

Demos

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

1. Visualize raw LiDAR streams

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mola_input_rosbag1

0.5.0 (2026-09-25)

  • ci: add GitHub release workflow on version tags
  • Bump mrpt_ros_bridge: fix FLOAT64 per-point timestamps
  • Merge pull request #10 from MOLAorg/feat/mrpt3
  • Vendor mrpt_ros_bridge's ros1-mola-vendored branch instead of ros1
  • Merge pull request #9 from MOLAorg/feat/mrpt3
  • fix: review observations
  • Use the bridge's ros1 branch, now that it builds against MRPT 3.x; fix RGB/BGR channel swap in image conversion
  • Merge remote-tracking branch 'origin/develop' into feat/mrpt3
  • Merge remote-tracking branch 'origin/feat/per-sensor-time-offset' into feat/mrpt3
  • Merge pull request #8 from MOLAorg/fix/float64-per-point-timestamps
  • Vendor the bridge's ros1 branch instead of ros1-mola-vendored, fixing FLOAT64 per-point timestamps
  • Merge remote-tracking branch 'origin/develop' into feat/mrpt3
  • Merge pull request #6 from MOLAorg/fix/camera-info-distortion-model
  • Add an optional per-sensor time_offset to correct a constant per-sensor stamp bias
  • Accept more camera_info distortion model names, and warn when one is unhandled
  • Populate CObservationImage::cameraParams from sensor_msgs/CameraInfo
  • Merge pull request #5 from MOLAorg/feat/rosbag1-comma-separated-bag-list
  • Accept a comma-separated bag list in rosbag_filename
  • Port to MRPT 3.x: cmake targets, TImageChannels, yaml associativity
  • Merge pull request #4 from MOLAorg/feat/se3-odometry-as-robot-pose
  • Allow reading a 3D odometry source as CObservationRobotPose
  • Report the dataset playback time to the GUI (#3)
  • Fix a segfault in findOutSensorPose, and resolve ROS1-era slashed frame ids
  • Fix build warnings on newer ROS2 distro/g++
  • Contributors: Jose Luis Blanco-Claraco

0.4.0 (2026-08-07)

  • Expose the bag's /tf tree via mola::TransformTreeSource, so other MOLA modules can query the subtree of coordinate frames below a given root (e.g. a legged robot's joints) with poses resolved against it.
  • fix: support missing timestamp channel
  • Hide vendored roslz4/xxhash symbols to prevent collision with a system libxxhash, which could otherwise corrupt LZ4 checksum verification on some distros.
  • update ros rolling to u26.04
  • Contributors: Jose Luis Blanco-Claraco

0.3.0 (2026-07-31)

  • fix clang-format

  • Add use_bag_record_time option for drivers with unsynced header stamps Some drivers (observed on TIERS's Ouster and Livox streams) publish header.stamp from an internal/relative clock never synced to the recording PC's wall clock, which silently breaks ground-truth time lookup for every scan. When set on a sensor, the observation's timestamp is taken from the bag's own message storage time instead.

  • Add support for livox_ros_driver2/CustomMsg too

  • Update mrpt_ros_bridge submodule: drop deprecated point-map overloads Removes the CPointsMapXYZI/CPointsMapXYZIRT fromROS/toROS overloads, which were the source of -Wdeprecated-declarations warnings when building Rosbag1Dataset.cpp; CGenericPointsMap already covers the same conversions.

  • launch: add per-app imgui_app_name for MolaVizImGui Sets a unique imgui_app_name in each launch file so Dear ImGui's layout persistence stores a separate UI configuration per app.

  • Merge pull request #1 from MOLAorg/feature/multi-bag-gt-and-livox-custommsg Multi-bag input, ground-truth trajectory API, and Livox CustomMsg support

  • fix: validate nav_msgs/Odometry GT quaternion; migrate toPointCloud2 off deprecated point map classes

    - Apply the same non-finite-quaternion guard already used for geometry_msgs/PoseStamped to the nav_msgs/Odometry ground-truth branch.

    - Update mrpt_ros_bridge submodule to a commit adding CGenericPointsMap fromROS/toROS overloads for sensor_msgs/PointCloud2, and switch toPointCloud2() to use them

File truncated at 100 lines see the full file

Launch files

Messages

Plugins

No plugins found.

Recent questions tagged mola_input_rosbag1 at Robotics Stack Exchange

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

mola_input_rosbag1 package from mola_input_rosbag1 repo

mola_input_rosbag1

ROS Distro
humble

Package Summary

Version 0.5.0
License BSD-3-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

MOLA DataSource from ROS1 bag files that does not need a ROS1 installation

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

mola_input_rosbag1

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

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

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

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

Typical uses:

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

Supported message types

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

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

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

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

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

Sensor poses and /tf

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

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

Parameters

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

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

Demos

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

1. Visualize raw LiDAR streams

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mola_input_rosbag1

0.5.0 (2026-09-25)

  • ci: add GitHub release workflow on version tags
  • Bump mrpt_ros_bridge: fix FLOAT64 per-point timestamps
  • Merge pull request #10 from MOLAorg/feat/mrpt3
  • Vendor mrpt_ros_bridge's ros1-mola-vendored branch instead of ros1
  • Merge pull request #9 from MOLAorg/feat/mrpt3
  • fix: review observations
  • Use the bridge's ros1 branch, now that it builds against MRPT 3.x; fix RGB/BGR channel swap in image conversion
  • Merge remote-tracking branch 'origin/develop' into feat/mrpt3
  • Merge remote-tracking branch 'origin/feat/per-sensor-time-offset' into feat/mrpt3
  • Merge pull request #8 from MOLAorg/fix/float64-per-point-timestamps
  • Vendor the bridge's ros1 branch instead of ros1-mola-vendored, fixing FLOAT64 per-point timestamps
  • Merge remote-tracking branch 'origin/develop' into feat/mrpt3
  • Merge pull request #6 from MOLAorg/fix/camera-info-distortion-model
  • Add an optional per-sensor time_offset to correct a constant per-sensor stamp bias
  • Accept more camera_info distortion model names, and warn when one is unhandled
  • Populate CObservationImage::cameraParams from sensor_msgs/CameraInfo
  • Merge pull request #5 from MOLAorg/feat/rosbag1-comma-separated-bag-list
  • Accept a comma-separated bag list in rosbag_filename
  • Port to MRPT 3.x: cmake targets, TImageChannels, yaml associativity
  • Merge pull request #4 from MOLAorg/feat/se3-odometry-as-robot-pose
  • Allow reading a 3D odometry source as CObservationRobotPose
  • Report the dataset playback time to the GUI (#3)
  • Fix a segfault in findOutSensorPose, and resolve ROS1-era slashed frame ids
  • Fix build warnings on newer ROS2 distro/g++
  • Contributors: Jose Luis Blanco-Claraco

0.4.0 (2026-08-07)

  • Expose the bag's /tf tree via mola::TransformTreeSource, so other MOLA modules can query the subtree of coordinate frames below a given root (e.g. a legged robot's joints) with poses resolved against it.
  • fix: support missing timestamp channel
  • Hide vendored roslz4/xxhash symbols to prevent collision with a system libxxhash, which could otherwise corrupt LZ4 checksum verification on some distros.
  • update ros rolling to u26.04
  • Contributors: Jose Luis Blanco-Claraco

0.3.0 (2026-07-31)

  • fix clang-format

  • Add use_bag_record_time option for drivers with unsynced header stamps Some drivers (observed on TIERS's Ouster and Livox streams) publish header.stamp from an internal/relative clock never synced to the recording PC's wall clock, which silently breaks ground-truth time lookup for every scan. When set on a sensor, the observation's timestamp is taken from the bag's own message storage time instead.

  • Add support for livox_ros_driver2/CustomMsg too

  • Update mrpt_ros_bridge submodule: drop deprecated point-map overloads Removes the CPointsMapXYZI/CPointsMapXYZIRT fromROS/toROS overloads, which were the source of -Wdeprecated-declarations warnings when building Rosbag1Dataset.cpp; CGenericPointsMap already covers the same conversions.

  • launch: add per-app imgui_app_name for MolaVizImGui Sets a unique imgui_app_name in each launch file so Dear ImGui's layout persistence stores a separate UI configuration per app.

  • Merge pull request #1 from MOLAorg/feature/multi-bag-gt-and-livox-custommsg Multi-bag input, ground-truth trajectory API, and Livox CustomMsg support

  • fix: validate nav_msgs/Odometry GT quaternion; migrate toPointCloud2 off deprecated point map classes

    - Apply the same non-finite-quaternion guard already used for geometry_msgs/PoseStamped to the nav_msgs/Odometry ground-truth branch.

    - Update mrpt_ros_bridge submodule to a commit adding CGenericPointsMap fromROS/toROS overloads for sensor_msgs/PointCloud2, and switch toPointCloud2() to use them

File truncated at 100 lines see the full file

Launch files

Messages

Plugins

No plugins found.

Recent questions tagged mola_input_rosbag1 at Robotics Stack Exchange

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

mola_input_rosbag1 package from mola_input_rosbag1 repo

mola_input_rosbag1

ROS Distro
humble

Package Summary

Version 0.5.0
License BSD-3-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

MOLA DataSource from ROS1 bag files that does not need a ROS1 installation

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

mola_input_rosbag1

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

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

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

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

Typical uses:

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

Supported message types

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

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

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

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

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

Sensor poses and /tf

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

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

Parameters

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

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

Demos

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

1. Visualize raw LiDAR streams

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mola_input_rosbag1

0.5.0 (2026-09-25)

  • ci: add GitHub release workflow on version tags
  • Bump mrpt_ros_bridge: fix FLOAT64 per-point timestamps
  • Merge pull request #10 from MOLAorg/feat/mrpt3
  • Vendor mrpt_ros_bridge's ros1-mola-vendored branch instead of ros1
  • Merge pull request #9 from MOLAorg/feat/mrpt3
  • fix: review observations
  • Use the bridge's ros1 branch, now that it builds against MRPT 3.x; fix RGB/BGR channel swap in image conversion
  • Merge remote-tracking branch 'origin/develop' into feat/mrpt3
  • Merge remote-tracking branch 'origin/feat/per-sensor-time-offset' into feat/mrpt3
  • Merge pull request #8 from MOLAorg/fix/float64-per-point-timestamps
  • Vendor the bridge's ros1 branch instead of ros1-mola-vendored, fixing FLOAT64 per-point timestamps
  • Merge remote-tracking branch 'origin/develop' into feat/mrpt3
  • Merge pull request #6 from MOLAorg/fix/camera-info-distortion-model
  • Add an optional per-sensor time_offset to correct a constant per-sensor stamp bias
  • Accept more camera_info distortion model names, and warn when one is unhandled
  • Populate CObservationImage::cameraParams from sensor_msgs/CameraInfo
  • Merge pull request #5 from MOLAorg/feat/rosbag1-comma-separated-bag-list
  • Accept a comma-separated bag list in rosbag_filename
  • Port to MRPT 3.x: cmake targets, TImageChannels, yaml associativity
  • Merge pull request #4 from MOLAorg/feat/se3-odometry-as-robot-pose
  • Allow reading a 3D odometry source as CObservationRobotPose
  • Report the dataset playback time to the GUI (#3)
  • Fix a segfault in findOutSensorPose, and resolve ROS1-era slashed frame ids
  • Fix build warnings on newer ROS2 distro/g++
  • Contributors: Jose Luis Blanco-Claraco

0.4.0 (2026-08-07)

  • Expose the bag's /tf tree via mola::TransformTreeSource, so other MOLA modules can query the subtree of coordinate frames below a given root (e.g. a legged robot's joints) with poses resolved against it.
  • fix: support missing timestamp channel
  • Hide vendored roslz4/xxhash symbols to prevent collision with a system libxxhash, which could otherwise corrupt LZ4 checksum verification on some distros.
  • update ros rolling to u26.04
  • Contributors: Jose Luis Blanco-Claraco

0.3.0 (2026-07-31)

  • fix clang-format

  • Add use_bag_record_time option for drivers with unsynced header stamps Some drivers (observed on TIERS's Ouster and Livox streams) publish header.stamp from an internal/relative clock never synced to the recording PC's wall clock, which silently breaks ground-truth time lookup for every scan. When set on a sensor, the observation's timestamp is taken from the bag's own message storage time instead.

  • Add support for livox_ros_driver2/CustomMsg too

  • Update mrpt_ros_bridge submodule: drop deprecated point-map overloads Removes the CPointsMapXYZI/CPointsMapXYZIRT fromROS/toROS overloads, which were the source of -Wdeprecated-declarations warnings when building Rosbag1Dataset.cpp; CGenericPointsMap already covers the same conversions.

  • launch: add per-app imgui_app_name for MolaVizImGui Sets a unique imgui_app_name in each launch file so Dear ImGui's layout persistence stores a separate UI configuration per app.

  • Merge pull request #1 from MOLAorg/feature/multi-bag-gt-and-livox-custommsg Multi-bag input, ground-truth trajectory API, and Livox CustomMsg support

  • fix: validate nav_msgs/Odometry GT quaternion; migrate toPointCloud2 off deprecated point map classes

    - Apply the same non-finite-quaternion guard already used for geometry_msgs/PoseStamped to the nav_msgs/Odometry ground-truth branch.

    - Update mrpt_ros_bridge submodule to a commit adding CGenericPointsMap fromROS/toROS overloads for sensor_msgs/PointCloud2, and switch toPointCloud2() to use them

File truncated at 100 lines see the full file

Launch files

Messages

Plugins

No plugins found.

Recent questions tagged mola_input_rosbag1 at Robotics Stack Exchange

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

mola_input_rosbag1 package from mola_input_rosbag1 repo

mola_input_rosbag1

ROS Distro
humble

Package Summary

Version 0.5.0
License BSD-3-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

MOLA DataSource from ROS1 bag files that does not need a ROS1 installation

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

mola_input_rosbag1

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

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

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

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

Typical uses:

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

Supported message types

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

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

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

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

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

Sensor poses and /tf

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

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

Parameters

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

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

Demos

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

1. Visualize raw LiDAR streams

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mola_input_rosbag1

0.5.0 (2026-09-25)

  • ci: add GitHub release workflow on version tags
  • Bump mrpt_ros_bridge: fix FLOAT64 per-point timestamps
  • Merge pull request #10 from MOLAorg/feat/mrpt3
  • Vendor mrpt_ros_bridge's ros1-mola-vendored branch instead of ros1
  • Merge pull request #9 from MOLAorg/feat/mrpt3
  • fix: review observations
  • Use the bridge's ros1 branch, now that it builds against MRPT 3.x; fix RGB/BGR channel swap in image conversion
  • Merge remote-tracking branch 'origin/develop' into feat/mrpt3
  • Merge remote-tracking branch 'origin/feat/per-sensor-time-offset' into feat/mrpt3
  • Merge pull request #8 from MOLAorg/fix/float64-per-point-timestamps
  • Vendor the bridge's ros1 branch instead of ros1-mola-vendored, fixing FLOAT64 per-point timestamps
  • Merge remote-tracking branch 'origin/develop' into feat/mrpt3
  • Merge pull request #6 from MOLAorg/fix/camera-info-distortion-model
  • Add an optional per-sensor time_offset to correct a constant per-sensor stamp bias
  • Accept more camera_info distortion model names, and warn when one is unhandled
  • Populate CObservationImage::cameraParams from sensor_msgs/CameraInfo
  • Merge pull request #5 from MOLAorg/feat/rosbag1-comma-separated-bag-list
  • Accept a comma-separated bag list in rosbag_filename
  • Port to MRPT 3.x: cmake targets, TImageChannels, yaml associativity
  • Merge pull request #4 from MOLAorg/feat/se3-odometry-as-robot-pose
  • Allow reading a 3D odometry source as CObservationRobotPose
  • Report the dataset playback time to the GUI (#3)
  • Fix a segfault in findOutSensorPose, and resolve ROS1-era slashed frame ids
  • Fix build warnings on newer ROS2 distro/g++
  • Contributors: Jose Luis Blanco-Claraco

0.4.0 (2026-08-07)

  • Expose the bag's /tf tree via mola::TransformTreeSource, so other MOLA modules can query the subtree of coordinate frames below a given root (e.g. a legged robot's joints) with poses resolved against it.
  • fix: support missing timestamp channel
  • Hide vendored roslz4/xxhash symbols to prevent collision with a system libxxhash, which could otherwise corrupt LZ4 checksum verification on some distros.
  • update ros rolling to u26.04
  • Contributors: Jose Luis Blanco-Claraco

0.3.0 (2026-07-31)

  • fix clang-format

  • Add use_bag_record_time option for drivers with unsynced header stamps Some drivers (observed on TIERS's Ouster and Livox streams) publish header.stamp from an internal/relative clock never synced to the recording PC's wall clock, which silently breaks ground-truth time lookup for every scan. When set on a sensor, the observation's timestamp is taken from the bag's own message storage time instead.

  • Add support for livox_ros_driver2/CustomMsg too

  • Update mrpt_ros_bridge submodule: drop deprecated point-map overloads Removes the CPointsMapXYZI/CPointsMapXYZIRT fromROS/toROS overloads, which were the source of -Wdeprecated-declarations warnings when building Rosbag1Dataset.cpp; CGenericPointsMap already covers the same conversions.

  • launch: add per-app imgui_app_name for MolaVizImGui Sets a unique imgui_app_name in each launch file so Dear ImGui's layout persistence stores a separate UI configuration per app.

  • Merge pull request #1 from MOLAorg/feature/multi-bag-gt-and-livox-custommsg Multi-bag input, ground-truth trajectory API, and Livox CustomMsg support

  • fix: validate nav_msgs/Odometry GT quaternion; migrate toPointCloud2 off deprecated point map classes

    - Apply the same non-finite-quaternion guard already used for geometry_msgs/PoseStamped to the nav_msgs/Odometry ground-truth branch.

    - Update mrpt_ros_bridge submodule to a commit adding CGenericPointsMap fromROS/toROS overloads for sensor_msgs/PointCloud2, and switch toPointCloud2() to use them

File truncated at 100 lines see the full file

Launch files

Messages

Plugins

No plugins found.

Recent questions tagged mola_input_rosbag1 at Robotics Stack Exchange

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

mola_input_rosbag1 package from mola_input_rosbag1 repo

mola_input_rosbag1

ROS Distro
humble

Package Summary

Version 0.5.0
License BSD-3-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

MOLA DataSource from ROS1 bag files that does not need a ROS1 installation

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

mola_input_rosbag1

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

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

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

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

Typical uses:

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

Supported message types

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

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

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

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

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

Sensor poses and /tf

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

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

Parameters

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

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

Demos

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

1. Visualize raw LiDAR streams

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mola_input_rosbag1

0.5.0 (2026-09-25)

  • ci: add GitHub release workflow on version tags
  • Bump mrpt_ros_bridge: fix FLOAT64 per-point timestamps
  • Merge pull request #10 from MOLAorg/feat/mrpt3
  • Vendor mrpt_ros_bridge's ros1-mola-vendored branch instead of ros1
  • Merge pull request #9 from MOLAorg/feat/mrpt3
  • fix: review observations
  • Use the bridge's ros1 branch, now that it builds against MRPT 3.x; fix RGB/BGR channel swap in image conversion
  • Merge remote-tracking branch 'origin/develop' into feat/mrpt3
  • Merge remote-tracking branch 'origin/feat/per-sensor-time-offset' into feat/mrpt3
  • Merge pull request #8 from MOLAorg/fix/float64-per-point-timestamps
  • Vendor the bridge's ros1 branch instead of ros1-mola-vendored, fixing FLOAT64 per-point timestamps
  • Merge remote-tracking branch 'origin/develop' into feat/mrpt3
  • Merge pull request #6 from MOLAorg/fix/camera-info-distortion-model
  • Add an optional per-sensor time_offset to correct a constant per-sensor stamp bias
  • Accept more camera_info distortion model names, and warn when one is unhandled
  • Populate CObservationImage::cameraParams from sensor_msgs/CameraInfo
  • Merge pull request #5 from MOLAorg/feat/rosbag1-comma-separated-bag-list
  • Accept a comma-separated bag list in rosbag_filename
  • Port to MRPT 3.x: cmake targets, TImageChannels, yaml associativity
  • Merge pull request #4 from MOLAorg/feat/se3-odometry-as-robot-pose
  • Allow reading a 3D odometry source as CObservationRobotPose
  • Report the dataset playback time to the GUI (#3)
  • Fix a segfault in findOutSensorPose, and resolve ROS1-era slashed frame ids
  • Fix build warnings on newer ROS2 distro/g++
  • Contributors: Jose Luis Blanco-Claraco

0.4.0 (2026-08-07)

  • Expose the bag's /tf tree via mola::TransformTreeSource, so other MOLA modules can query the subtree of coordinate frames below a given root (e.g. a legged robot's joints) with poses resolved against it.
  • fix: support missing timestamp channel
  • Hide vendored roslz4/xxhash symbols to prevent collision with a system libxxhash, which could otherwise corrupt LZ4 checksum verification on some distros.
  • update ros rolling to u26.04
  • Contributors: Jose Luis Blanco-Claraco

0.3.0 (2026-07-31)

  • fix clang-format

  • Add use_bag_record_time option for drivers with unsynced header stamps Some drivers (observed on TIERS's Ouster and Livox streams) publish header.stamp from an internal/relative clock never synced to the recording PC's wall clock, which silently breaks ground-truth time lookup for every scan. When set on a sensor, the observation's timestamp is taken from the bag's own message storage time instead.

  • Add support for livox_ros_driver2/CustomMsg too

  • Update mrpt_ros_bridge submodule: drop deprecated point-map overloads Removes the CPointsMapXYZI/CPointsMapXYZIRT fromROS/toROS overloads, which were the source of -Wdeprecated-declarations warnings when building Rosbag1Dataset.cpp; CGenericPointsMap already covers the same conversions.

  • launch: add per-app imgui_app_name for MolaVizImGui Sets a unique imgui_app_name in each launch file so Dear ImGui's layout persistence stores a separate UI configuration per app.

  • Merge pull request #1 from MOLAorg/feature/multi-bag-gt-and-livox-custommsg Multi-bag input, ground-truth trajectory API, and Livox CustomMsg support

  • fix: validate nav_msgs/Odometry GT quaternion; migrate toPointCloud2 off deprecated point map classes

    - Apply the same non-finite-quaternion guard already used for geometry_msgs/PoseStamped to the nav_msgs/Odometry ground-truth branch.

    - Update mrpt_ros_bridge submodule to a commit adding CGenericPointsMap fromROS/toROS overloads for sensor_msgs/PointCloud2, and switch toPointCloud2() to use them

File truncated at 100 lines see the full file

Launch files

Messages

Plugins

No plugins found.

Recent questions tagged mola_input_rosbag1 at Robotics Stack Exchange

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

mola_input_rosbag1 package from mola_input_rosbag1 repo

mola_input_rosbag1

ROS Distro
humble

Package Summary

Version 0.5.0
License BSD-3-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

MOLA DataSource from ROS1 bag files that does not need a ROS1 installation

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

mola_input_rosbag1

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

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

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

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

Typical uses:

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

Supported message types

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

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

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

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

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

Sensor poses and /tf

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

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

Parameters

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

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

Demos

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

1. Visualize raw LiDAR streams

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mola_input_rosbag1

0.5.0 (2026-09-25)

  • ci: add GitHub release workflow on version tags
  • Bump mrpt_ros_bridge: fix FLOAT64 per-point timestamps
  • Merge pull request #10 from MOLAorg/feat/mrpt3
  • Vendor mrpt_ros_bridge's ros1-mola-vendored branch instead of ros1
  • Merge pull request #9 from MOLAorg/feat/mrpt3
  • fix: review observations
  • Use the bridge's ros1 branch, now that it builds against MRPT 3.x; fix RGB/BGR channel swap in image conversion
  • Merge remote-tracking branch 'origin/develop' into feat/mrpt3
  • Merge remote-tracking branch 'origin/feat/per-sensor-time-offset' into feat/mrpt3
  • Merge pull request #8 from MOLAorg/fix/float64-per-point-timestamps
  • Vendor the bridge's ros1 branch instead of ros1-mola-vendored, fixing FLOAT64 per-point timestamps
  • Merge remote-tracking branch 'origin/develop' into feat/mrpt3
  • Merge pull request #6 from MOLAorg/fix/camera-info-distortion-model
  • Add an optional per-sensor time_offset to correct a constant per-sensor stamp bias
  • Accept more camera_info distortion model names, and warn when one is unhandled
  • Populate CObservationImage::cameraParams from sensor_msgs/CameraInfo
  • Merge pull request #5 from MOLAorg/feat/rosbag1-comma-separated-bag-list
  • Accept a comma-separated bag list in rosbag_filename
  • Port to MRPT 3.x: cmake targets, TImageChannels, yaml associativity
  • Merge pull request #4 from MOLAorg/feat/se3-odometry-as-robot-pose
  • Allow reading a 3D odometry source as CObservationRobotPose
  • Report the dataset playback time to the GUI (#3)
  • Fix a segfault in findOutSensorPose, and resolve ROS1-era slashed frame ids
  • Fix build warnings on newer ROS2 distro/g++
  • Contributors: Jose Luis Blanco-Claraco

0.4.0 (2026-08-07)

  • Expose the bag's /tf tree via mola::TransformTreeSource, so other MOLA modules can query the subtree of coordinate frames below a given root (e.g. a legged robot's joints) with poses resolved against it.
  • fix: support missing timestamp channel
  • Hide vendored roslz4/xxhash symbols to prevent collision with a system libxxhash, which could otherwise corrupt LZ4 checksum verification on some distros.
  • update ros rolling to u26.04
  • Contributors: Jose Luis Blanco-Claraco

0.3.0 (2026-07-31)

  • fix clang-format

  • Add use_bag_record_time option for drivers with unsynced header stamps Some drivers (observed on TIERS's Ouster and Livox streams) publish header.stamp from an internal/relative clock never synced to the recording PC's wall clock, which silently breaks ground-truth time lookup for every scan. When set on a sensor, the observation's timestamp is taken from the bag's own message storage time instead.

  • Add support for livox_ros_driver2/CustomMsg too

  • Update mrpt_ros_bridge submodule: drop deprecated point-map overloads Removes the CPointsMapXYZI/CPointsMapXYZIRT fromROS/toROS overloads, which were the source of -Wdeprecated-declarations warnings when building Rosbag1Dataset.cpp; CGenericPointsMap already covers the same conversions.

  • launch: add per-app imgui_app_name for MolaVizImGui Sets a unique imgui_app_name in each launch file so Dear ImGui's layout persistence stores a separate UI configuration per app.

  • Merge pull request #1 from MOLAorg/feature/multi-bag-gt-and-livox-custommsg Multi-bag input, ground-truth trajectory API, and Livox CustomMsg support

  • fix: validate nav_msgs/Odometry GT quaternion; migrate toPointCloud2 off deprecated point map classes

    - Apply the same non-finite-quaternion guard already used for geometry_msgs/PoseStamped to the nav_msgs/Odometry ground-truth branch.

    - Update mrpt_ros_bridge submodule to a commit adding CGenericPointsMap fromROS/toROS overloads for sensor_msgs/PointCloud2, and switch toPointCloud2() to use them

File truncated at 100 lines see the full file

Launch files

Messages

Plugins

No plugins found.

Recent questions tagged mola_input_rosbag1 at Robotics Stack Exchange

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

mola_input_rosbag1 package from mola_input_rosbag1 repo

mola_input_rosbag1

ROS Distro
humble

Package Summary

Version 0.5.0
License BSD-3-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

MOLA DataSource from ROS1 bag files that does not need a ROS1 installation

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

mola_input_rosbag1

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

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

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

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

Typical uses:

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

Supported message types

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

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

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

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

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

Sensor poses and /tf

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

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

Parameters

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

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

Demos

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

1. Visualize raw LiDAR streams

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mola_input_rosbag1

0.5.0 (2026-09-25)

  • ci: add GitHub release workflow on version tags
  • Bump mrpt_ros_bridge: fix FLOAT64 per-point timestamps
  • Merge pull request #10 from MOLAorg/feat/mrpt3
  • Vendor mrpt_ros_bridge's ros1-mola-vendored branch instead of ros1
  • Merge pull request #9 from MOLAorg/feat/mrpt3
  • fix: review observations
  • Use the bridge's ros1 branch, now that it builds against MRPT 3.x; fix RGB/BGR channel swap in image conversion
  • Merge remote-tracking branch 'origin/develop' into feat/mrpt3
  • Merge remote-tracking branch 'origin/feat/per-sensor-time-offset' into feat/mrpt3
  • Merge pull request #8 from MOLAorg/fix/float64-per-point-timestamps
  • Vendor the bridge's ros1 branch instead of ros1-mola-vendored, fixing FLOAT64 per-point timestamps
  • Merge remote-tracking branch 'origin/develop' into feat/mrpt3
  • Merge pull request #6 from MOLAorg/fix/camera-info-distortion-model
  • Add an optional per-sensor time_offset to correct a constant per-sensor stamp bias
  • Accept more camera_info distortion model names, and warn when one is unhandled
  • Populate CObservationImage::cameraParams from sensor_msgs/CameraInfo
  • Merge pull request #5 from MOLAorg/feat/rosbag1-comma-separated-bag-list
  • Accept a comma-separated bag list in rosbag_filename
  • Port to MRPT 3.x: cmake targets, TImageChannels, yaml associativity
  • Merge pull request #4 from MOLAorg/feat/se3-odometry-as-robot-pose
  • Allow reading a 3D odometry source as CObservationRobotPose
  • Report the dataset playback time to the GUI (#3)
  • Fix a segfault in findOutSensorPose, and resolve ROS1-era slashed frame ids
  • Fix build warnings on newer ROS2 distro/g++
  • Contributors: Jose Luis Blanco-Claraco

0.4.0 (2026-08-07)

  • Expose the bag's /tf tree via mola::TransformTreeSource, so other MOLA modules can query the subtree of coordinate frames below a given root (e.g. a legged robot's joints) with poses resolved against it.
  • fix: support missing timestamp channel
  • Hide vendored roslz4/xxhash symbols to prevent collision with a system libxxhash, which could otherwise corrupt LZ4 checksum verification on some distros.
  • update ros rolling to u26.04
  • Contributors: Jose Luis Blanco-Claraco

0.3.0 (2026-07-31)

  • fix clang-format

  • Add use_bag_record_time option for drivers with unsynced header stamps Some drivers (observed on TIERS's Ouster and Livox streams) publish header.stamp from an internal/relative clock never synced to the recording PC's wall clock, which silently breaks ground-truth time lookup for every scan. When set on a sensor, the observation's timestamp is taken from the bag's own message storage time instead.

  • Add support for livox_ros_driver2/CustomMsg too

  • Update mrpt_ros_bridge submodule: drop deprecated point-map overloads Removes the CPointsMapXYZI/CPointsMapXYZIRT fromROS/toROS overloads, which were the source of -Wdeprecated-declarations warnings when building Rosbag1Dataset.cpp; CGenericPointsMap already covers the same conversions.

  • launch: add per-app imgui_app_name for MolaVizImGui Sets a unique imgui_app_name in each launch file so Dear ImGui's layout persistence stores a separate UI configuration per app.

  • Merge pull request #1 from MOLAorg/feature/multi-bag-gt-and-livox-custommsg Multi-bag input, ground-truth trajectory API, and Livox CustomMsg support

  • fix: validate nav_msgs/Odometry GT quaternion; migrate toPointCloud2 off deprecated point map classes

    - Apply the same non-finite-quaternion guard already used for geometry_msgs/PoseStamped to the nav_msgs/Odometry ground-truth branch.

    - Update mrpt_ros_bridge submodule to a commit adding CGenericPointsMap fromROS/toROS overloads for sensor_msgs/PointCloud2, and switch toPointCloud2() to use them

File truncated at 100 lines see the full file

Launch files

Messages

Plugins

No plugins found.

Recent questions tagged mola_input_rosbag1 at Robotics Stack Exchange

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

mola_input_rosbag1 package from mola_input_rosbag1 repo

mola_input_rosbag1

ROS Distro
humble

Package Summary

Version 0.5.0
License BSD-3-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

MOLA DataSource from ROS1 bag files that does not need a ROS1 installation

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

mola_input_rosbag1

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

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

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

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

Typical uses:

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

Supported message types

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

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

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

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

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

Sensor poses and /tf

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

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

Parameters

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

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

Demos

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

1. Visualize raw LiDAR streams

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mola_input_rosbag1

0.5.0 (2026-09-25)

  • ci: add GitHub release workflow on version tags
  • Bump mrpt_ros_bridge: fix FLOAT64 per-point timestamps
  • Merge pull request #10 from MOLAorg/feat/mrpt3
  • Vendor mrpt_ros_bridge's ros1-mola-vendored branch instead of ros1
  • Merge pull request #9 from MOLAorg/feat/mrpt3
  • fix: review observations
  • Use the bridge's ros1 branch, now that it builds against MRPT 3.x; fix RGB/BGR channel swap in image conversion
  • Merge remote-tracking branch 'origin/develop' into feat/mrpt3
  • Merge remote-tracking branch 'origin/feat/per-sensor-time-offset' into feat/mrpt3
  • Merge pull request #8 from MOLAorg/fix/float64-per-point-timestamps
  • Vendor the bridge's ros1 branch instead of ros1-mola-vendored, fixing FLOAT64 per-point timestamps
  • Merge remote-tracking branch 'origin/develop' into feat/mrpt3
  • Merge pull request #6 from MOLAorg/fix/camera-info-distortion-model
  • Add an optional per-sensor time_offset to correct a constant per-sensor stamp bias
  • Accept more camera_info distortion model names, and warn when one is unhandled
  • Populate CObservationImage::cameraParams from sensor_msgs/CameraInfo
  • Merge pull request #5 from MOLAorg/feat/rosbag1-comma-separated-bag-list
  • Accept a comma-separated bag list in rosbag_filename
  • Port to MRPT 3.x: cmake targets, TImageChannels, yaml associativity
  • Merge pull request #4 from MOLAorg/feat/se3-odometry-as-robot-pose
  • Allow reading a 3D odometry source as CObservationRobotPose
  • Report the dataset playback time to the GUI (#3)
  • Fix a segfault in findOutSensorPose, and resolve ROS1-era slashed frame ids
  • Fix build warnings on newer ROS2 distro/g++
  • Contributors: Jose Luis Blanco-Claraco

0.4.0 (2026-08-07)

  • Expose the bag's /tf tree via mola::TransformTreeSource, so other MOLA modules can query the subtree of coordinate frames below a given root (e.g. a legged robot's joints) with poses resolved against it.
  • fix: support missing timestamp channel
  • Hide vendored roslz4/xxhash symbols to prevent collision with a system libxxhash, which could otherwise corrupt LZ4 checksum verification on some distros.
  • update ros rolling to u26.04
  • Contributors: Jose Luis Blanco-Claraco

0.3.0 (2026-07-31)

  • fix clang-format

  • Add use_bag_record_time option for drivers with unsynced header stamps Some drivers (observed on TIERS's Ouster and Livox streams) publish header.stamp from an internal/relative clock never synced to the recording PC's wall clock, which silently breaks ground-truth time lookup for every scan. When set on a sensor, the observation's timestamp is taken from the bag's own message storage time instead.

  • Add support for livox_ros_driver2/CustomMsg too

  • Update mrpt_ros_bridge submodule: drop deprecated point-map overloads Removes the CPointsMapXYZI/CPointsMapXYZIRT fromROS/toROS overloads, which were the source of -Wdeprecated-declarations warnings when building Rosbag1Dataset.cpp; CGenericPointsMap already covers the same conversions.

  • launch: add per-app imgui_app_name for MolaVizImGui Sets a unique imgui_app_name in each launch file so Dear ImGui's layout persistence stores a separate UI configuration per app.

  • Merge pull request #1 from MOLAorg/feature/multi-bag-gt-and-livox-custommsg Multi-bag input, ground-truth trajectory API, and Livox CustomMsg support

  • fix: validate nav_msgs/Odometry GT quaternion; migrate toPointCloud2 off deprecated point map classes

    - Apply the same non-finite-quaternion guard already used for geometry_msgs/PoseStamped to the nav_msgs/Odometry ground-truth branch.

    - Update mrpt_ros_bridge submodule to a commit adding CGenericPointsMap fromROS/toROS overloads for sensor_msgs/PointCloud2, and switch toPointCloud2() to use them

File truncated at 100 lines see the full file

Launch files

Messages

Plugins

No plugins found.

Recent questions tagged mola_input_rosbag1 at Robotics Stack Exchange

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

mola_input_rosbag1 package from mola_input_rosbag1 repo

mola_input_rosbag1

ROS Distro
humble

Package Summary

Version 0.5.0
License BSD-3-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

MOLA DataSource from ROS1 bag files that does not need a ROS1 installation

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

mola_input_rosbag1

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

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

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

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

Typical uses:

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

Supported message types

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

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

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

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

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

Sensor poses and /tf

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

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

Parameters

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

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

Demos

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

1. Visualize raw LiDAR streams

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mola_input_rosbag1

0.5.0 (2026-09-25)

  • ci: add GitHub release workflow on version tags
  • Bump mrpt_ros_bridge: fix FLOAT64 per-point timestamps
  • Merge pull request #10 from MOLAorg/feat/mrpt3
  • Vendor mrpt_ros_bridge's ros1-mola-vendored branch instead of ros1
  • Merge pull request #9 from MOLAorg/feat/mrpt3
  • fix: review observations
  • Use the bridge's ros1 branch, now that it builds against MRPT 3.x; fix RGB/BGR channel swap in image conversion
  • Merge remote-tracking branch 'origin/develop' into feat/mrpt3
  • Merge remote-tracking branch 'origin/feat/per-sensor-time-offset' into feat/mrpt3
  • Merge pull request #8 from MOLAorg/fix/float64-per-point-timestamps
  • Vendor the bridge's ros1 branch instead of ros1-mola-vendored, fixing FLOAT64 per-point timestamps
  • Merge remote-tracking branch 'origin/develop' into feat/mrpt3
  • Merge pull request #6 from MOLAorg/fix/camera-info-distortion-model
  • Add an optional per-sensor time_offset to correct a constant per-sensor stamp bias
  • Accept more camera_info distortion model names, and warn when one is unhandled
  • Populate CObservationImage::cameraParams from sensor_msgs/CameraInfo
  • Merge pull request #5 from MOLAorg/feat/rosbag1-comma-separated-bag-list
  • Accept a comma-separated bag list in rosbag_filename
  • Port to MRPT 3.x: cmake targets, TImageChannels, yaml associativity
  • Merge pull request #4 from MOLAorg/feat/se3-odometry-as-robot-pose
  • Allow reading a 3D odometry source as CObservationRobotPose
  • Report the dataset playback time to the GUI (#3)
  • Fix a segfault in findOutSensorPose, and resolve ROS1-era slashed frame ids
  • Fix build warnings on newer ROS2 distro/g++
  • Contributors: Jose Luis Blanco-Claraco

0.4.0 (2026-08-07)

  • Expose the bag's /tf tree via mola::TransformTreeSource, so other MOLA modules can query the subtree of coordinate frames below a given root (e.g. a legged robot's joints) with poses resolved against it.
  • fix: support missing timestamp channel
  • Hide vendored roslz4/xxhash symbols to prevent collision with a system libxxhash, which could otherwise corrupt LZ4 checksum verification on some distros.
  • update ros rolling to u26.04
  • Contributors: Jose Luis Blanco-Claraco

0.3.0 (2026-07-31)

  • fix clang-format

  • Add use_bag_record_time option for drivers with unsynced header stamps Some drivers (observed on TIERS's Ouster and Livox streams) publish header.stamp from an internal/relative clock never synced to the recording PC's wall clock, which silently breaks ground-truth time lookup for every scan. When set on a sensor, the observation's timestamp is taken from the bag's own message storage time instead.

  • Add support for livox_ros_driver2/CustomMsg too

  • Update mrpt_ros_bridge submodule: drop deprecated point-map overloads Removes the CPointsMapXYZI/CPointsMapXYZIRT fromROS/toROS overloads, which were the source of -Wdeprecated-declarations warnings when building Rosbag1Dataset.cpp; CGenericPointsMap already covers the same conversions.

  • launch: add per-app imgui_app_name for MolaVizImGui Sets a unique imgui_app_name in each launch file so Dear ImGui's layout persistence stores a separate UI configuration per app.

  • Merge pull request #1 from MOLAorg/feature/multi-bag-gt-and-livox-custommsg Multi-bag input, ground-truth trajectory API, and Livox CustomMsg support

  • fix: validate nav_msgs/Odometry GT quaternion; migrate toPointCloud2 off deprecated point map classes

    - Apply the same non-finite-quaternion guard already used for geometry_msgs/PoseStamped to the nav_msgs/Odometry ground-truth branch.

    - Update mrpt_ros_bridge submodule to a commit adding CGenericPointsMap fromROS/toROS overloads for sensor_msgs/PointCloud2, and switch toPointCloud2() to use them

File truncated at 100 lines see the full file

Launch files

Messages

Plugins

No plugins found.

Recent questions tagged mola_input_rosbag1 at Robotics Stack Exchange

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

mola_input_rosbag1 package from mola_input_rosbag1 repo

mola_input_rosbag1

ROS Distro
humble

Package Summary

Version 0.5.0
License BSD-3-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

MOLA DataSource from ROS1 bag files that does not need a ROS1 installation

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

mola_input_rosbag1

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

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

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

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

Typical uses:

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

Supported message types

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

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

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

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

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

Sensor poses and /tf

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

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

Parameters

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

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

Demos

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

1. Visualize raw LiDAR streams

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mola_input_rosbag1

0.5.0 (2026-09-25)

  • ci: add GitHub release workflow on version tags
  • Bump mrpt_ros_bridge: fix FLOAT64 per-point timestamps
  • Merge pull request #10 from MOLAorg/feat/mrpt3
  • Vendor mrpt_ros_bridge's ros1-mola-vendored branch instead of ros1
  • Merge pull request #9 from MOLAorg/feat/mrpt3
  • fix: review observations
  • Use the bridge's ros1 branch, now that it builds against MRPT 3.x; fix RGB/BGR channel swap in image conversion
  • Merge remote-tracking branch 'origin/develop' into feat/mrpt3
  • Merge remote-tracking branch 'origin/feat/per-sensor-time-offset' into feat/mrpt3
  • Merge pull request #8 from MOLAorg/fix/float64-per-point-timestamps
  • Vendor the bridge's ros1 branch instead of ros1-mola-vendored, fixing FLOAT64 per-point timestamps
  • Merge remote-tracking branch 'origin/develop' into feat/mrpt3
  • Merge pull request #6 from MOLAorg/fix/camera-info-distortion-model
  • Add an optional per-sensor time_offset to correct a constant per-sensor stamp bias
  • Accept more camera_info distortion model names, and warn when one is unhandled
  • Populate CObservationImage::cameraParams from sensor_msgs/CameraInfo
  • Merge pull request #5 from MOLAorg/feat/rosbag1-comma-separated-bag-list
  • Accept a comma-separated bag list in rosbag_filename
  • Port to MRPT 3.x: cmake targets, TImageChannels, yaml associativity
  • Merge pull request #4 from MOLAorg/feat/se3-odometry-as-robot-pose
  • Allow reading a 3D odometry source as CObservationRobotPose
  • Report the dataset playback time to the GUI (#3)
  • Fix a segfault in findOutSensorPose, and resolve ROS1-era slashed frame ids
  • Fix build warnings on newer ROS2 distro/g++
  • Contributors: Jose Luis Blanco-Claraco

0.4.0 (2026-08-07)

  • Expose the bag's /tf tree via mola::TransformTreeSource, so other MOLA modules can query the subtree of coordinate frames below a given root (e.g. a legged robot's joints) with poses resolved against it.
  • fix: support missing timestamp channel
  • Hide vendored roslz4/xxhash symbols to prevent collision with a system libxxhash, which could otherwise corrupt LZ4 checksum verification on some distros.
  • update ros rolling to u26.04
  • Contributors: Jose Luis Blanco-Claraco

0.3.0 (2026-07-31)

  • fix clang-format

  • Add use_bag_record_time option for drivers with unsynced header stamps Some drivers (observed on TIERS's Ouster and Livox streams) publish header.stamp from an internal/relative clock never synced to the recording PC's wall clock, which silently breaks ground-truth time lookup for every scan. When set on a sensor, the observation's timestamp is taken from the bag's own message storage time instead.

  • Add support for livox_ros_driver2/CustomMsg too

  • Update mrpt_ros_bridge submodule: drop deprecated point-map overloads Removes the CPointsMapXYZI/CPointsMapXYZIRT fromROS/toROS overloads, which were the source of -Wdeprecated-declarations warnings when building Rosbag1Dataset.cpp; CGenericPointsMap already covers the same conversions.

  • launch: add per-app imgui_app_name for MolaVizImGui Sets a unique imgui_app_name in each launch file so Dear ImGui's layout persistence stores a separate UI configuration per app.

  • Merge pull request #1 from MOLAorg/feature/multi-bag-gt-and-livox-custommsg Multi-bag input, ground-truth trajectory API, and Livox CustomMsg support

  • fix: validate nav_msgs/Odometry GT quaternion; migrate toPointCloud2 off deprecated point map classes

    - Apply the same non-finite-quaternion guard already used for geometry_msgs/PoseStamped to the nav_msgs/Odometry ground-truth branch.

    - Update mrpt_ros_bridge submodule to a commit adding CGenericPointsMap fromROS/toROS overloads for sensor_msgs/PointCloud2, and switch toPointCloud2() to use them

File truncated at 100 lines see the full file

Launch files

Messages

Plugins

No plugins found.

Recent questions tagged mola_input_rosbag1 at Robotics Stack Exchange

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

mola_input_rosbag1 package from mola_input_rosbag1 repo

mola_input_rosbag1

ROS Distro
humble

Package Summary

Version 0.5.0
License BSD-3-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

MOLA DataSource from ROS1 bag files that does not need a ROS1 installation

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

mola_input_rosbag1

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

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

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

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

Typical uses:

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

Supported message types

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

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

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

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

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

Sensor poses and /tf

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

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

Parameters

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

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

Demos

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

1. Visualize raw LiDAR streams

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mola_input_rosbag1

0.5.0 (2026-09-25)

  • ci: add GitHub release workflow on version tags
  • Bump mrpt_ros_bridge: fix FLOAT64 per-point timestamps
  • Merge pull request #10 from MOLAorg/feat/mrpt3
  • Vendor mrpt_ros_bridge's ros1-mola-vendored branch instead of ros1
  • Merge pull request #9 from MOLAorg/feat/mrpt3
  • fix: review observations
  • Use the bridge's ros1 branch, now that it builds against MRPT 3.x; fix RGB/BGR channel swap in image conversion
  • Merge remote-tracking branch 'origin/develop' into feat/mrpt3
  • Merge remote-tracking branch 'origin/feat/per-sensor-time-offset' into feat/mrpt3
  • Merge pull request #8 from MOLAorg/fix/float64-per-point-timestamps
  • Vendor the bridge's ros1 branch instead of ros1-mola-vendored, fixing FLOAT64 per-point timestamps
  • Merge remote-tracking branch 'origin/develop' into feat/mrpt3
  • Merge pull request #6 from MOLAorg/fix/camera-info-distortion-model
  • Add an optional per-sensor time_offset to correct a constant per-sensor stamp bias
  • Accept more camera_info distortion model names, and warn when one is unhandled
  • Populate CObservationImage::cameraParams from sensor_msgs/CameraInfo
  • Merge pull request #5 from MOLAorg/feat/rosbag1-comma-separated-bag-list
  • Accept a comma-separated bag list in rosbag_filename
  • Port to MRPT 3.x: cmake targets, TImageChannels, yaml associativity
  • Merge pull request #4 from MOLAorg/feat/se3-odometry-as-robot-pose
  • Allow reading a 3D odometry source as CObservationRobotPose
  • Report the dataset playback time to the GUI (#3)
  • Fix a segfault in findOutSensorPose, and resolve ROS1-era slashed frame ids
  • Fix build warnings on newer ROS2 distro/g++
  • Contributors: Jose Luis Blanco-Claraco

0.4.0 (2026-08-07)

  • Expose the bag's /tf tree via mola::TransformTreeSource, so other MOLA modules can query the subtree of coordinate frames below a given root (e.g. a legged robot's joints) with poses resolved against it.
  • fix: support missing timestamp channel
  • Hide vendored roslz4/xxhash symbols to prevent collision with a system libxxhash, which could otherwise corrupt LZ4 checksum verification on some distros.
  • update ros rolling to u26.04
  • Contributors: Jose Luis Blanco-Claraco

0.3.0 (2026-07-31)

  • fix clang-format

  • Add use_bag_record_time option for drivers with unsynced header stamps Some drivers (observed on TIERS's Ouster and Livox streams) publish header.stamp from an internal/relative clock never synced to the recording PC's wall clock, which silently breaks ground-truth time lookup for every scan. When set on a sensor, the observation's timestamp is taken from the bag's own message storage time instead.

  • Add support for livox_ros_driver2/CustomMsg too

  • Update mrpt_ros_bridge submodule: drop deprecated point-map overloads Removes the CPointsMapXYZI/CPointsMapXYZIRT fromROS/toROS overloads, which were the source of -Wdeprecated-declarations warnings when building Rosbag1Dataset.cpp; CGenericPointsMap already covers the same conversions.

  • launch: add per-app imgui_app_name for MolaVizImGui Sets a unique imgui_app_name in each launch file so Dear ImGui's layout persistence stores a separate UI configuration per app.

  • Merge pull request #1 from MOLAorg/feature/multi-bag-gt-and-livox-custommsg Multi-bag input, ground-truth trajectory API, and Livox CustomMsg support

  • fix: validate nav_msgs/Odometry GT quaternion; migrate toPointCloud2 off deprecated point map classes

    - Apply the same non-finite-quaternion guard already used for geometry_msgs/PoseStamped to the nav_msgs/Odometry ground-truth branch.

    - Update mrpt_ros_bridge submodule to a commit adding CGenericPointsMap fromROS/toROS overloads for sensor_msgs/PointCloud2, and switch toPointCloud2() to use them

File truncated at 100 lines see the full file

Launch files

Messages

Plugins

No plugins found.

Recent questions tagged mola_input_rosbag1 at Robotics Stack Exchange

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

mola_input_rosbag1 package from mola_input_rosbag1 repo

mola_input_rosbag1

ROS Distro
humble

Package Summary

Version 0.5.0
License BSD-3-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

MOLA DataSource from ROS1 bag files that does not need a ROS1 installation

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

mola_input_rosbag1

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

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

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

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

Typical uses:

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

Supported message types

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

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

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

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

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

Sensor poses and /tf

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

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

Parameters

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

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

Demos

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

1. Visualize raw LiDAR streams

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mola_input_rosbag1

0.5.0 (2026-09-25)

  • ci: add GitHub release workflow on version tags
  • Bump mrpt_ros_bridge: fix FLOAT64 per-point timestamps
  • Merge pull request #10 from MOLAorg/feat/mrpt3
  • Vendor mrpt_ros_bridge's ros1-mola-vendored branch instead of ros1
  • Merge pull request #9 from MOLAorg/feat/mrpt3
  • fix: review observations
  • Use the bridge's ros1 branch, now that it builds against MRPT 3.x; fix RGB/BGR channel swap in image conversion
  • Merge remote-tracking branch 'origin/develop' into feat/mrpt3
  • Merge remote-tracking branch 'origin/feat/per-sensor-time-offset' into feat/mrpt3
  • Merge pull request #8 from MOLAorg/fix/float64-per-point-timestamps
  • Vendor the bridge's ros1 branch instead of ros1-mola-vendored, fixing FLOAT64 per-point timestamps
  • Merge remote-tracking branch 'origin/develop' into feat/mrpt3
  • Merge pull request #6 from MOLAorg/fix/camera-info-distortion-model
  • Add an optional per-sensor time_offset to correct a constant per-sensor stamp bias
  • Accept more camera_info distortion model names, and warn when one is unhandled
  • Populate CObservationImage::cameraParams from sensor_msgs/CameraInfo
  • Merge pull request #5 from MOLAorg/feat/rosbag1-comma-separated-bag-list
  • Accept a comma-separated bag list in rosbag_filename
  • Port to MRPT 3.x: cmake targets, TImageChannels, yaml associativity
  • Merge pull request #4 from MOLAorg/feat/se3-odometry-as-robot-pose
  • Allow reading a 3D odometry source as CObservationRobotPose
  • Report the dataset playback time to the GUI (#3)
  • Fix a segfault in findOutSensorPose, and resolve ROS1-era slashed frame ids
  • Fix build warnings on newer ROS2 distro/g++
  • Contributors: Jose Luis Blanco-Claraco

0.4.0 (2026-08-07)

  • Expose the bag's /tf tree via mola::TransformTreeSource, so other MOLA modules can query the subtree of coordinate frames below a given root (e.g. a legged robot's joints) with poses resolved against it.
  • fix: support missing timestamp channel
  • Hide vendored roslz4/xxhash symbols to prevent collision with a system libxxhash, which could otherwise corrupt LZ4 checksum verification on some distros.
  • update ros rolling to u26.04
  • Contributors: Jose Luis Blanco-Claraco

0.3.0 (2026-07-31)

  • fix clang-format

  • Add use_bag_record_time option for drivers with unsynced header stamps Some drivers (observed on TIERS's Ouster and Livox streams) publish header.stamp from an internal/relative clock never synced to the recording PC's wall clock, which silently breaks ground-truth time lookup for every scan. When set on a sensor, the observation's timestamp is taken from the bag's own message storage time instead.

  • Add support for livox_ros_driver2/CustomMsg too

  • Update mrpt_ros_bridge submodule: drop deprecated point-map overloads Removes the CPointsMapXYZI/CPointsMapXYZIRT fromROS/toROS overloads, which were the source of -Wdeprecated-declarations warnings when building Rosbag1Dataset.cpp; CGenericPointsMap already covers the same conversions.

  • launch: add per-app imgui_app_name for MolaVizImGui Sets a unique imgui_app_name in each launch file so Dear ImGui's layout persistence stores a separate UI configuration per app.

  • Merge pull request #1 from MOLAorg/feature/multi-bag-gt-and-livox-custommsg Multi-bag input, ground-truth trajectory API, and Livox CustomMsg support

  • fix: validate nav_msgs/Odometry GT quaternion; migrate toPointCloud2 off deprecated point map classes

    - Apply the same non-finite-quaternion guard already used for geometry_msgs/PoseStamped to the nav_msgs/Odometry ground-truth branch.

    - Update mrpt_ros_bridge submodule to a commit adding CGenericPointsMap fromROS/toROS overloads for sensor_msgs/PointCloud2, and switch toPointCloud2() to use them

File truncated at 100 lines see the full file

Launch files

Messages

Plugins

No plugins found.

Recent questions tagged mola_input_rosbag1 at Robotics Stack Exchange

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

mola_input_rosbag1 package from mola_input_rosbag1 repo

mola_input_rosbag1

ROS Distro
humble

Package Summary

Version 0.5.0
License BSD-3-Clause
Build type CMAKE
Use RECOMMENDED

Repository Summary

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

Package Description

MOLA DataSource from ROS1 bag files that does not need a ROS1 installation

Additional Links

Maintainers

  • Jose-Luis Blanco-Claraco

Authors

No additional authors.

mola_input_rosbag1

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

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

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

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

Typical uses:

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

Supported message types

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

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

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

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

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

Sensor poses and /tf

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

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

Parameters

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

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

Demos

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

1. Visualize raw LiDAR streams

File truncated at 100 lines see the full file

CHANGELOG

Changelog for package mola_input_rosbag1

0.5.0 (2026-09-25)

  • ci: add GitHub release workflow on version tags
  • Bump mrpt_ros_bridge: fix FLOAT64 per-point timestamps
  • Merge pull request #10 from MOLAorg/feat/mrpt3
  • Vendor mrpt_ros_bridge's ros1-mola-vendored branch instead of ros1
  • Merge pull request #9 from MOLAorg/feat/mrpt3
  • fix: review observations
  • Use the bridge's ros1 branch, now that it builds against MRPT 3.x; fix RGB/BGR channel swap in image conversion
  • Merge remote-tracking branch 'origin/develop' into feat/mrpt3
  • Merge remote-tracking branch 'origin/feat/per-sensor-time-offset' into feat/mrpt3
  • Merge pull request #8 from MOLAorg/fix/float64-per-point-timestamps
  • Vendor the bridge's ros1 branch instead of ros1-mola-vendored, fixing FLOAT64 per-point timestamps
  • Merge remote-tracking branch 'origin/develop' into feat/mrpt3
  • Merge pull request #6 from MOLAorg/fix/camera-info-distortion-model
  • Add an optional per-sensor time_offset to correct a constant per-sensor stamp bias
  • Accept more camera_info distortion model names, and warn when one is unhandled
  • Populate CObservationImage::cameraParams from sensor_msgs/CameraInfo
  • Merge pull request #5 from MOLAorg/feat/rosbag1-comma-separated-bag-list
  • Accept a comma-separated bag list in rosbag_filename
  • Port to MRPT 3.x: cmake targets, TImageChannels, yaml associativity
  • Merge pull request #4 from MOLAorg/feat/se3-odometry-as-robot-pose
  • Allow reading a 3D odometry source as CObservationRobotPose
  • Report the dataset playback time to the GUI (#3)
  • Fix a segfault in findOutSensorPose, and resolve ROS1-era slashed frame ids
  • Fix build warnings on newer ROS2 distro/g++
  • Contributors: Jose Luis Blanco-Claraco

0.4.0 (2026-08-07)

  • Expose the bag's /tf tree via mola::TransformTreeSource, so other MOLA modules can query the subtree of coordinate frames below a given root (e.g. a legged robot's joints) with poses resolved against it.
  • fix: support missing timestamp channel
  • Hide vendored roslz4/xxhash symbols to prevent collision with a system libxxhash, which could otherwise corrupt LZ4 checksum verification on some distros.
  • update ros rolling to u26.04
  • Contributors: Jose Luis Blanco-Claraco

0.3.0 (2026-07-31)

  • fix clang-format

  • Add use_bag_record_time option for drivers with unsynced header stamps Some drivers (observed on TIERS's Ouster and Livox streams) publish header.stamp from an internal/relative clock never synced to the recording PC's wall clock, which silently breaks ground-truth time lookup for every scan. When set on a sensor, the observation's timestamp is taken from the bag's own message storage time instead.

  • Add support for livox_ros_driver2/CustomMsg too

  • Update mrpt_ros_bridge submodule: drop deprecated point-map overloads Removes the CPointsMapXYZI/CPointsMapXYZIRT fromROS/toROS overloads, which were the source of -Wdeprecated-declarations warnings when building Rosbag1Dataset.cpp; CGenericPointsMap already covers the same conversions.

  • launch: add per-app imgui_app_name for MolaVizImGui Sets a unique imgui_app_name in each launch file so Dear ImGui's layout persistence stores a separate UI configuration per app.

  • Merge pull request #1 from MOLAorg/feature/multi-bag-gt-and-livox-custommsg Multi-bag input, ground-truth trajectory API, and Livox CustomMsg support

  • fix: validate nav_msgs/Odometry GT quaternion; migrate toPointCloud2 off deprecated point map classes

    - Apply the same non-finite-quaternion guard already used for geometry_msgs/PoseStamped to the nav_msgs/Odometry ground-truth branch.

    - Update mrpt_ros_bridge submodule to a commit adding CGenericPointsMap fromROS/toROS overloads for sensor_msgs/PointCloud2, and switch toPointCloud2() to use them

File truncated at 100 lines see the full file

Launch files

Messages

Plugins

No plugins found.

Recent questions tagged mola_input_rosbag1 at Robotics Stack Exchange