|
mola_input_rosbag2 package from mola repomola mola_bridge_ros2 mola_demos mola_input_lidar_bin_dataset mola_input_rawlog mola_input_rosbag2 mola_input_video mola_kernel mola_launcher mola_metric_maps mola_msgs mola_pose_list mola_relocalization mola_traj_tools mola_viz mola_viz_imgui mola_yaml |
ROS Distro
|
Package Summary
| Version | 3.4.0 |
| License | GPLv3 |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mola.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-11-12 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
mola_input_rosbag2
Offline RawDataSource from ROS 2 bags
Provided MOLA modules:
-
Rosbag2Dataset, type RawDataSourceBase.
CLI tools:
-
mola-sm-attach-from-rosbag2: Adds observations from a bag (e.g. camera images, for visual place recognition) to the keyframes of an existing.simplemap. Each observation goes to the keyframe closest in time (--max-age, default 0.5 s), and each keyframe keeps the closest one per topic, so none is stored twice. Images are written as jpg/png files to<output>_Images/(the external files of the input map are hard-linked there too); observations already in the map are not added again.
mola-sm-attach-from-rosbag2 -i map.simplemap -o map_cam.simplemap \
--rosbag2 dataset_dir --topic /camera/image_raw:camera_left
--topic is repeatable (TOPIC or TOPIC:LABEL), one label per topic: each
keyframe gets one observation per label. Use --fixed-sensor-pose
"x y z yaw pitch roll" for bags without /tf, and --image-format png or
inline to change how images are stored.
The ROS 1 version is mola-sm-attach-from-rosbag1 (package mola_input_rosbag1).
ROS 2 bags may also need --tf-topic / --tf-static-topic (e.g. namespaced robots).
Build and install
Refer to the root MOLA repository.
Docs and examples
See this package page in the documentation.
License
This package is released under the GNU GPL v3 license. Other options available upon request.
Changelog for package mola_input_rosbag2
3.4.0 (2026-11-01)
- Rosbag2Dataset: read only the topics that have a handler (#259)
- Contributors: Jose Luis Blanco-Claraco
3.3.2 (2026-10-09)
3.3.1 (2026-10-05)
3.3.0 (2026-09-23)
- Port to MRPT 3.x (#220)
- Contributors: Jose Luis Blanco-Claraco
3.2.1 (2026-09-15)
- Merge pull request #209 from MOLAorg/feat/rosbag2-se3-odometry-as-robot-pose rosbag2: allow reading a 3D odometry source as CObservationRobotPose
- mola_viz_imgui: show dataset playback time in the dataset UI panel (#202)
- Contributors: Jose Luis Blanco-Claraco
3.2.0 (2026-08-21)
- Merge remote-tracking branch 'origin/feat/map-frame-gauge-change' into feat/map-frame-gauge-change
- Merge branch 'develop' into feat/map-frame-gauge-change
- Contributors: Jose Luis Blanco-Claraco
3.1.1 (2026-08-10)
- fix build in ros rolling (newer gcc)
- Contributors: Jose Luis Blanco Claraco
3.1.0 (2026-08-06)
-
Add mola::TransformTreeSource: expose the /tf tree to other MOLA modules (#188)
* Add mola::TransformTreeSource: expose the /tf tree to other modules New mola_kernel interface letting a data source publish its tree of coordinate frames, so consumers (e.g. a LiDAR-odometry viewer) can draw a robot's joints as it moves. transform_tree(root) returns the subtree below 'root' with poses already resolved against it. The filtering is done in the source, which is what owns the transform buffer, so a consumer never receives nor walks unrelated subtrees. The interface carries no ROS/tf2 type, keeping mola_kernel ROS-independent. Implemented by Rosbag1Dataset (separate repo), Rosbag2Dataset and BridgeROS2. No locking is added around the subtree walk: tf2::BufferCore guards its own internals, which is also what lets BridgeROS2's TransformListener feed the buffer from its own thread.
- Address review: depth-first comment, cycle guard in the tf walk
- No need for include guards inside this same git repo
-
Merge pull request #187 from MOLAorg/feat/incremental-point-cloud-kdtree-bake Bake IncrementalPointCloud's k-d tree index (mm-ipc-bake-kdtree)
-
changelog
-
Merge pull request #178 from MOLAorg/feat/rosbag2-compressed-image feat: decode sensor_msgs/msg/CompressedImage topics in Rosbag2Dataset
-
perf: avoid a redundant image-buffer copy and heap alloc per frame Two per-frame savings in toCompressedImage():
- The temporary sensor_msgs::msg::CompressedImage only needs to live for the duration of this call; a stack-local avoids a heap allocation cv_bridge::toCvCopy() doesn't require (it takes the message by const reference, unlike the raw-Image path's toCvShare(), which needs a shared_ptr).
- cv_ptr (and the cv::Mat it owns) is likewise local to this call, so copying it into the CObservationImage with mrpt::img::SHALLOW_COPY (ref-counted) instead of DEEP_COPY avoids duplicating the decoded pixel buffer a second time. Re-verified end-to-end against the Oxford Spires dataset: no errors. (CodeRabbit finding on PR #178)
-
feat: decode sensor_msgs/msg/CompressedImage topics in Rosbag2Dataset mrpt_ros_bridge's rosbag2ToImage() only understands the raw, uncompressed sensor_msgs/msg/Image wire format, so a 'sensors' entry of type CObservationImage pointed at a compressed-image topic (e.g. an "image/compressed" republished stream) previously fell through as unhandled. Added a local decoder (cv_bridge-based, dispatched on the topic's actual wire type) and registered the ROS type for auto-detection, so compressed camera streams can be read the same way as raw ones.
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| cv_bridge | |
| gps_msgs | |
| mola_kernel | |
| mrpt_obs | |
| mrpt_libros_bridge | |
| rosbag2_cpp | |
| sensor_msgs | |
| tf2_geometry_msgs | |
| tf2_msgs | |
| tf2_ros |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| mola | |
| mola_lidar_odometry | |
| mola_mapper_2d |
Launch files
Messages
Services
Plugins
Recent questions tagged mola_input_rosbag2 at Robotics Stack Exchange
|
mola_input_rosbag2 package from mola repomola mola_bridge_ros2 mola_demos mola_input_lidar_bin_dataset mola_input_rawlog mola_input_rosbag2 mola_input_video mola_kernel mola_launcher mola_metric_maps mola_msgs mola_pose_list mola_relocalization mola_traj_tools mola_viz mola_viz_imgui mola_yaml |
ROS Distro
|
Package Summary
| Version | 3.4.0 |
| License | GPLv3 |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mola.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-11-12 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
mola_input_rosbag2
Offline RawDataSource from ROS 2 bags
Provided MOLA modules:
-
Rosbag2Dataset, type RawDataSourceBase.
CLI tools:
-
mola-sm-attach-from-rosbag2: Adds observations from a bag (e.g. camera images, for visual place recognition) to the keyframes of an existing.simplemap. Each observation goes to the keyframe closest in time (--max-age, default 0.5 s), and each keyframe keeps the closest one per topic, so none is stored twice. Images are written as jpg/png files to<output>_Images/(the external files of the input map are hard-linked there too); observations already in the map are not added again.
mola-sm-attach-from-rosbag2 -i map.simplemap -o map_cam.simplemap \
--rosbag2 dataset_dir --topic /camera/image_raw:camera_left
--topic is repeatable (TOPIC or TOPIC:LABEL), one label per topic: each
keyframe gets one observation per label. Use --fixed-sensor-pose
"x y z yaw pitch roll" for bags without /tf, and --image-format png or
inline to change how images are stored.
The ROS 1 version is mola-sm-attach-from-rosbag1 (package mola_input_rosbag1).
ROS 2 bags may also need --tf-topic / --tf-static-topic (e.g. namespaced robots).
Build and install
Refer to the root MOLA repository.
Docs and examples
See this package page in the documentation.
License
This package is released under the GNU GPL v3 license. Other options available upon request.
Changelog for package mola_input_rosbag2
3.4.0 (2026-11-01)
- Rosbag2Dataset: read only the topics that have a handler (#259)
- Contributors: Jose Luis Blanco-Claraco
3.3.2 (2026-10-09)
3.3.1 (2026-10-05)
3.3.0 (2026-09-23)
- Port to MRPT 3.x (#220)
- Contributors: Jose Luis Blanco-Claraco
3.2.1 (2026-09-15)
- Merge pull request #209 from MOLAorg/feat/rosbag2-se3-odometry-as-robot-pose rosbag2: allow reading a 3D odometry source as CObservationRobotPose
- mola_viz_imgui: show dataset playback time in the dataset UI panel (#202)
- Contributors: Jose Luis Blanco-Claraco
3.2.0 (2026-08-21)
- Merge remote-tracking branch 'origin/feat/map-frame-gauge-change' into feat/map-frame-gauge-change
- Merge branch 'develop' into feat/map-frame-gauge-change
- Contributors: Jose Luis Blanco-Claraco
3.1.1 (2026-08-10)
- fix build in ros rolling (newer gcc)
- Contributors: Jose Luis Blanco Claraco
3.1.0 (2026-08-06)
-
Add mola::TransformTreeSource: expose the /tf tree to other MOLA modules (#188)
* Add mola::TransformTreeSource: expose the /tf tree to other modules New mola_kernel interface letting a data source publish its tree of coordinate frames, so consumers (e.g. a LiDAR-odometry viewer) can draw a robot's joints as it moves. transform_tree(root) returns the subtree below 'root' with poses already resolved against it. The filtering is done in the source, which is what owns the transform buffer, so a consumer never receives nor walks unrelated subtrees. The interface carries no ROS/tf2 type, keeping mola_kernel ROS-independent. Implemented by Rosbag1Dataset (separate repo), Rosbag2Dataset and BridgeROS2. No locking is added around the subtree walk: tf2::BufferCore guards its own internals, which is also what lets BridgeROS2's TransformListener feed the buffer from its own thread.
- Address review: depth-first comment, cycle guard in the tf walk
- No need for include guards inside this same git repo
-
Merge pull request #187 from MOLAorg/feat/incremental-point-cloud-kdtree-bake Bake IncrementalPointCloud's k-d tree index (mm-ipc-bake-kdtree)
-
changelog
-
Merge pull request #178 from MOLAorg/feat/rosbag2-compressed-image feat: decode sensor_msgs/msg/CompressedImage topics in Rosbag2Dataset
-
perf: avoid a redundant image-buffer copy and heap alloc per frame Two per-frame savings in toCompressedImage():
- The temporary sensor_msgs::msg::CompressedImage only needs to live for the duration of this call; a stack-local avoids a heap allocation cv_bridge::toCvCopy() doesn't require (it takes the message by const reference, unlike the raw-Image path's toCvShare(), which needs a shared_ptr).
- cv_ptr (and the cv::Mat it owns) is likewise local to this call, so copying it into the CObservationImage with mrpt::img::SHALLOW_COPY (ref-counted) instead of DEEP_COPY avoids duplicating the decoded pixel buffer a second time. Re-verified end-to-end against the Oxford Spires dataset: no errors. (CodeRabbit finding on PR #178)
-
feat: decode sensor_msgs/msg/CompressedImage topics in Rosbag2Dataset mrpt_ros_bridge's rosbag2ToImage() only understands the raw, uncompressed sensor_msgs/msg/Image wire format, so a 'sensors' entry of type CObservationImage pointed at a compressed-image topic (e.g. an "image/compressed" republished stream) previously fell through as unhandled. Added a local decoder (cv_bridge-based, dispatched on the topic's actual wire type) and registered the ROS type for auto-detection, so compressed camera streams can be read the same way as raw ones.
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| cv_bridge | |
| gps_msgs | |
| mola_kernel | |
| mrpt_obs | |
| mrpt_libros_bridge | |
| rosbag2_cpp | |
| sensor_msgs | |
| tf2_geometry_msgs | |
| tf2_msgs | |
| tf2_ros |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| mola | |
| mola_lidar_odometry |
Launch files
Messages
Services
Plugins
Recent questions tagged mola_input_rosbag2 at Robotics Stack Exchange
|
mola_input_rosbag2 package from mola repomola mola_bridge_ros2 mola_demos mola_input_lidar_bin_dataset mola_input_rawlog mola_input_rosbag2 mola_input_video mola_kernel mola_launcher mola_metric_maps mola_msgs mola_pose_list mola_relocalization mola_traj_tools mola_viz mola_viz_imgui mola_yaml |
ROS Distro
|
Package Summary
| Version | 3.4.0 |
| License | GPLv3 |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mola.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-11-12 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
mola_input_rosbag2
Offline RawDataSource from ROS 2 bags
Provided MOLA modules:
-
Rosbag2Dataset, type RawDataSourceBase.
CLI tools:
-
mola-sm-attach-from-rosbag2: Adds observations from a bag (e.g. camera images, for visual place recognition) to the keyframes of an existing.simplemap. Each observation goes to the keyframe closest in time (--max-age, default 0.5 s), and each keyframe keeps the closest one per topic, so none is stored twice. Images are written as jpg/png files to<output>_Images/(the external files of the input map are hard-linked there too); observations already in the map are not added again.
mola-sm-attach-from-rosbag2 -i map.simplemap -o map_cam.simplemap \
--rosbag2 dataset_dir --topic /camera/image_raw:camera_left
--topic is repeatable (TOPIC or TOPIC:LABEL), one label per topic: each
keyframe gets one observation per label. Use --fixed-sensor-pose
"x y z yaw pitch roll" for bags without /tf, and --image-format png or
inline to change how images are stored.
The ROS 1 version is mola-sm-attach-from-rosbag1 (package mola_input_rosbag1).
ROS 2 bags may also need --tf-topic / --tf-static-topic (e.g. namespaced robots).
Build and install
Refer to the root MOLA repository.
Docs and examples
See this package page in the documentation.
License
This package is released under the GNU GPL v3 license. Other options available upon request.
Changelog for package mola_input_rosbag2
3.4.0 (2026-11-01)
- Rosbag2Dataset: read only the topics that have a handler (#259)
- Contributors: Jose Luis Blanco-Claraco
3.3.2 (2026-10-09)
3.3.1 (2026-10-05)
3.3.0 (2026-09-23)
- Port to MRPT 3.x (#220)
- Contributors: Jose Luis Blanco-Claraco
3.2.1 (2026-09-15)
- Merge pull request #209 from MOLAorg/feat/rosbag2-se3-odometry-as-robot-pose rosbag2: allow reading a 3D odometry source as CObservationRobotPose
- mola_viz_imgui: show dataset playback time in the dataset UI panel (#202)
- Contributors: Jose Luis Blanco-Claraco
3.2.0 (2026-08-21)
- Merge remote-tracking branch 'origin/feat/map-frame-gauge-change' into feat/map-frame-gauge-change
- Merge branch 'develop' into feat/map-frame-gauge-change
- Contributors: Jose Luis Blanco-Claraco
3.1.1 (2026-08-10)
- fix build in ros rolling (newer gcc)
- Contributors: Jose Luis Blanco Claraco
3.1.0 (2026-08-06)
-
Add mola::TransformTreeSource: expose the /tf tree to other MOLA modules (#188)
* Add mola::TransformTreeSource: expose the /tf tree to other modules New mola_kernel interface letting a data source publish its tree of coordinate frames, so consumers (e.g. a LiDAR-odometry viewer) can draw a robot's joints as it moves. transform_tree(root) returns the subtree below 'root' with poses already resolved against it. The filtering is done in the source, which is what owns the transform buffer, so a consumer never receives nor walks unrelated subtrees. The interface carries no ROS/tf2 type, keeping mola_kernel ROS-independent. Implemented by Rosbag1Dataset (separate repo), Rosbag2Dataset and BridgeROS2. No locking is added around the subtree walk: tf2::BufferCore guards its own internals, which is also what lets BridgeROS2's TransformListener feed the buffer from its own thread.
- Address review: depth-first comment, cycle guard in the tf walk
- No need for include guards inside this same git repo
-
Merge pull request #187 from MOLAorg/feat/incremental-point-cloud-kdtree-bake Bake IncrementalPointCloud's k-d tree index (mm-ipc-bake-kdtree)
-
changelog
-
Merge pull request #178 from MOLAorg/feat/rosbag2-compressed-image feat: decode sensor_msgs/msg/CompressedImage topics in Rosbag2Dataset
-
perf: avoid a redundant image-buffer copy and heap alloc per frame Two per-frame savings in toCompressedImage():
- The temporary sensor_msgs::msg::CompressedImage only needs to live for the duration of this call; a stack-local avoids a heap allocation cv_bridge::toCvCopy() doesn't require (it takes the message by const reference, unlike the raw-Image path's toCvShare(), which needs a shared_ptr).
- cv_ptr (and the cv::Mat it owns) is likewise local to this call, so copying it into the CObservationImage with mrpt::img::SHALLOW_COPY (ref-counted) instead of DEEP_COPY avoids duplicating the decoded pixel buffer a second time. Re-verified end-to-end against the Oxford Spires dataset: no errors. (CodeRabbit finding on PR #178)
-
feat: decode sensor_msgs/msg/CompressedImage topics in Rosbag2Dataset mrpt_ros_bridge's rosbag2ToImage() only understands the raw, uncompressed sensor_msgs/msg/Image wire format, so a 'sensors' entry of type CObservationImage pointed at a compressed-image topic (e.g. an "image/compressed" republished stream) previously fell through as unhandled. Added a local decoder (cv_bridge-based, dispatched on the topic's actual wire type) and registered the ROS type for auto-detection, so compressed camera streams can be read the same way as raw ones.
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| cv_bridge | |
| gps_msgs | |
| mola_kernel | |
| mrpt_obs | |
| mrpt_libros_bridge | |
| rosbag2_cpp | |
| sensor_msgs | |
| tf2_geometry_msgs | |
| tf2_msgs | |
| tf2_ros |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| mola | |
| mola_lidar_odometry |
Launch files
Messages
Services
Plugins
Recent questions tagged mola_input_rosbag2 at Robotics Stack Exchange
|
mola_input_rosbag2 package from mola repomola mola_bridge_ros2 mola_demos mola_input_lidar_bin_dataset mola_input_rawlog mola_input_rosbag2 mola_input_video mola_kernel mola_launcher mola_metric_maps mola_msgs mola_pose_list mola_relocalization mola_traj_tools mola_viz mola_viz_imgui mola_yaml |
ROS Distro
|
Package Summary
| Version | 3.4.0 |
| License | GPLv3 |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mola.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-11-12 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
mola_input_rosbag2
Offline RawDataSource from ROS 2 bags
Provided MOLA modules:
-
Rosbag2Dataset, type RawDataSourceBase.
CLI tools:
-
mola-sm-attach-from-rosbag2: Adds observations from a bag (e.g. camera images, for visual place recognition) to the keyframes of an existing.simplemap. Each observation goes to the keyframe closest in time (--max-age, default 0.5 s), and each keyframe keeps the closest one per topic, so none is stored twice. Images are written as jpg/png files to<output>_Images/(the external files of the input map are hard-linked there too); observations already in the map are not added again.
mola-sm-attach-from-rosbag2 -i map.simplemap -o map_cam.simplemap \
--rosbag2 dataset_dir --topic /camera/image_raw:camera_left
--topic is repeatable (TOPIC or TOPIC:LABEL), one label per topic: each
keyframe gets one observation per label. Use --fixed-sensor-pose
"x y z yaw pitch roll" for bags without /tf, and --image-format png or
inline to change how images are stored.
The ROS 1 version is mola-sm-attach-from-rosbag1 (package mola_input_rosbag1).
ROS 2 bags may also need --tf-topic / --tf-static-topic (e.g. namespaced robots).
Build and install
Refer to the root MOLA repository.
Docs and examples
See this package page in the documentation.
License
This package is released under the GNU GPL v3 license. Other options available upon request.
Changelog for package mola_input_rosbag2
3.4.0 (2026-11-01)
- Rosbag2Dataset: read only the topics that have a handler (#259)
- Contributors: Jose Luis Blanco-Claraco
3.3.2 (2026-10-09)
3.3.1 (2026-10-05)
3.3.0 (2026-09-23)
- Port to MRPT 3.x (#220)
- Contributors: Jose Luis Blanco-Claraco
3.2.1 (2026-09-15)
- Merge pull request #209 from MOLAorg/feat/rosbag2-se3-odometry-as-robot-pose rosbag2: allow reading a 3D odometry source as CObservationRobotPose
- mola_viz_imgui: show dataset playback time in the dataset UI panel (#202)
- Contributors: Jose Luis Blanco-Claraco
3.2.0 (2026-08-21)
- Merge remote-tracking branch 'origin/feat/map-frame-gauge-change' into feat/map-frame-gauge-change
- Merge branch 'develop' into feat/map-frame-gauge-change
- Contributors: Jose Luis Blanco-Claraco
3.1.1 (2026-08-10)
- fix build in ros rolling (newer gcc)
- Contributors: Jose Luis Blanco Claraco
3.1.0 (2026-08-06)
-
Add mola::TransformTreeSource: expose the /tf tree to other MOLA modules (#188)
* Add mola::TransformTreeSource: expose the /tf tree to other modules New mola_kernel interface letting a data source publish its tree of coordinate frames, so consumers (e.g. a LiDAR-odometry viewer) can draw a robot's joints as it moves. transform_tree(root) returns the subtree below 'root' with poses already resolved against it. The filtering is done in the source, which is what owns the transform buffer, so a consumer never receives nor walks unrelated subtrees. The interface carries no ROS/tf2 type, keeping mola_kernel ROS-independent. Implemented by Rosbag1Dataset (separate repo), Rosbag2Dataset and BridgeROS2. No locking is added around the subtree walk: tf2::BufferCore guards its own internals, which is also what lets BridgeROS2's TransformListener feed the buffer from its own thread.
- Address review: depth-first comment, cycle guard in the tf walk
- No need for include guards inside this same git repo
-
Merge pull request #187 from MOLAorg/feat/incremental-point-cloud-kdtree-bake Bake IncrementalPointCloud's k-d tree index (mm-ipc-bake-kdtree)
-
changelog
-
Merge pull request #178 from MOLAorg/feat/rosbag2-compressed-image feat: decode sensor_msgs/msg/CompressedImage topics in Rosbag2Dataset
-
perf: avoid a redundant image-buffer copy and heap alloc per frame Two per-frame savings in toCompressedImage():
- The temporary sensor_msgs::msg::CompressedImage only needs to live for the duration of this call; a stack-local avoids a heap allocation cv_bridge::toCvCopy() doesn't require (it takes the message by const reference, unlike the raw-Image path's toCvShare(), which needs a shared_ptr).
- cv_ptr (and the cv::Mat it owns) is likewise local to this call, so copying it into the CObservationImage with mrpt::img::SHALLOW_COPY (ref-counted) instead of DEEP_COPY avoids duplicating the decoded pixel buffer a second time. Re-verified end-to-end against the Oxford Spires dataset: no errors. (CodeRabbit finding on PR #178)
-
feat: decode sensor_msgs/msg/CompressedImage topics in Rosbag2Dataset mrpt_ros_bridge's rosbag2ToImage() only understands the raw, uncompressed sensor_msgs/msg/Image wire format, so a 'sensors' entry of type CObservationImage pointed at a compressed-image topic (e.g. an "image/compressed" republished stream) previously fell through as unhandled. Added a local decoder (cv_bridge-based, dispatched on the topic's actual wire type) and registered the ROS type for auto-detection, so compressed camera streams can be read the same way as raw ones.
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| cv_bridge | |
| gps_msgs | |
| mola_kernel | |
| mrpt_obs | |
| mrpt_libros_bridge | |
| rosbag2_cpp | |
| sensor_msgs | |
| tf2_geometry_msgs | |
| tf2_msgs | |
| tf2_ros |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| mola | |
| mola_lidar_odometry |
Launch files
Messages
Services
Plugins
Recent questions tagged mola_input_rosbag2 at Robotics Stack Exchange
|
mola_input_rosbag2 package from mola repomola mola_bridge_ros2 mola_demos mola_input_lidar_bin_dataset mola_input_rawlog mola_input_rosbag2 mola_input_video mola_kernel mola_launcher mola_metric_maps mola_msgs mola_pose_list mola_relocalization mola_traj_tools mola_viz mola_viz_imgui mola_yaml |
ROS Distro
|
Package Summary
| Version | 3.4.0 |
| License | GPLv3 |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mola.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-11-12 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
mola_input_rosbag2
Offline RawDataSource from ROS 2 bags
Provided MOLA modules:
-
Rosbag2Dataset, type RawDataSourceBase.
CLI tools:
-
mola-sm-attach-from-rosbag2: Adds observations from a bag (e.g. camera images, for visual place recognition) to the keyframes of an existing.simplemap. Each observation goes to the keyframe closest in time (--max-age, default 0.5 s), and each keyframe keeps the closest one per topic, so none is stored twice. Images are written as jpg/png files to<output>_Images/(the external files of the input map are hard-linked there too); observations already in the map are not added again.
mola-sm-attach-from-rosbag2 -i map.simplemap -o map_cam.simplemap \
--rosbag2 dataset_dir --topic /camera/image_raw:camera_left
--topic is repeatable (TOPIC or TOPIC:LABEL), one label per topic: each
keyframe gets one observation per label. Use --fixed-sensor-pose
"x y z yaw pitch roll" for bags without /tf, and --image-format png or
inline to change how images are stored.
The ROS 1 version is mola-sm-attach-from-rosbag1 (package mola_input_rosbag1).
ROS 2 bags may also need --tf-topic / --tf-static-topic (e.g. namespaced robots).
Build and install
Refer to the root MOLA repository.
Docs and examples
See this package page in the documentation.
License
This package is released under the GNU GPL v3 license. Other options available upon request.
Changelog for package mola_input_rosbag2
3.4.0 (2026-11-01)
- Rosbag2Dataset: read only the topics that have a handler (#259)
- Contributors: Jose Luis Blanco-Claraco
3.3.2 (2026-10-09)
3.3.1 (2026-10-05)
3.3.0 (2026-09-23)
- Port to MRPT 3.x (#220)
- Contributors: Jose Luis Blanco-Claraco
3.2.1 (2026-09-15)
- Merge pull request #209 from MOLAorg/feat/rosbag2-se3-odometry-as-robot-pose rosbag2: allow reading a 3D odometry source as CObservationRobotPose
- mola_viz_imgui: show dataset playback time in the dataset UI panel (#202)
- Contributors: Jose Luis Blanco-Claraco
3.2.0 (2026-08-21)
- Merge remote-tracking branch 'origin/feat/map-frame-gauge-change' into feat/map-frame-gauge-change
- Merge branch 'develop' into feat/map-frame-gauge-change
- Contributors: Jose Luis Blanco-Claraco
3.1.1 (2026-08-10)
- fix build in ros rolling (newer gcc)
- Contributors: Jose Luis Blanco Claraco
3.1.0 (2026-08-06)
-
Add mola::TransformTreeSource: expose the /tf tree to other MOLA modules (#188)
* Add mola::TransformTreeSource: expose the /tf tree to other modules New mola_kernel interface letting a data source publish its tree of coordinate frames, so consumers (e.g. a LiDAR-odometry viewer) can draw a robot's joints as it moves. transform_tree(root) returns the subtree below 'root' with poses already resolved against it. The filtering is done in the source, which is what owns the transform buffer, so a consumer never receives nor walks unrelated subtrees. The interface carries no ROS/tf2 type, keeping mola_kernel ROS-independent. Implemented by Rosbag1Dataset (separate repo), Rosbag2Dataset and BridgeROS2. No locking is added around the subtree walk: tf2::BufferCore guards its own internals, which is also what lets BridgeROS2's TransformListener feed the buffer from its own thread.
- Address review: depth-first comment, cycle guard in the tf walk
- No need for include guards inside this same git repo
-
Merge pull request #187 from MOLAorg/feat/incremental-point-cloud-kdtree-bake Bake IncrementalPointCloud's k-d tree index (mm-ipc-bake-kdtree)
-
changelog
-
Merge pull request #178 from MOLAorg/feat/rosbag2-compressed-image feat: decode sensor_msgs/msg/CompressedImage topics in Rosbag2Dataset
-
perf: avoid a redundant image-buffer copy and heap alloc per frame Two per-frame savings in toCompressedImage():
- The temporary sensor_msgs::msg::CompressedImage only needs to live for the duration of this call; a stack-local avoids a heap allocation cv_bridge::toCvCopy() doesn't require (it takes the message by const reference, unlike the raw-Image path's toCvShare(), which needs a shared_ptr).
- cv_ptr (and the cv::Mat it owns) is likewise local to this call, so copying it into the CObservationImage with mrpt::img::SHALLOW_COPY (ref-counted) instead of DEEP_COPY avoids duplicating the decoded pixel buffer a second time. Re-verified end-to-end against the Oxford Spires dataset: no errors. (CodeRabbit finding on PR #178)
-
feat: decode sensor_msgs/msg/CompressedImage topics in Rosbag2Dataset mrpt_ros_bridge's rosbag2ToImage() only understands the raw, uncompressed sensor_msgs/msg/Image wire format, so a 'sensors' entry of type CObservationImage pointed at a compressed-image topic (e.g. an "image/compressed" republished stream) previously fell through as unhandled. Added a local decoder (cv_bridge-based, dispatched on the topic's actual wire type) and registered the ROS type for auto-detection, so compressed camera streams can be read the same way as raw ones.
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| cv_bridge | |
| gps_msgs | |
| mola_kernel | |
| mrpt_obs | |
| mrpt_libros_bridge | |
| rosbag2_cpp | |
| sensor_msgs | |
| tf2_geometry_msgs | |
| tf2_msgs | |
| tf2_ros |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| mola | |
| mola_lidar_odometry |
Launch files
Messages
Services
Plugins
Recent questions tagged mola_input_rosbag2 at Robotics Stack Exchange
|
mola_input_rosbag2 package from mola repomola mola_bridge_ros2 mola_demos mola_input_lidar_bin_dataset mola_input_rawlog mola_input_rosbag2 mola_input_video mola_kernel mola_launcher mola_metric_maps mola_msgs mola_pose_list mola_relocalization mola_traj_tools mola_viz mola_viz_imgui mola_yaml |
ROS Distro
|
Package Summary
| Version | 3.4.0 |
| License | GPLv3 |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mola.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-11-12 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
mola_input_rosbag2
Offline RawDataSource from ROS 2 bags
Provided MOLA modules:
-
Rosbag2Dataset, type RawDataSourceBase.
CLI tools:
-
mola-sm-attach-from-rosbag2: Adds observations from a bag (e.g. camera images, for visual place recognition) to the keyframes of an existing.simplemap. Each observation goes to the keyframe closest in time (--max-age, default 0.5 s), and each keyframe keeps the closest one per topic, so none is stored twice. Images are written as jpg/png files to<output>_Images/(the external files of the input map are hard-linked there too); observations already in the map are not added again.
mola-sm-attach-from-rosbag2 -i map.simplemap -o map_cam.simplemap \
--rosbag2 dataset_dir --topic /camera/image_raw:camera_left
--topic is repeatable (TOPIC or TOPIC:LABEL), one label per topic: each
keyframe gets one observation per label. Use --fixed-sensor-pose
"x y z yaw pitch roll" for bags without /tf, and --image-format png or
inline to change how images are stored.
The ROS 1 version is mola-sm-attach-from-rosbag1 (package mola_input_rosbag1).
ROS 2 bags may also need --tf-topic / --tf-static-topic (e.g. namespaced robots).
Build and install
Refer to the root MOLA repository.
Docs and examples
See this package page in the documentation.
License
This package is released under the GNU GPL v3 license. Other options available upon request.
Changelog for package mola_input_rosbag2
3.4.0 (2026-11-01)
- Rosbag2Dataset: read only the topics that have a handler (#259)
- Contributors: Jose Luis Blanco-Claraco
3.3.2 (2026-10-09)
3.3.1 (2026-10-05)
3.3.0 (2026-09-23)
- Port to MRPT 3.x (#220)
- Contributors: Jose Luis Blanco-Claraco
3.2.1 (2026-09-15)
- Merge pull request #209 from MOLAorg/feat/rosbag2-se3-odometry-as-robot-pose rosbag2: allow reading a 3D odometry source as CObservationRobotPose
- mola_viz_imgui: show dataset playback time in the dataset UI panel (#202)
- Contributors: Jose Luis Blanco-Claraco
3.2.0 (2026-08-21)
- Merge remote-tracking branch 'origin/feat/map-frame-gauge-change' into feat/map-frame-gauge-change
- Merge branch 'develop' into feat/map-frame-gauge-change
- Contributors: Jose Luis Blanco-Claraco
3.1.1 (2026-08-10)
- fix build in ros rolling (newer gcc)
- Contributors: Jose Luis Blanco Claraco
3.1.0 (2026-08-06)
-
Add mola::TransformTreeSource: expose the /tf tree to other MOLA modules (#188)
* Add mola::TransformTreeSource: expose the /tf tree to other modules New mola_kernel interface letting a data source publish its tree of coordinate frames, so consumers (e.g. a LiDAR-odometry viewer) can draw a robot's joints as it moves. transform_tree(root) returns the subtree below 'root' with poses already resolved against it. The filtering is done in the source, which is what owns the transform buffer, so a consumer never receives nor walks unrelated subtrees. The interface carries no ROS/tf2 type, keeping mola_kernel ROS-independent. Implemented by Rosbag1Dataset (separate repo), Rosbag2Dataset and BridgeROS2. No locking is added around the subtree walk: tf2::BufferCore guards its own internals, which is also what lets BridgeROS2's TransformListener feed the buffer from its own thread.
- Address review: depth-first comment, cycle guard in the tf walk
- No need for include guards inside this same git repo
-
Merge pull request #187 from MOLAorg/feat/incremental-point-cloud-kdtree-bake Bake IncrementalPointCloud's k-d tree index (mm-ipc-bake-kdtree)
-
changelog
-
Merge pull request #178 from MOLAorg/feat/rosbag2-compressed-image feat: decode sensor_msgs/msg/CompressedImage topics in Rosbag2Dataset
-
perf: avoid a redundant image-buffer copy and heap alloc per frame Two per-frame savings in toCompressedImage():
- The temporary sensor_msgs::msg::CompressedImage only needs to live for the duration of this call; a stack-local avoids a heap allocation cv_bridge::toCvCopy() doesn't require (it takes the message by const reference, unlike the raw-Image path's toCvShare(), which needs a shared_ptr).
- cv_ptr (and the cv::Mat it owns) is likewise local to this call, so copying it into the CObservationImage with mrpt::img::SHALLOW_COPY (ref-counted) instead of DEEP_COPY avoids duplicating the decoded pixel buffer a second time. Re-verified end-to-end against the Oxford Spires dataset: no errors. (CodeRabbit finding on PR #178)
-
feat: decode sensor_msgs/msg/CompressedImage topics in Rosbag2Dataset mrpt_ros_bridge's rosbag2ToImage() only understands the raw, uncompressed sensor_msgs/msg/Image wire format, so a 'sensors' entry of type CObservationImage pointed at a compressed-image topic (e.g. an "image/compressed" republished stream) previously fell through as unhandled. Added a local decoder (cv_bridge-based, dispatched on the topic's actual wire type) and registered the ROS type for auto-detection, so compressed camera streams can be read the same way as raw ones.
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| cv_bridge | |
| gps_msgs | |
| mola_kernel | |
| mrpt_obs | |
| mrpt_libros_bridge | |
| rosbag2_cpp | |
| sensor_msgs | |
| tf2_geometry_msgs | |
| tf2_msgs | |
| tf2_ros |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| mola | |
| mola_lidar_odometry | |
| mola_mapper_2d |
Launch files
Messages
Services
Plugins
Recent questions tagged mola_input_rosbag2 at Robotics Stack Exchange
|
mola_input_rosbag2 package from mola repomola mola_bridge_ros2 mola_demos mola_input_lidar_bin_dataset mola_input_rawlog mola_input_rosbag2 mola_input_video mola_kernel mola_launcher mola_metric_maps mola_msgs mola_pose_list mola_relocalization mola_traj_tools mola_viz mola_viz_imgui mola_yaml |
ROS Distro
|
Package Summary
| Version | 3.4.0 |
| License | GPLv3 |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mola.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-11-12 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
mola_input_rosbag2
Offline RawDataSource from ROS 2 bags
Provided MOLA modules:
-
Rosbag2Dataset, type RawDataSourceBase.
CLI tools:
-
mola-sm-attach-from-rosbag2: Adds observations from a bag (e.g. camera images, for visual place recognition) to the keyframes of an existing.simplemap. Each observation goes to the keyframe closest in time (--max-age, default 0.5 s), and each keyframe keeps the closest one per topic, so none is stored twice. Images are written as jpg/png files to<output>_Images/(the external files of the input map are hard-linked there too); observations already in the map are not added again.
mola-sm-attach-from-rosbag2 -i map.simplemap -o map_cam.simplemap \
--rosbag2 dataset_dir --topic /camera/image_raw:camera_left
--topic is repeatable (TOPIC or TOPIC:LABEL), one label per topic: each
keyframe gets one observation per label. Use --fixed-sensor-pose
"x y z yaw pitch roll" for bags without /tf, and --image-format png or
inline to change how images are stored.
The ROS 1 version is mola-sm-attach-from-rosbag1 (package mola_input_rosbag1).
ROS 2 bags may also need --tf-topic / --tf-static-topic (e.g. namespaced robots).
Build and install
Refer to the root MOLA repository.
Docs and examples
See this package page in the documentation.
License
This package is released under the GNU GPL v3 license. Other options available upon request.
Changelog for package mola_input_rosbag2
3.4.0 (2026-11-01)
- Rosbag2Dataset: read only the topics that have a handler (#259)
- Contributors: Jose Luis Blanco-Claraco
3.3.2 (2026-10-09)
3.3.1 (2026-10-05)
3.3.0 (2026-09-23)
- Port to MRPT 3.x (#220)
- Contributors: Jose Luis Blanco-Claraco
3.2.1 (2026-09-15)
- Merge pull request #209 from MOLAorg/feat/rosbag2-se3-odometry-as-robot-pose rosbag2: allow reading a 3D odometry source as CObservationRobotPose
- mola_viz_imgui: show dataset playback time in the dataset UI panel (#202)
- Contributors: Jose Luis Blanco-Claraco
3.2.0 (2026-08-21)
- Merge remote-tracking branch 'origin/feat/map-frame-gauge-change' into feat/map-frame-gauge-change
- Merge branch 'develop' into feat/map-frame-gauge-change
- Contributors: Jose Luis Blanco-Claraco
3.1.1 (2026-08-10)
- fix build in ros rolling (newer gcc)
- Contributors: Jose Luis Blanco Claraco
3.1.0 (2026-08-06)
-
Add mola::TransformTreeSource: expose the /tf tree to other MOLA modules (#188)
* Add mola::TransformTreeSource: expose the /tf tree to other modules New mola_kernel interface letting a data source publish its tree of coordinate frames, so consumers (e.g. a LiDAR-odometry viewer) can draw a robot's joints as it moves. transform_tree(root) returns the subtree below 'root' with poses already resolved against it. The filtering is done in the source, which is what owns the transform buffer, so a consumer never receives nor walks unrelated subtrees. The interface carries no ROS/tf2 type, keeping mola_kernel ROS-independent. Implemented by Rosbag1Dataset (separate repo), Rosbag2Dataset and BridgeROS2. No locking is added around the subtree walk: tf2::BufferCore guards its own internals, which is also what lets BridgeROS2's TransformListener feed the buffer from its own thread.
- Address review: depth-first comment, cycle guard in the tf walk
- No need for include guards inside this same git repo
-
Merge pull request #187 from MOLAorg/feat/incremental-point-cloud-kdtree-bake Bake IncrementalPointCloud's k-d tree index (mm-ipc-bake-kdtree)
-
changelog
-
Merge pull request #178 from MOLAorg/feat/rosbag2-compressed-image feat: decode sensor_msgs/msg/CompressedImage topics in Rosbag2Dataset
-
perf: avoid a redundant image-buffer copy and heap alloc per frame Two per-frame savings in toCompressedImage():
- The temporary sensor_msgs::msg::CompressedImage only needs to live for the duration of this call; a stack-local avoids a heap allocation cv_bridge::toCvCopy() doesn't require (it takes the message by const reference, unlike the raw-Image path's toCvShare(), which needs a shared_ptr).
- cv_ptr (and the cv::Mat it owns) is likewise local to this call, so copying it into the CObservationImage with mrpt::img::SHALLOW_COPY (ref-counted) instead of DEEP_COPY avoids duplicating the decoded pixel buffer a second time. Re-verified end-to-end against the Oxford Spires dataset: no errors. (CodeRabbit finding on PR #178)
-
feat: decode sensor_msgs/msg/CompressedImage topics in Rosbag2Dataset mrpt_ros_bridge's rosbag2ToImage() only understands the raw, uncompressed sensor_msgs/msg/Image wire format, so a 'sensors' entry of type CObservationImage pointed at a compressed-image topic (e.g. an "image/compressed" republished stream) previously fell through as unhandled. Added a local decoder (cv_bridge-based, dispatched on the topic's actual wire type) and registered the ROS type for auto-detection, so compressed camera streams can be read the same way as raw ones.
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| cv_bridge | |
| gps_msgs | |
| mola_kernel | |
| mrpt_obs | |
| mrpt_libros_bridge | |
| rosbag2_cpp | |
| sensor_msgs | |
| tf2_geometry_msgs | |
| tf2_msgs | |
| tf2_ros |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| mola | |
| mola_lidar_odometry | |
| mola_mapper_2d |
Launch files
Messages
Services
Plugins
Recent questions tagged mola_input_rosbag2 at Robotics Stack Exchange
|
mola_input_rosbag2 package from mola repomola mola_bridge_ros2 mola_demos mola_input_lidar_bin_dataset mola_input_rawlog mola_input_rosbag2 mola_input_video mola_kernel mola_launcher mola_metric_maps mola_msgs mola_pose_list mola_relocalization mola_traj_tools mola_viz mola_viz_imgui mola_yaml |
ROS Distro
|
Package Summary
| Version | 3.4.0 |
| License | GPLv3 |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mola.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-11-12 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
mola_input_rosbag2
Offline RawDataSource from ROS 2 bags
Provided MOLA modules:
-
Rosbag2Dataset, type RawDataSourceBase.
CLI tools:
-
mola-sm-attach-from-rosbag2: Adds observations from a bag (e.g. camera images, for visual place recognition) to the keyframes of an existing.simplemap. Each observation goes to the keyframe closest in time (--max-age, default 0.5 s), and each keyframe keeps the closest one per topic, so none is stored twice. Images are written as jpg/png files to<output>_Images/(the external files of the input map are hard-linked there too); observations already in the map are not added again.
mola-sm-attach-from-rosbag2 -i map.simplemap -o map_cam.simplemap \
--rosbag2 dataset_dir --topic /camera/image_raw:camera_left
--topic is repeatable (TOPIC or TOPIC:LABEL), one label per topic: each
keyframe gets one observation per label. Use --fixed-sensor-pose
"x y z yaw pitch roll" for bags without /tf, and --image-format png or
inline to change how images are stored.
The ROS 1 version is mola-sm-attach-from-rosbag1 (package mola_input_rosbag1).
ROS 2 bags may also need --tf-topic / --tf-static-topic (e.g. namespaced robots).
Build and install
Refer to the root MOLA repository.
Docs and examples
See this package page in the documentation.
License
This package is released under the GNU GPL v3 license. Other options available upon request.
Changelog for package mola_input_rosbag2
3.4.0 (2026-11-01)
- Rosbag2Dataset: read only the topics that have a handler (#259)
- Contributors: Jose Luis Blanco-Claraco
3.3.2 (2026-10-09)
3.3.1 (2026-10-05)
3.3.0 (2026-09-23)
- Port to MRPT 3.x (#220)
- Contributors: Jose Luis Blanco-Claraco
3.2.1 (2026-09-15)
- Merge pull request #209 from MOLAorg/feat/rosbag2-se3-odometry-as-robot-pose rosbag2: allow reading a 3D odometry source as CObservationRobotPose
- mola_viz_imgui: show dataset playback time in the dataset UI panel (#202)
- Contributors: Jose Luis Blanco-Claraco
3.2.0 (2026-08-21)
- Merge remote-tracking branch 'origin/feat/map-frame-gauge-change' into feat/map-frame-gauge-change
- Merge branch 'develop' into feat/map-frame-gauge-change
- Contributors: Jose Luis Blanco-Claraco
3.1.1 (2026-08-10)
- fix build in ros rolling (newer gcc)
- Contributors: Jose Luis Blanco Claraco
3.1.0 (2026-08-06)
-
Add mola::TransformTreeSource: expose the /tf tree to other MOLA modules (#188)
* Add mola::TransformTreeSource: expose the /tf tree to other modules New mola_kernel interface letting a data source publish its tree of coordinate frames, so consumers (e.g. a LiDAR-odometry viewer) can draw a robot's joints as it moves. transform_tree(root) returns the subtree below 'root' with poses already resolved against it. The filtering is done in the source, which is what owns the transform buffer, so a consumer never receives nor walks unrelated subtrees. The interface carries no ROS/tf2 type, keeping mola_kernel ROS-independent. Implemented by Rosbag1Dataset (separate repo), Rosbag2Dataset and BridgeROS2. No locking is added around the subtree walk: tf2::BufferCore guards its own internals, which is also what lets BridgeROS2's TransformListener feed the buffer from its own thread.
- Address review: depth-first comment, cycle guard in the tf walk
- No need for include guards inside this same git repo
-
Merge pull request #187 from MOLAorg/feat/incremental-point-cloud-kdtree-bake Bake IncrementalPointCloud's k-d tree index (mm-ipc-bake-kdtree)
-
changelog
-
Merge pull request #178 from MOLAorg/feat/rosbag2-compressed-image feat: decode sensor_msgs/msg/CompressedImage topics in Rosbag2Dataset
-
perf: avoid a redundant image-buffer copy and heap alloc per frame Two per-frame savings in toCompressedImage():
- The temporary sensor_msgs::msg::CompressedImage only needs to live for the duration of this call; a stack-local avoids a heap allocation cv_bridge::toCvCopy() doesn't require (it takes the message by const reference, unlike the raw-Image path's toCvShare(), which needs a shared_ptr).
- cv_ptr (and the cv::Mat it owns) is likewise local to this call, so copying it into the CObservationImage with mrpt::img::SHALLOW_COPY (ref-counted) instead of DEEP_COPY avoids duplicating the decoded pixel buffer a second time. Re-verified end-to-end against the Oxford Spires dataset: no errors. (CodeRabbit finding on PR #178)
-
feat: decode sensor_msgs/msg/CompressedImage topics in Rosbag2Dataset mrpt_ros_bridge's rosbag2ToImage() only understands the raw, uncompressed sensor_msgs/msg/Image wire format, so a 'sensors' entry of type CObservationImage pointed at a compressed-image topic (e.g. an "image/compressed" republished stream) previously fell through as unhandled. Added a local decoder (cv_bridge-based, dispatched on the topic's actual wire type) and registered the ROS type for auto-detection, so compressed camera streams can be read the same way as raw ones.
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| cv_bridge | |
| gps_msgs | |
| mola_kernel | |
| mrpt_obs | |
| mrpt_libros_bridge | |
| rosbag2_cpp | |
| sensor_msgs | |
| tf2_geometry_msgs | |
| tf2_msgs | |
| tf2_ros |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| mola | |
| mola_lidar_odometry | |
| mola_mapper_2d |
Launch files
Messages
Services
Plugins
Recent questions tagged mola_input_rosbag2 at Robotics Stack Exchange
|
mola_input_rosbag2 package from mola repomola mola_bridge_ros2 mola_demos mola_input_lidar_bin_dataset mola_input_rawlog mola_input_rosbag2 mola_input_video mola_kernel mola_launcher mola_metric_maps mola_msgs mola_pose_list mola_relocalization mola_traj_tools mola_viz mola_viz_imgui mola_yaml |
ROS Distro
|
Package Summary
| Version | 3.4.0 |
| License | GPLv3 |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mola.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-11-12 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
mola_input_rosbag2
Offline RawDataSource from ROS 2 bags
Provided MOLA modules:
-
Rosbag2Dataset, type RawDataSourceBase.
CLI tools:
-
mola-sm-attach-from-rosbag2: Adds observations from a bag (e.g. camera images, for visual place recognition) to the keyframes of an existing.simplemap. Each observation goes to the keyframe closest in time (--max-age, default 0.5 s), and each keyframe keeps the closest one per topic, so none is stored twice. Images are written as jpg/png files to<output>_Images/(the external files of the input map are hard-linked there too); observations already in the map are not added again.
mola-sm-attach-from-rosbag2 -i map.simplemap -o map_cam.simplemap \
--rosbag2 dataset_dir --topic /camera/image_raw:camera_left
--topic is repeatable (TOPIC or TOPIC:LABEL), one label per topic: each
keyframe gets one observation per label. Use --fixed-sensor-pose
"x y z yaw pitch roll" for bags without /tf, and --image-format png or
inline to change how images are stored.
The ROS 1 version is mola-sm-attach-from-rosbag1 (package mola_input_rosbag1).
ROS 2 bags may also need --tf-topic / --tf-static-topic (e.g. namespaced robots).
Build and install
Refer to the root MOLA repository.
Docs and examples
See this package page in the documentation.
License
This package is released under the GNU GPL v3 license. Other options available upon request.
Changelog for package mola_input_rosbag2
3.4.0 (2026-11-01)
- Rosbag2Dataset: read only the topics that have a handler (#259)
- Contributors: Jose Luis Blanco-Claraco
3.3.2 (2026-10-09)
3.3.1 (2026-10-05)
3.3.0 (2026-09-23)
- Port to MRPT 3.x (#220)
- Contributors: Jose Luis Blanco-Claraco
3.2.1 (2026-09-15)
- Merge pull request #209 from MOLAorg/feat/rosbag2-se3-odometry-as-robot-pose rosbag2: allow reading a 3D odometry source as CObservationRobotPose
- mola_viz_imgui: show dataset playback time in the dataset UI panel (#202)
- Contributors: Jose Luis Blanco-Claraco
3.2.0 (2026-08-21)
- Merge remote-tracking branch 'origin/feat/map-frame-gauge-change' into feat/map-frame-gauge-change
- Merge branch 'develop' into feat/map-frame-gauge-change
- Contributors: Jose Luis Blanco-Claraco
3.1.1 (2026-08-10)
- fix build in ros rolling (newer gcc)
- Contributors: Jose Luis Blanco Claraco
3.1.0 (2026-08-06)
-
Add mola::TransformTreeSource: expose the /tf tree to other MOLA modules (#188)
* Add mola::TransformTreeSource: expose the /tf tree to other modules New mola_kernel interface letting a data source publish its tree of coordinate frames, so consumers (e.g. a LiDAR-odometry viewer) can draw a robot's joints as it moves. transform_tree(root) returns the subtree below 'root' with poses already resolved against it. The filtering is done in the source, which is what owns the transform buffer, so a consumer never receives nor walks unrelated subtrees. The interface carries no ROS/tf2 type, keeping mola_kernel ROS-independent. Implemented by Rosbag1Dataset (separate repo), Rosbag2Dataset and BridgeROS2. No locking is added around the subtree walk: tf2::BufferCore guards its own internals, which is also what lets BridgeROS2's TransformListener feed the buffer from its own thread.
- Address review: depth-first comment, cycle guard in the tf walk
- No need for include guards inside this same git repo
-
Merge pull request #187 from MOLAorg/feat/incremental-point-cloud-kdtree-bake Bake IncrementalPointCloud's k-d tree index (mm-ipc-bake-kdtree)
-
changelog
-
Merge pull request #178 from MOLAorg/feat/rosbag2-compressed-image feat: decode sensor_msgs/msg/CompressedImage topics in Rosbag2Dataset
-
perf: avoid a redundant image-buffer copy and heap alloc per frame Two per-frame savings in toCompressedImage():
- The temporary sensor_msgs::msg::CompressedImage only needs to live for the duration of this call; a stack-local avoids a heap allocation cv_bridge::toCvCopy() doesn't require (it takes the message by const reference, unlike the raw-Image path's toCvShare(), which needs a shared_ptr).
- cv_ptr (and the cv::Mat it owns) is likewise local to this call, so copying it into the CObservationImage with mrpt::img::SHALLOW_COPY (ref-counted) instead of DEEP_COPY avoids duplicating the decoded pixel buffer a second time. Re-verified end-to-end against the Oxford Spires dataset: no errors. (CodeRabbit finding on PR #178)
-
feat: decode sensor_msgs/msg/CompressedImage topics in Rosbag2Dataset mrpt_ros_bridge's rosbag2ToImage() only understands the raw, uncompressed sensor_msgs/msg/Image wire format, so a 'sensors' entry of type CObservationImage pointed at a compressed-image topic (e.g. an "image/compressed" republished stream) previously fell through as unhandled. Added a local decoder (cv_bridge-based, dispatched on the topic's actual wire type) and registered the ROS type for auto-detection, so compressed camera streams can be read the same way as raw ones.
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| cv_bridge | |
| gps_msgs | |
| mola_kernel | |
| mrpt_obs | |
| mrpt_libros_bridge | |
| rosbag2_cpp | |
| sensor_msgs | |
| tf2_geometry_msgs | |
| tf2_msgs | |
| tf2_ros |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| mola | |
| mola_lidar_odometry | |
| mola_mapper_2d |
Launch files
Messages
Services
Plugins
Recent questions tagged mola_input_rosbag2 at Robotics Stack Exchange
|
mola_input_rosbag2 package from mola repomola mola_bridge_ros2 mola_demos mola_input_lidar_bin_dataset mola_input_rawlog mola_input_rosbag2 mola_input_video mola_kernel mola_launcher mola_metric_maps mola_msgs mola_pose_list mola_relocalization mola_traj_tools mola_viz mola_viz_imgui mola_yaml |
ROS Distro
|
Package Summary
| Version | 3.4.0 |
| License | GPLv3 |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mola.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-11-12 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
mola_input_rosbag2
Offline RawDataSource from ROS 2 bags
Provided MOLA modules:
-
Rosbag2Dataset, type RawDataSourceBase.
CLI tools:
-
mola-sm-attach-from-rosbag2: Adds observations from a bag (e.g. camera images, for visual place recognition) to the keyframes of an existing.simplemap. Each observation goes to the keyframe closest in time (--max-age, default 0.5 s), and each keyframe keeps the closest one per topic, so none is stored twice. Images are written as jpg/png files to<output>_Images/(the external files of the input map are hard-linked there too); observations already in the map are not added again.
mola-sm-attach-from-rosbag2 -i map.simplemap -o map_cam.simplemap \
--rosbag2 dataset_dir --topic /camera/image_raw:camera_left
--topic is repeatable (TOPIC or TOPIC:LABEL), one label per topic: each
keyframe gets one observation per label. Use --fixed-sensor-pose
"x y z yaw pitch roll" for bags without /tf, and --image-format png or
inline to change how images are stored.
The ROS 1 version is mola-sm-attach-from-rosbag1 (package mola_input_rosbag1).
ROS 2 bags may also need --tf-topic / --tf-static-topic (e.g. namespaced robots).
Build and install
Refer to the root MOLA repository.
Docs and examples
See this package page in the documentation.
License
This package is released under the GNU GPL v3 license. Other options available upon request.
Changelog for package mola_input_rosbag2
3.4.0 (2026-11-01)
- Rosbag2Dataset: read only the topics that have a handler (#259)
- Contributors: Jose Luis Blanco-Claraco
3.3.2 (2026-10-09)
3.3.1 (2026-10-05)
3.3.0 (2026-09-23)
- Port to MRPT 3.x (#220)
- Contributors: Jose Luis Blanco-Claraco
3.2.1 (2026-09-15)
- Merge pull request #209 from MOLAorg/feat/rosbag2-se3-odometry-as-robot-pose rosbag2: allow reading a 3D odometry source as CObservationRobotPose
- mola_viz_imgui: show dataset playback time in the dataset UI panel (#202)
- Contributors: Jose Luis Blanco-Claraco
3.2.0 (2026-08-21)
- Merge remote-tracking branch 'origin/feat/map-frame-gauge-change' into feat/map-frame-gauge-change
- Merge branch 'develop' into feat/map-frame-gauge-change
- Contributors: Jose Luis Blanco-Claraco
3.1.1 (2026-08-10)
- fix build in ros rolling (newer gcc)
- Contributors: Jose Luis Blanco Claraco
3.1.0 (2026-08-06)
-
Add mola::TransformTreeSource: expose the /tf tree to other MOLA modules (#188)
* Add mola::TransformTreeSource: expose the /tf tree to other modules New mola_kernel interface letting a data source publish its tree of coordinate frames, so consumers (e.g. a LiDAR-odometry viewer) can draw a robot's joints as it moves. transform_tree(root) returns the subtree below 'root' with poses already resolved against it. The filtering is done in the source, which is what owns the transform buffer, so a consumer never receives nor walks unrelated subtrees. The interface carries no ROS/tf2 type, keeping mola_kernel ROS-independent. Implemented by Rosbag1Dataset (separate repo), Rosbag2Dataset and BridgeROS2. No locking is added around the subtree walk: tf2::BufferCore guards its own internals, which is also what lets BridgeROS2's TransformListener feed the buffer from its own thread.
- Address review: depth-first comment, cycle guard in the tf walk
- No need for include guards inside this same git repo
-
Merge pull request #187 from MOLAorg/feat/incremental-point-cloud-kdtree-bake Bake IncrementalPointCloud's k-d tree index (mm-ipc-bake-kdtree)
-
changelog
-
Merge pull request #178 from MOLAorg/feat/rosbag2-compressed-image feat: decode sensor_msgs/msg/CompressedImage topics in Rosbag2Dataset
-
perf: avoid a redundant image-buffer copy and heap alloc per frame Two per-frame savings in toCompressedImage():
- The temporary sensor_msgs::msg::CompressedImage only needs to live for the duration of this call; a stack-local avoids a heap allocation cv_bridge::toCvCopy() doesn't require (it takes the message by const reference, unlike the raw-Image path's toCvShare(), which needs a shared_ptr).
- cv_ptr (and the cv::Mat it owns) is likewise local to this call, so copying it into the CObservationImage with mrpt::img::SHALLOW_COPY (ref-counted) instead of DEEP_COPY avoids duplicating the decoded pixel buffer a second time. Re-verified end-to-end against the Oxford Spires dataset: no errors. (CodeRabbit finding on PR #178)
-
feat: decode sensor_msgs/msg/CompressedImage topics in Rosbag2Dataset mrpt_ros_bridge's rosbag2ToImage() only understands the raw, uncompressed sensor_msgs/msg/Image wire format, so a 'sensors' entry of type CObservationImage pointed at a compressed-image topic (e.g. an "image/compressed" republished stream) previously fell through as unhandled. Added a local decoder (cv_bridge-based, dispatched on the topic's actual wire type) and registered the ROS type for auto-detection, so compressed camera streams can be read the same way as raw ones.
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| cv_bridge | |
| gps_msgs | |
| mola_kernel | |
| mrpt_obs | |
| mrpt_libros_bridge | |
| rosbag2_cpp | |
| sensor_msgs | |
| tf2_geometry_msgs | |
| tf2_msgs | |
| tf2_ros |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| mola | |
| mola_lidar_odometry | |
| mola_mapper_2d |
Launch files
Messages
Services
Plugins
Recent questions tagged mola_input_rosbag2 at Robotics Stack Exchange
|
mola_input_rosbag2 package from mola repomola mola_bridge_ros2 mola_demos mola_input_lidar_bin_dataset mola_input_rawlog mola_input_rosbag2 mola_input_video mola_kernel mola_launcher mola_metric_maps mola_msgs mola_pose_list mola_relocalization mola_traj_tools mola_viz mola_viz_imgui mola_yaml |
ROS Distro
|
Package Summary
| Version | 3.4.0 |
| License | GPLv3 |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mola.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-11-12 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
mola_input_rosbag2
Offline RawDataSource from ROS 2 bags
Provided MOLA modules:
-
Rosbag2Dataset, type RawDataSourceBase.
CLI tools:
-
mola-sm-attach-from-rosbag2: Adds observations from a bag (e.g. camera images, for visual place recognition) to the keyframes of an existing.simplemap. Each observation goes to the keyframe closest in time (--max-age, default 0.5 s), and each keyframe keeps the closest one per topic, so none is stored twice. Images are written as jpg/png files to<output>_Images/(the external files of the input map are hard-linked there too); observations already in the map are not added again.
mola-sm-attach-from-rosbag2 -i map.simplemap -o map_cam.simplemap \
--rosbag2 dataset_dir --topic /camera/image_raw:camera_left
--topic is repeatable (TOPIC or TOPIC:LABEL), one label per topic: each
keyframe gets one observation per label. Use --fixed-sensor-pose
"x y z yaw pitch roll" for bags without /tf, and --image-format png or
inline to change how images are stored.
The ROS 1 version is mola-sm-attach-from-rosbag1 (package mola_input_rosbag1).
ROS 2 bags may also need --tf-topic / --tf-static-topic (e.g. namespaced robots).
Build and install
Refer to the root MOLA repository.
Docs and examples
See this package page in the documentation.
License
This package is released under the GNU GPL v3 license. Other options available upon request.
Changelog for package mola_input_rosbag2
3.4.0 (2026-11-01)
- Rosbag2Dataset: read only the topics that have a handler (#259)
- Contributors: Jose Luis Blanco-Claraco
3.3.2 (2026-10-09)
3.3.1 (2026-10-05)
3.3.0 (2026-09-23)
- Port to MRPT 3.x (#220)
- Contributors: Jose Luis Blanco-Claraco
3.2.1 (2026-09-15)
- Merge pull request #209 from MOLAorg/feat/rosbag2-se3-odometry-as-robot-pose rosbag2: allow reading a 3D odometry source as CObservationRobotPose
- mola_viz_imgui: show dataset playback time in the dataset UI panel (#202)
- Contributors: Jose Luis Blanco-Claraco
3.2.0 (2026-08-21)
- Merge remote-tracking branch 'origin/feat/map-frame-gauge-change' into feat/map-frame-gauge-change
- Merge branch 'develop' into feat/map-frame-gauge-change
- Contributors: Jose Luis Blanco-Claraco
3.1.1 (2026-08-10)
- fix build in ros rolling (newer gcc)
- Contributors: Jose Luis Blanco Claraco
3.1.0 (2026-08-06)
-
Add mola::TransformTreeSource: expose the /tf tree to other MOLA modules (#188)
* Add mola::TransformTreeSource: expose the /tf tree to other modules New mola_kernel interface letting a data source publish its tree of coordinate frames, so consumers (e.g. a LiDAR-odometry viewer) can draw a robot's joints as it moves. transform_tree(root) returns the subtree below 'root' with poses already resolved against it. The filtering is done in the source, which is what owns the transform buffer, so a consumer never receives nor walks unrelated subtrees. The interface carries no ROS/tf2 type, keeping mola_kernel ROS-independent. Implemented by Rosbag1Dataset (separate repo), Rosbag2Dataset and BridgeROS2. No locking is added around the subtree walk: tf2::BufferCore guards its own internals, which is also what lets BridgeROS2's TransformListener feed the buffer from its own thread.
- Address review: depth-first comment, cycle guard in the tf walk
- No need for include guards inside this same git repo
-
Merge pull request #187 from MOLAorg/feat/incremental-point-cloud-kdtree-bake Bake IncrementalPointCloud's k-d tree index (mm-ipc-bake-kdtree)
-
changelog
-
Merge pull request #178 from MOLAorg/feat/rosbag2-compressed-image feat: decode sensor_msgs/msg/CompressedImage topics in Rosbag2Dataset
-
perf: avoid a redundant image-buffer copy and heap alloc per frame Two per-frame savings in toCompressedImage():
- The temporary sensor_msgs::msg::CompressedImage only needs to live for the duration of this call; a stack-local avoids a heap allocation cv_bridge::toCvCopy() doesn't require (it takes the message by const reference, unlike the raw-Image path's toCvShare(), which needs a shared_ptr).
- cv_ptr (and the cv::Mat it owns) is likewise local to this call, so copying it into the CObservationImage with mrpt::img::SHALLOW_COPY (ref-counted) instead of DEEP_COPY avoids duplicating the decoded pixel buffer a second time. Re-verified end-to-end against the Oxford Spires dataset: no errors. (CodeRabbit finding on PR #178)
-
feat: decode sensor_msgs/msg/CompressedImage topics in Rosbag2Dataset mrpt_ros_bridge's rosbag2ToImage() only understands the raw, uncompressed sensor_msgs/msg/Image wire format, so a 'sensors' entry of type CObservationImage pointed at a compressed-image topic (e.g. an "image/compressed" republished stream) previously fell through as unhandled. Added a local decoder (cv_bridge-based, dispatched on the topic's actual wire type) and registered the ROS type for auto-detection, so compressed camera streams can be read the same way as raw ones.
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| cv_bridge | |
| gps_msgs | |
| mola_kernel | |
| mrpt_obs | |
| mrpt_libros_bridge | |
| rosbag2_cpp | |
| sensor_msgs | |
| tf2_geometry_msgs | |
| tf2_msgs | |
| tf2_ros |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| mola | |
| mola_lidar_odometry | |
| mola_mapper_2d |
Launch files
Messages
Services
Plugins
Recent questions tagged mola_input_rosbag2 at Robotics Stack Exchange
|
mola_input_rosbag2 package from mola repomola mola_bridge_ros2 mola_demos mola_input_lidar_bin_dataset mola_input_rawlog mola_input_rosbag2 mola_input_video mola_kernel mola_launcher mola_metric_maps mola_msgs mola_pose_list mola_relocalization mola_traj_tools mola_viz mola_viz_imgui mola_yaml |
ROS Distro
|
Package Summary
| Version | 3.4.0 |
| License | GPLv3 |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mola.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-11-12 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
mola_input_rosbag2
Offline RawDataSource from ROS 2 bags
Provided MOLA modules:
-
Rosbag2Dataset, type RawDataSourceBase.
CLI tools:
-
mola-sm-attach-from-rosbag2: Adds observations from a bag (e.g. camera images, for visual place recognition) to the keyframes of an existing.simplemap. Each observation goes to the keyframe closest in time (--max-age, default 0.5 s), and each keyframe keeps the closest one per topic, so none is stored twice. Images are written as jpg/png files to<output>_Images/(the external files of the input map are hard-linked there too); observations already in the map are not added again.
mola-sm-attach-from-rosbag2 -i map.simplemap -o map_cam.simplemap \
--rosbag2 dataset_dir --topic /camera/image_raw:camera_left
--topic is repeatable (TOPIC or TOPIC:LABEL), one label per topic: each
keyframe gets one observation per label. Use --fixed-sensor-pose
"x y z yaw pitch roll" for bags without /tf, and --image-format png or
inline to change how images are stored.
The ROS 1 version is mola-sm-attach-from-rosbag1 (package mola_input_rosbag1).
ROS 2 bags may also need --tf-topic / --tf-static-topic (e.g. namespaced robots).
Build and install
Refer to the root MOLA repository.
Docs and examples
See this package page in the documentation.
License
This package is released under the GNU GPL v3 license. Other options available upon request.
Changelog for package mola_input_rosbag2
3.4.0 (2026-11-01)
- Rosbag2Dataset: read only the topics that have a handler (#259)
- Contributors: Jose Luis Blanco-Claraco
3.3.2 (2026-10-09)
3.3.1 (2026-10-05)
3.3.0 (2026-09-23)
- Port to MRPT 3.x (#220)
- Contributors: Jose Luis Blanco-Claraco
3.2.1 (2026-09-15)
- Merge pull request #209 from MOLAorg/feat/rosbag2-se3-odometry-as-robot-pose rosbag2: allow reading a 3D odometry source as CObservationRobotPose
- mola_viz_imgui: show dataset playback time in the dataset UI panel (#202)
- Contributors: Jose Luis Blanco-Claraco
3.2.0 (2026-08-21)
- Merge remote-tracking branch 'origin/feat/map-frame-gauge-change' into feat/map-frame-gauge-change
- Merge branch 'develop' into feat/map-frame-gauge-change
- Contributors: Jose Luis Blanco-Claraco
3.1.1 (2026-08-10)
- fix build in ros rolling (newer gcc)
- Contributors: Jose Luis Blanco Claraco
3.1.0 (2026-08-06)
-
Add mola::TransformTreeSource: expose the /tf tree to other MOLA modules (#188)
* Add mola::TransformTreeSource: expose the /tf tree to other modules New mola_kernel interface letting a data source publish its tree of coordinate frames, so consumers (e.g. a LiDAR-odometry viewer) can draw a robot's joints as it moves. transform_tree(root) returns the subtree below 'root' with poses already resolved against it. The filtering is done in the source, which is what owns the transform buffer, so a consumer never receives nor walks unrelated subtrees. The interface carries no ROS/tf2 type, keeping mola_kernel ROS-independent. Implemented by Rosbag1Dataset (separate repo), Rosbag2Dataset and BridgeROS2. No locking is added around the subtree walk: tf2::BufferCore guards its own internals, which is also what lets BridgeROS2's TransformListener feed the buffer from its own thread.
- Address review: depth-first comment, cycle guard in the tf walk
- No need for include guards inside this same git repo
-
Merge pull request #187 from MOLAorg/feat/incremental-point-cloud-kdtree-bake Bake IncrementalPointCloud's k-d tree index (mm-ipc-bake-kdtree)
-
changelog
-
Merge pull request #178 from MOLAorg/feat/rosbag2-compressed-image feat: decode sensor_msgs/msg/CompressedImage topics in Rosbag2Dataset
-
perf: avoid a redundant image-buffer copy and heap alloc per frame Two per-frame savings in toCompressedImage():
- The temporary sensor_msgs::msg::CompressedImage only needs to live for the duration of this call; a stack-local avoids a heap allocation cv_bridge::toCvCopy() doesn't require (it takes the message by const reference, unlike the raw-Image path's toCvShare(), which needs a shared_ptr).
- cv_ptr (and the cv::Mat it owns) is likewise local to this call, so copying it into the CObservationImage with mrpt::img::SHALLOW_COPY (ref-counted) instead of DEEP_COPY avoids duplicating the decoded pixel buffer a second time. Re-verified end-to-end against the Oxford Spires dataset: no errors. (CodeRabbit finding on PR #178)
-
feat: decode sensor_msgs/msg/CompressedImage topics in Rosbag2Dataset mrpt_ros_bridge's rosbag2ToImage() only understands the raw, uncompressed sensor_msgs/msg/Image wire format, so a 'sensors' entry of type CObservationImage pointed at a compressed-image topic (e.g. an "image/compressed" republished stream) previously fell through as unhandled. Added a local decoder (cv_bridge-based, dispatched on the topic's actual wire type) and registered the ROS type for auto-detection, so compressed camera streams can be read the same way as raw ones.
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| cv_bridge | |
| gps_msgs | |
| mola_kernel | |
| mrpt_obs | |
| mrpt_libros_bridge | |
| rosbag2_cpp | |
| sensor_msgs | |
| tf2_geometry_msgs | |
| tf2_msgs | |
| tf2_ros |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| mola | |
| mola_lidar_odometry | |
| mola_mapper_2d |
Launch files
Messages
Services
Plugins
Recent questions tagged mola_input_rosbag2 at Robotics Stack Exchange
|
mola_input_rosbag2 package from mola repomola mola_bridge_ros2 mola_demos mola_input_lidar_bin_dataset mola_input_rawlog mola_input_rosbag2 mola_input_video mola_kernel mola_launcher mola_metric_maps mola_msgs mola_pose_list mola_relocalization mola_traj_tools mola_viz mola_viz_imgui mola_yaml |
ROS Distro
|
Package Summary
| Version | 3.4.0 |
| License | GPLv3 |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mola.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-11-12 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
mola_input_rosbag2
Offline RawDataSource from ROS 2 bags
Provided MOLA modules:
-
Rosbag2Dataset, type RawDataSourceBase.
CLI tools:
-
mola-sm-attach-from-rosbag2: Adds observations from a bag (e.g. camera images, for visual place recognition) to the keyframes of an existing.simplemap. Each observation goes to the keyframe closest in time (--max-age, default 0.5 s), and each keyframe keeps the closest one per topic, so none is stored twice. Images are written as jpg/png files to<output>_Images/(the external files of the input map are hard-linked there too); observations already in the map are not added again.
mola-sm-attach-from-rosbag2 -i map.simplemap -o map_cam.simplemap \
--rosbag2 dataset_dir --topic /camera/image_raw:camera_left
--topic is repeatable (TOPIC or TOPIC:LABEL), one label per topic: each
keyframe gets one observation per label. Use --fixed-sensor-pose
"x y z yaw pitch roll" for bags without /tf, and --image-format png or
inline to change how images are stored.
The ROS 1 version is mola-sm-attach-from-rosbag1 (package mola_input_rosbag1).
ROS 2 bags may also need --tf-topic / --tf-static-topic (e.g. namespaced robots).
Build and install
Refer to the root MOLA repository.
Docs and examples
See this package page in the documentation.
License
This package is released under the GNU GPL v3 license. Other options available upon request.
Changelog for package mola_input_rosbag2
3.4.0 (2026-11-01)
- Rosbag2Dataset: read only the topics that have a handler (#259)
- Contributors: Jose Luis Blanco-Claraco
3.3.2 (2026-10-09)
3.3.1 (2026-10-05)
3.3.0 (2026-09-23)
- Port to MRPT 3.x (#220)
- Contributors: Jose Luis Blanco-Claraco
3.2.1 (2026-09-15)
- Merge pull request #209 from MOLAorg/feat/rosbag2-se3-odometry-as-robot-pose rosbag2: allow reading a 3D odometry source as CObservationRobotPose
- mola_viz_imgui: show dataset playback time in the dataset UI panel (#202)
- Contributors: Jose Luis Blanco-Claraco
3.2.0 (2026-08-21)
- Merge remote-tracking branch 'origin/feat/map-frame-gauge-change' into feat/map-frame-gauge-change
- Merge branch 'develop' into feat/map-frame-gauge-change
- Contributors: Jose Luis Blanco-Claraco
3.1.1 (2026-08-10)
- fix build in ros rolling (newer gcc)
- Contributors: Jose Luis Blanco Claraco
3.1.0 (2026-08-06)
-
Add mola::TransformTreeSource: expose the /tf tree to other MOLA modules (#188)
* Add mola::TransformTreeSource: expose the /tf tree to other modules New mola_kernel interface letting a data source publish its tree of coordinate frames, so consumers (e.g. a LiDAR-odometry viewer) can draw a robot's joints as it moves. transform_tree(root) returns the subtree below 'root' with poses already resolved against it. The filtering is done in the source, which is what owns the transform buffer, so a consumer never receives nor walks unrelated subtrees. The interface carries no ROS/tf2 type, keeping mola_kernel ROS-independent. Implemented by Rosbag1Dataset (separate repo), Rosbag2Dataset and BridgeROS2. No locking is added around the subtree walk: tf2::BufferCore guards its own internals, which is also what lets BridgeROS2's TransformListener feed the buffer from its own thread.
- Address review: depth-first comment, cycle guard in the tf walk
- No need for include guards inside this same git repo
-
Merge pull request #187 from MOLAorg/feat/incremental-point-cloud-kdtree-bake Bake IncrementalPointCloud's k-d tree index (mm-ipc-bake-kdtree)
-
changelog
-
Merge pull request #178 from MOLAorg/feat/rosbag2-compressed-image feat: decode sensor_msgs/msg/CompressedImage topics in Rosbag2Dataset
-
perf: avoid a redundant image-buffer copy and heap alloc per frame Two per-frame savings in toCompressedImage():
- The temporary sensor_msgs::msg::CompressedImage only needs to live for the duration of this call; a stack-local avoids a heap allocation cv_bridge::toCvCopy() doesn't require (it takes the message by const reference, unlike the raw-Image path's toCvShare(), which needs a shared_ptr).
- cv_ptr (and the cv::Mat it owns) is likewise local to this call, so copying it into the CObservationImage with mrpt::img::SHALLOW_COPY (ref-counted) instead of DEEP_COPY avoids duplicating the decoded pixel buffer a second time. Re-verified end-to-end against the Oxford Spires dataset: no errors. (CodeRabbit finding on PR #178)
-
feat: decode sensor_msgs/msg/CompressedImage topics in Rosbag2Dataset mrpt_ros_bridge's rosbag2ToImage() only understands the raw, uncompressed sensor_msgs/msg/Image wire format, so a 'sensors' entry of type CObservationImage pointed at a compressed-image topic (e.g. an "image/compressed" republished stream) previously fell through as unhandled. Added a local decoder (cv_bridge-based, dispatched on the topic's actual wire type) and registered the ROS type for auto-detection, so compressed camera streams can be read the same way as raw ones.
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| cv_bridge | |
| gps_msgs | |
| mola_kernel | |
| mrpt_obs | |
| mrpt_libros_bridge | |
| rosbag2_cpp | |
| sensor_msgs | |
| tf2_geometry_msgs | |
| tf2_msgs | |
| tf2_ros |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| mola | |
| mola_lidar_odometry |
Launch files
Messages
Services
Plugins
Recent questions tagged mola_input_rosbag2 at Robotics Stack Exchange
|
mola_input_rosbag2 package from mola repomola mola_bridge_ros2 mola_demos mola_input_lidar_bin_dataset mola_input_rawlog mola_input_rosbag2 mola_input_video mola_kernel mola_launcher mola_metric_maps mola_msgs mola_pose_list mola_relocalization mola_traj_tools mola_viz mola_viz_imgui mola_yaml |
ROS Distro
|
Package Summary
| Version | 3.4.0 |
| License | GPLv3 |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mola.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-11-12 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
mola_input_rosbag2
Offline RawDataSource from ROS 2 bags
Provided MOLA modules:
-
Rosbag2Dataset, type RawDataSourceBase.
CLI tools:
-
mola-sm-attach-from-rosbag2: Adds observations from a bag (e.g. camera images, for visual place recognition) to the keyframes of an existing.simplemap. Each observation goes to the keyframe closest in time (--max-age, default 0.5 s), and each keyframe keeps the closest one per topic, so none is stored twice. Images are written as jpg/png files to<output>_Images/(the external files of the input map are hard-linked there too); observations already in the map are not added again.
mola-sm-attach-from-rosbag2 -i map.simplemap -o map_cam.simplemap \
--rosbag2 dataset_dir --topic /camera/image_raw:camera_left
--topic is repeatable (TOPIC or TOPIC:LABEL), one label per topic: each
keyframe gets one observation per label. Use --fixed-sensor-pose
"x y z yaw pitch roll" for bags without /tf, and --image-format png or
inline to change how images are stored.
The ROS 1 version is mola-sm-attach-from-rosbag1 (package mola_input_rosbag1).
ROS 2 bags may also need --tf-topic / --tf-static-topic (e.g. namespaced robots).
Build and install
Refer to the root MOLA repository.
Docs and examples
See this package page in the documentation.
License
This package is released under the GNU GPL v3 license. Other options available upon request.
Changelog for package mola_input_rosbag2
3.4.0 (2026-11-01)
- Rosbag2Dataset: read only the topics that have a handler (#259)
- Contributors: Jose Luis Blanco-Claraco
3.3.2 (2026-10-09)
3.3.1 (2026-10-05)
3.3.0 (2026-09-23)
- Port to MRPT 3.x (#220)
- Contributors: Jose Luis Blanco-Claraco
3.2.1 (2026-09-15)
- Merge pull request #209 from MOLAorg/feat/rosbag2-se3-odometry-as-robot-pose rosbag2: allow reading a 3D odometry source as CObservationRobotPose
- mola_viz_imgui: show dataset playback time in the dataset UI panel (#202)
- Contributors: Jose Luis Blanco-Claraco
3.2.0 (2026-08-21)
- Merge remote-tracking branch 'origin/feat/map-frame-gauge-change' into feat/map-frame-gauge-change
- Merge branch 'develop' into feat/map-frame-gauge-change
- Contributors: Jose Luis Blanco-Claraco
3.1.1 (2026-08-10)
- fix build in ros rolling (newer gcc)
- Contributors: Jose Luis Blanco Claraco
3.1.0 (2026-08-06)
-
Add mola::TransformTreeSource: expose the /tf tree to other MOLA modules (#188)
* Add mola::TransformTreeSource: expose the /tf tree to other modules New mola_kernel interface letting a data source publish its tree of coordinate frames, so consumers (e.g. a LiDAR-odometry viewer) can draw a robot's joints as it moves. transform_tree(root) returns the subtree below 'root' with poses already resolved against it. The filtering is done in the source, which is what owns the transform buffer, so a consumer never receives nor walks unrelated subtrees. The interface carries no ROS/tf2 type, keeping mola_kernel ROS-independent. Implemented by Rosbag1Dataset (separate repo), Rosbag2Dataset and BridgeROS2. No locking is added around the subtree walk: tf2::BufferCore guards its own internals, which is also what lets BridgeROS2's TransformListener feed the buffer from its own thread.
- Address review: depth-first comment, cycle guard in the tf walk
- No need for include guards inside this same git repo
-
Merge pull request #187 from MOLAorg/feat/incremental-point-cloud-kdtree-bake Bake IncrementalPointCloud's k-d tree index (mm-ipc-bake-kdtree)
-
changelog
-
Merge pull request #178 from MOLAorg/feat/rosbag2-compressed-image feat: decode sensor_msgs/msg/CompressedImage topics in Rosbag2Dataset
-
perf: avoid a redundant image-buffer copy and heap alloc per frame Two per-frame savings in toCompressedImage():
- The temporary sensor_msgs::msg::CompressedImage only needs to live for the duration of this call; a stack-local avoids a heap allocation cv_bridge::toCvCopy() doesn't require (it takes the message by const reference, unlike the raw-Image path's toCvShare(), which needs a shared_ptr).
- cv_ptr (and the cv::Mat it owns) is likewise local to this call, so copying it into the CObservationImage with mrpt::img::SHALLOW_COPY (ref-counted) instead of DEEP_COPY avoids duplicating the decoded pixel buffer a second time. Re-verified end-to-end against the Oxford Spires dataset: no errors. (CodeRabbit finding on PR #178)
-
feat: decode sensor_msgs/msg/CompressedImage topics in Rosbag2Dataset mrpt_ros_bridge's rosbag2ToImage() only understands the raw, uncompressed sensor_msgs/msg/Image wire format, so a 'sensors' entry of type CObservationImage pointed at a compressed-image topic (e.g. an "image/compressed" republished stream) previously fell through as unhandled. Added a local decoder (cv_bridge-based, dispatched on the topic's actual wire type) and registered the ROS type for auto-detection, so compressed camera streams can be read the same way as raw ones.
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| cv_bridge | |
| gps_msgs | |
| mola_kernel | |
| mrpt_obs | |
| mrpt_libros_bridge | |
| rosbag2_cpp | |
| sensor_msgs | |
| tf2_geometry_msgs | |
| tf2_msgs | |
| tf2_ros |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| mola | |
| mola_lidar_odometry | |
| mola_mapper_2d |
Launch files
Messages
Services
Plugins
Recent questions tagged mola_input_rosbag2 at Robotics Stack Exchange
|
mola_input_rosbag2 package from mola repomola mola_bridge_ros2 mola_demos mola_input_lidar_bin_dataset mola_input_rawlog mola_input_rosbag2 mola_input_video mola_kernel mola_launcher mola_metric_maps mola_msgs mola_pose_list mola_relocalization mola_traj_tools mola_viz mola_viz_imgui mola_yaml |
ROS Distro
|
Package Summary
| Version | 3.4.0 |
| License | GPLv3 |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mola.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-11-12 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
mola_input_rosbag2
Offline RawDataSource from ROS 2 bags
Provided MOLA modules:
-
Rosbag2Dataset, type RawDataSourceBase.
CLI tools:
-
mola-sm-attach-from-rosbag2: Adds observations from a bag (e.g. camera images, for visual place recognition) to the keyframes of an existing.simplemap. Each observation goes to the keyframe closest in time (--max-age, default 0.5 s), and each keyframe keeps the closest one per topic, so none is stored twice. Images are written as jpg/png files to<output>_Images/(the external files of the input map are hard-linked there too); observations already in the map are not added again.
mola-sm-attach-from-rosbag2 -i map.simplemap -o map_cam.simplemap \
--rosbag2 dataset_dir --topic /camera/image_raw:camera_left
--topic is repeatable (TOPIC or TOPIC:LABEL), one label per topic: each
keyframe gets one observation per label. Use --fixed-sensor-pose
"x y z yaw pitch roll" for bags without /tf, and --image-format png or
inline to change how images are stored.
The ROS 1 version is mola-sm-attach-from-rosbag1 (package mola_input_rosbag1).
ROS 2 bags may also need --tf-topic / --tf-static-topic (e.g. namespaced robots).
Build and install
Refer to the root MOLA repository.
Docs and examples
See this package page in the documentation.
License
This package is released under the GNU GPL v3 license. Other options available upon request.
Changelog for package mola_input_rosbag2
3.4.0 (2026-11-01)
- Rosbag2Dataset: read only the topics that have a handler (#259)
- Contributors: Jose Luis Blanco-Claraco
3.3.2 (2026-10-09)
3.3.1 (2026-10-05)
3.3.0 (2026-09-23)
- Port to MRPT 3.x (#220)
- Contributors: Jose Luis Blanco-Claraco
3.2.1 (2026-09-15)
- Merge pull request #209 from MOLAorg/feat/rosbag2-se3-odometry-as-robot-pose rosbag2: allow reading a 3D odometry source as CObservationRobotPose
- mola_viz_imgui: show dataset playback time in the dataset UI panel (#202)
- Contributors: Jose Luis Blanco-Claraco
3.2.0 (2026-08-21)
- Merge remote-tracking branch 'origin/feat/map-frame-gauge-change' into feat/map-frame-gauge-change
- Merge branch 'develop' into feat/map-frame-gauge-change
- Contributors: Jose Luis Blanco-Claraco
3.1.1 (2026-08-10)
- fix build in ros rolling (newer gcc)
- Contributors: Jose Luis Blanco Claraco
3.1.0 (2026-08-06)
-
Add mola::TransformTreeSource: expose the /tf tree to other MOLA modules (#188)
* Add mola::TransformTreeSource: expose the /tf tree to other modules New mola_kernel interface letting a data source publish its tree of coordinate frames, so consumers (e.g. a LiDAR-odometry viewer) can draw a robot's joints as it moves. transform_tree(root) returns the subtree below 'root' with poses already resolved against it. The filtering is done in the source, which is what owns the transform buffer, so a consumer never receives nor walks unrelated subtrees. The interface carries no ROS/tf2 type, keeping mola_kernel ROS-independent. Implemented by Rosbag1Dataset (separate repo), Rosbag2Dataset and BridgeROS2. No locking is added around the subtree walk: tf2::BufferCore guards its own internals, which is also what lets BridgeROS2's TransformListener feed the buffer from its own thread.
- Address review: depth-first comment, cycle guard in the tf walk
- No need for include guards inside this same git repo
-
Merge pull request #187 from MOLAorg/feat/incremental-point-cloud-kdtree-bake Bake IncrementalPointCloud's k-d tree index (mm-ipc-bake-kdtree)
-
changelog
-
Merge pull request #178 from MOLAorg/feat/rosbag2-compressed-image feat: decode sensor_msgs/msg/CompressedImage topics in Rosbag2Dataset
-
perf: avoid a redundant image-buffer copy and heap alloc per frame Two per-frame savings in toCompressedImage():
- The temporary sensor_msgs::msg::CompressedImage only needs to live for the duration of this call; a stack-local avoids a heap allocation cv_bridge::toCvCopy() doesn't require (it takes the message by const reference, unlike the raw-Image path's toCvShare(), which needs a shared_ptr).
- cv_ptr (and the cv::Mat it owns) is likewise local to this call, so copying it into the CObservationImage with mrpt::img::SHALLOW_COPY (ref-counted) instead of DEEP_COPY avoids duplicating the decoded pixel buffer a second time. Re-verified end-to-end against the Oxford Spires dataset: no errors. (CodeRabbit finding on PR #178)
-
feat: decode sensor_msgs/msg/CompressedImage topics in Rosbag2Dataset mrpt_ros_bridge's rosbag2ToImage() only understands the raw, uncompressed sensor_msgs/msg/Image wire format, so a 'sensors' entry of type CObservationImage pointed at a compressed-image topic (e.g. an "image/compressed" republished stream) previously fell through as unhandled. Added a local decoder (cv_bridge-based, dispatched on the topic's actual wire type) and registered the ROS type for auto-detection, so compressed camera streams can be read the same way as raw ones.
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| cv_bridge | |
| gps_msgs | |
| mola_kernel | |
| mrpt_obs | |
| mrpt_libros_bridge | |
| rosbag2_cpp | |
| sensor_msgs | |
| tf2_geometry_msgs | |
| tf2_msgs | |
| tf2_ros |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| mola | |
| mola_lidar_odometry | |
| mola_mapper_2d |
Launch files
Messages
Services
Plugins
Recent questions tagged mola_input_rosbag2 at Robotics Stack Exchange
|
mola_input_rosbag2 package from mola repomola mola_bridge_ros2 mola_demos mola_input_lidar_bin_dataset mola_input_rawlog mola_input_rosbag2 mola_input_video mola_kernel mola_launcher mola_metric_maps mola_msgs mola_pose_list mola_relocalization mola_traj_tools mola_viz mola_viz_imgui mola_yaml |
ROS Distro
|
Package Summary
| Version | 3.4.0 |
| License | GPLv3 |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mola.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-11-12 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
mola_input_rosbag2
Offline RawDataSource from ROS 2 bags
Provided MOLA modules:
-
Rosbag2Dataset, type RawDataSourceBase.
CLI tools:
-
mola-sm-attach-from-rosbag2: Adds observations from a bag (e.g. camera images, for visual place recognition) to the keyframes of an existing.simplemap. Each observation goes to the keyframe closest in time (--max-age, default 0.5 s), and each keyframe keeps the closest one per topic, so none is stored twice. Images are written as jpg/png files to<output>_Images/(the external files of the input map are hard-linked there too); observations already in the map are not added again.
mola-sm-attach-from-rosbag2 -i map.simplemap -o map_cam.simplemap \
--rosbag2 dataset_dir --topic /camera/image_raw:camera_left
--topic is repeatable (TOPIC or TOPIC:LABEL), one label per topic: each
keyframe gets one observation per label. Use --fixed-sensor-pose
"x y z yaw pitch roll" for bags without /tf, and --image-format png or
inline to change how images are stored.
The ROS 1 version is mola-sm-attach-from-rosbag1 (package mola_input_rosbag1).
ROS 2 bags may also need --tf-topic / --tf-static-topic (e.g. namespaced robots).
Build and install
Refer to the root MOLA repository.
Docs and examples
See this package page in the documentation.
License
This package is released under the GNU GPL v3 license. Other options available upon request.
Changelog for package mola_input_rosbag2
3.4.0 (2026-11-01)
- Rosbag2Dataset: read only the topics that have a handler (#259)
- Contributors: Jose Luis Blanco-Claraco
3.3.2 (2026-10-09)
3.3.1 (2026-10-05)
3.3.0 (2026-09-23)
- Port to MRPT 3.x (#220)
- Contributors: Jose Luis Blanco-Claraco
3.2.1 (2026-09-15)
- Merge pull request #209 from MOLAorg/feat/rosbag2-se3-odometry-as-robot-pose rosbag2: allow reading a 3D odometry source as CObservationRobotPose
- mola_viz_imgui: show dataset playback time in the dataset UI panel (#202)
- Contributors: Jose Luis Blanco-Claraco
3.2.0 (2026-08-21)
- Merge remote-tracking branch 'origin/feat/map-frame-gauge-change' into feat/map-frame-gauge-change
- Merge branch 'develop' into feat/map-frame-gauge-change
- Contributors: Jose Luis Blanco-Claraco
3.1.1 (2026-08-10)
- fix build in ros rolling (newer gcc)
- Contributors: Jose Luis Blanco Claraco
3.1.0 (2026-08-06)
-
Add mola::TransformTreeSource: expose the /tf tree to other MOLA modules (#188)
* Add mola::TransformTreeSource: expose the /tf tree to other modules New mola_kernel interface letting a data source publish its tree of coordinate frames, so consumers (e.g. a LiDAR-odometry viewer) can draw a robot's joints as it moves. transform_tree(root) returns the subtree below 'root' with poses already resolved against it. The filtering is done in the source, which is what owns the transform buffer, so a consumer never receives nor walks unrelated subtrees. The interface carries no ROS/tf2 type, keeping mola_kernel ROS-independent. Implemented by Rosbag1Dataset (separate repo), Rosbag2Dataset and BridgeROS2. No locking is added around the subtree walk: tf2::BufferCore guards its own internals, which is also what lets BridgeROS2's TransformListener feed the buffer from its own thread.
- Address review: depth-first comment, cycle guard in the tf walk
- No need for include guards inside this same git repo
-
Merge pull request #187 from MOLAorg/feat/incremental-point-cloud-kdtree-bake Bake IncrementalPointCloud's k-d tree index (mm-ipc-bake-kdtree)
-
changelog
-
Merge pull request #178 from MOLAorg/feat/rosbag2-compressed-image feat: decode sensor_msgs/msg/CompressedImage topics in Rosbag2Dataset
-
perf: avoid a redundant image-buffer copy and heap alloc per frame Two per-frame savings in toCompressedImage():
- The temporary sensor_msgs::msg::CompressedImage only needs to live for the duration of this call; a stack-local avoids a heap allocation cv_bridge::toCvCopy() doesn't require (it takes the message by const reference, unlike the raw-Image path's toCvShare(), which needs a shared_ptr).
- cv_ptr (and the cv::Mat it owns) is likewise local to this call, so copying it into the CObservationImage with mrpt::img::SHALLOW_COPY (ref-counted) instead of DEEP_COPY avoids duplicating the decoded pixel buffer a second time. Re-verified end-to-end against the Oxford Spires dataset: no errors. (CodeRabbit finding on PR #178)
-
feat: decode sensor_msgs/msg/CompressedImage topics in Rosbag2Dataset mrpt_ros_bridge's rosbag2ToImage() only understands the raw, uncompressed sensor_msgs/msg/Image wire format, so a 'sensors' entry of type CObservationImage pointed at a compressed-image topic (e.g. an "image/compressed" republished stream) previously fell through as unhandled. Added a local decoder (cv_bridge-based, dispatched on the topic's actual wire type) and registered the ROS type for auto-detection, so compressed camera streams can be read the same way as raw ones.
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| cv_bridge | |
| gps_msgs | |
| mola_kernel | |
| mrpt_obs | |
| mrpt_libros_bridge | |
| rosbag2_cpp | |
| sensor_msgs | |
| tf2_geometry_msgs | |
| tf2_msgs | |
| tf2_ros |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| mola | |
| mola_lidar_odometry | |
| mola_mapper_2d |
Launch files
Messages
Services
Plugins
Recent questions tagged mola_input_rosbag2 at Robotics Stack Exchange
|
mola_input_rosbag2 package from mola repomola mola_bridge_ros2 mola_demos mola_input_lidar_bin_dataset mola_input_rawlog mola_input_rosbag2 mola_input_video mola_kernel mola_launcher mola_metric_maps mola_msgs mola_pose_list mola_relocalization mola_traj_tools mola_viz mola_viz_imgui mola_yaml |
ROS Distro
|
Package Summary
| Version | 3.4.0 |
| License | GPLv3 |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mola.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-11-12 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
mola_input_rosbag2
Offline RawDataSource from ROS 2 bags
Provided MOLA modules:
-
Rosbag2Dataset, type RawDataSourceBase.
CLI tools:
-
mola-sm-attach-from-rosbag2: Adds observations from a bag (e.g. camera images, for visual place recognition) to the keyframes of an existing.simplemap. Each observation goes to the keyframe closest in time (--max-age, default 0.5 s), and each keyframe keeps the closest one per topic, so none is stored twice. Images are written as jpg/png files to<output>_Images/(the external files of the input map are hard-linked there too); observations already in the map are not added again.
mola-sm-attach-from-rosbag2 -i map.simplemap -o map_cam.simplemap \
--rosbag2 dataset_dir --topic /camera/image_raw:camera_left
--topic is repeatable (TOPIC or TOPIC:LABEL), one label per topic: each
keyframe gets one observation per label. Use --fixed-sensor-pose
"x y z yaw pitch roll" for bags without /tf, and --image-format png or
inline to change how images are stored.
The ROS 1 version is mola-sm-attach-from-rosbag1 (package mola_input_rosbag1).
ROS 2 bags may also need --tf-topic / --tf-static-topic (e.g. namespaced robots).
Build and install
Refer to the root MOLA repository.
Docs and examples
See this package page in the documentation.
License
This package is released under the GNU GPL v3 license. Other options available upon request.
Changelog for package mola_input_rosbag2
3.4.0 (2026-11-01)
- Rosbag2Dataset: read only the topics that have a handler (#259)
- Contributors: Jose Luis Blanco-Claraco
3.3.2 (2026-10-09)
3.3.1 (2026-10-05)
3.3.0 (2026-09-23)
- Port to MRPT 3.x (#220)
- Contributors: Jose Luis Blanco-Claraco
3.2.1 (2026-09-15)
- Merge pull request #209 from MOLAorg/feat/rosbag2-se3-odometry-as-robot-pose rosbag2: allow reading a 3D odometry source as CObservationRobotPose
- mola_viz_imgui: show dataset playback time in the dataset UI panel (#202)
- Contributors: Jose Luis Blanco-Claraco
3.2.0 (2026-08-21)
- Merge remote-tracking branch 'origin/feat/map-frame-gauge-change' into feat/map-frame-gauge-change
- Merge branch 'develop' into feat/map-frame-gauge-change
- Contributors: Jose Luis Blanco-Claraco
3.1.1 (2026-08-10)
- fix build in ros rolling (newer gcc)
- Contributors: Jose Luis Blanco Claraco
3.1.0 (2026-08-06)
-
Add mola::TransformTreeSource: expose the /tf tree to other MOLA modules (#188)
* Add mola::TransformTreeSource: expose the /tf tree to other modules New mola_kernel interface letting a data source publish its tree of coordinate frames, so consumers (e.g. a LiDAR-odometry viewer) can draw a robot's joints as it moves. transform_tree(root) returns the subtree below 'root' with poses already resolved against it. The filtering is done in the source, which is what owns the transform buffer, so a consumer never receives nor walks unrelated subtrees. The interface carries no ROS/tf2 type, keeping mola_kernel ROS-independent. Implemented by Rosbag1Dataset (separate repo), Rosbag2Dataset and BridgeROS2. No locking is added around the subtree walk: tf2::BufferCore guards its own internals, which is also what lets BridgeROS2's TransformListener feed the buffer from its own thread.
- Address review: depth-first comment, cycle guard in the tf walk
- No need for include guards inside this same git repo
-
Merge pull request #187 from MOLAorg/feat/incremental-point-cloud-kdtree-bake Bake IncrementalPointCloud's k-d tree index (mm-ipc-bake-kdtree)
-
changelog
-
Merge pull request #178 from MOLAorg/feat/rosbag2-compressed-image feat: decode sensor_msgs/msg/CompressedImage topics in Rosbag2Dataset
-
perf: avoid a redundant image-buffer copy and heap alloc per frame Two per-frame savings in toCompressedImage():
- The temporary sensor_msgs::msg::CompressedImage only needs to live for the duration of this call; a stack-local avoids a heap allocation cv_bridge::toCvCopy() doesn't require (it takes the message by const reference, unlike the raw-Image path's toCvShare(), which needs a shared_ptr).
- cv_ptr (and the cv::Mat it owns) is likewise local to this call, so copying it into the CObservationImage with mrpt::img::SHALLOW_COPY (ref-counted) instead of DEEP_COPY avoids duplicating the decoded pixel buffer a second time. Re-verified end-to-end against the Oxford Spires dataset: no errors. (CodeRabbit finding on PR #178)
-
feat: decode sensor_msgs/msg/CompressedImage topics in Rosbag2Dataset mrpt_ros_bridge's rosbag2ToImage() only understands the raw, uncompressed sensor_msgs/msg/Image wire format, so a 'sensors' entry of type CObservationImage pointed at a compressed-image topic (e.g. an "image/compressed" republished stream) previously fell through as unhandled. Added a local decoder (cv_bridge-based, dispatched on the topic's actual wire type) and registered the ROS type for auto-detection, so compressed camera streams can be read the same way as raw ones.
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| cv_bridge | |
| gps_msgs | |
| mola_kernel | |
| mrpt_obs | |
| mrpt_libros_bridge | |
| rosbag2_cpp | |
| sensor_msgs | |
| tf2_geometry_msgs | |
| tf2_msgs | |
| tf2_ros |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| mola | |
| mola_lidar_odometry | |
| mola_mapper_2d |
Launch files
Messages
Services
Plugins
Recent questions tagged mola_input_rosbag2 at Robotics Stack Exchange
|
mola_input_rosbag2 package from mola repomola mola_bridge_ros2 mola_demos mola_input_lidar_bin_dataset mola_input_rawlog mola_input_rosbag2 mola_input_video mola_kernel mola_launcher mola_metric_maps mola_msgs mola_pose_list mola_relocalization mola_traj_tools mola_viz mola_viz_imgui mola_yaml |
ROS Distro
|
Package Summary
| Version | 3.4.0 |
| License | GPLv3 |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mola.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-11-12 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
mola_input_rosbag2
Offline RawDataSource from ROS 2 bags
Provided MOLA modules:
-
Rosbag2Dataset, type RawDataSourceBase.
CLI tools:
-
mola-sm-attach-from-rosbag2: Adds observations from a bag (e.g. camera images, for visual place recognition) to the keyframes of an existing.simplemap. Each observation goes to the keyframe closest in time (--max-age, default 0.5 s), and each keyframe keeps the closest one per topic, so none is stored twice. Images are written as jpg/png files to<output>_Images/(the external files of the input map are hard-linked there too); observations already in the map are not added again.
mola-sm-attach-from-rosbag2 -i map.simplemap -o map_cam.simplemap \
--rosbag2 dataset_dir --topic /camera/image_raw:camera_left
--topic is repeatable (TOPIC or TOPIC:LABEL), one label per topic: each
keyframe gets one observation per label. Use --fixed-sensor-pose
"x y z yaw pitch roll" for bags without /tf, and --image-format png or
inline to change how images are stored.
The ROS 1 version is mola-sm-attach-from-rosbag1 (package mola_input_rosbag1).
ROS 2 bags may also need --tf-topic / --tf-static-topic (e.g. namespaced robots).
Build and install
Refer to the root MOLA repository.
Docs and examples
See this package page in the documentation.
License
This package is released under the GNU GPL v3 license. Other options available upon request.
Changelog for package mola_input_rosbag2
3.4.0 (2026-11-01)
- Rosbag2Dataset: read only the topics that have a handler (#259)
- Contributors: Jose Luis Blanco-Claraco
3.3.2 (2026-10-09)
3.3.1 (2026-10-05)
3.3.0 (2026-09-23)
- Port to MRPT 3.x (#220)
- Contributors: Jose Luis Blanco-Claraco
3.2.1 (2026-09-15)
- Merge pull request #209 from MOLAorg/feat/rosbag2-se3-odometry-as-robot-pose rosbag2: allow reading a 3D odometry source as CObservationRobotPose
- mola_viz_imgui: show dataset playback time in the dataset UI panel (#202)
- Contributors: Jose Luis Blanco-Claraco
3.2.0 (2026-08-21)
- Merge remote-tracking branch 'origin/feat/map-frame-gauge-change' into feat/map-frame-gauge-change
- Merge branch 'develop' into feat/map-frame-gauge-change
- Contributors: Jose Luis Blanco-Claraco
3.1.1 (2026-08-10)
- fix build in ros rolling (newer gcc)
- Contributors: Jose Luis Blanco Claraco
3.1.0 (2026-08-06)
-
Add mola::TransformTreeSource: expose the /tf tree to other MOLA modules (#188)
* Add mola::TransformTreeSource: expose the /tf tree to other modules New mola_kernel interface letting a data source publish its tree of coordinate frames, so consumers (e.g. a LiDAR-odometry viewer) can draw a robot's joints as it moves. transform_tree(root) returns the subtree below 'root' with poses already resolved against it. The filtering is done in the source, which is what owns the transform buffer, so a consumer never receives nor walks unrelated subtrees. The interface carries no ROS/tf2 type, keeping mola_kernel ROS-independent. Implemented by Rosbag1Dataset (separate repo), Rosbag2Dataset and BridgeROS2. No locking is added around the subtree walk: tf2::BufferCore guards its own internals, which is also what lets BridgeROS2's TransformListener feed the buffer from its own thread.
- Address review: depth-first comment, cycle guard in the tf walk
- No need for include guards inside this same git repo
-
Merge pull request #187 from MOLAorg/feat/incremental-point-cloud-kdtree-bake Bake IncrementalPointCloud's k-d tree index (mm-ipc-bake-kdtree)
-
changelog
-
Merge pull request #178 from MOLAorg/feat/rosbag2-compressed-image feat: decode sensor_msgs/msg/CompressedImage topics in Rosbag2Dataset
-
perf: avoid a redundant image-buffer copy and heap alloc per frame Two per-frame savings in toCompressedImage():
- The temporary sensor_msgs::msg::CompressedImage only needs to live for the duration of this call; a stack-local avoids a heap allocation cv_bridge::toCvCopy() doesn't require (it takes the message by const reference, unlike the raw-Image path's toCvShare(), which needs a shared_ptr).
- cv_ptr (and the cv::Mat it owns) is likewise local to this call, so copying it into the CObservationImage with mrpt::img::SHALLOW_COPY (ref-counted) instead of DEEP_COPY avoids duplicating the decoded pixel buffer a second time. Re-verified end-to-end against the Oxford Spires dataset: no errors. (CodeRabbit finding on PR #178)
-
feat: decode sensor_msgs/msg/CompressedImage topics in Rosbag2Dataset mrpt_ros_bridge's rosbag2ToImage() only understands the raw, uncompressed sensor_msgs/msg/Image wire format, so a 'sensors' entry of type CObservationImage pointed at a compressed-image topic (e.g. an "image/compressed" republished stream) previously fell through as unhandled. Added a local decoder (cv_bridge-based, dispatched on the topic's actual wire type) and registered the ROS type for auto-detection, so compressed camera streams can be read the same way as raw ones.
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| cv_bridge | |
| gps_msgs | |
| mola_kernel | |
| mrpt_obs | |
| mrpt_libros_bridge | |
| rosbag2_cpp | |
| sensor_msgs | |
| tf2_geometry_msgs | |
| tf2_msgs | |
| tf2_ros |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| mola | |
| mola_lidar_odometry | |
| mola_mapper_2d |
Launch files
Messages
Services
Plugins
Recent questions tagged mola_input_rosbag2 at Robotics Stack Exchange
|
mola_input_rosbag2 package from mola repomola mola_bridge_ros2 mola_demos mola_input_lidar_bin_dataset mola_input_rawlog mola_input_rosbag2 mola_input_video mola_kernel mola_launcher mola_metric_maps mola_msgs mola_pose_list mola_relocalization mola_traj_tools mola_viz mola_viz_imgui mola_yaml |
ROS Distro
|
Package Summary
| Version | 3.4.0 |
| License | GPLv3 |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mola.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-11-12 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
mola_input_rosbag2
Offline RawDataSource from ROS 2 bags
Provided MOLA modules:
-
Rosbag2Dataset, type RawDataSourceBase.
CLI tools:
-
mola-sm-attach-from-rosbag2: Adds observations from a bag (e.g. camera images, for visual place recognition) to the keyframes of an existing.simplemap. Each observation goes to the keyframe closest in time (--max-age, default 0.5 s), and each keyframe keeps the closest one per topic, so none is stored twice. Images are written as jpg/png files to<output>_Images/(the external files of the input map are hard-linked there too); observations already in the map are not added again.
mola-sm-attach-from-rosbag2 -i map.simplemap -o map_cam.simplemap \
--rosbag2 dataset_dir --topic /camera/image_raw:camera_left
--topic is repeatable (TOPIC or TOPIC:LABEL), one label per topic: each
keyframe gets one observation per label. Use --fixed-sensor-pose
"x y z yaw pitch roll" for bags without /tf, and --image-format png or
inline to change how images are stored.
The ROS 1 version is mola-sm-attach-from-rosbag1 (package mola_input_rosbag1).
ROS 2 bags may also need --tf-topic / --tf-static-topic (e.g. namespaced robots).
Build and install
Refer to the root MOLA repository.
Docs and examples
See this package page in the documentation.
License
This package is released under the GNU GPL v3 license. Other options available upon request.
Changelog for package mola_input_rosbag2
3.4.0 (2026-11-01)
- Rosbag2Dataset: read only the topics that have a handler (#259)
- Contributors: Jose Luis Blanco-Claraco
3.3.2 (2026-10-09)
3.3.1 (2026-10-05)
3.3.0 (2026-09-23)
- Port to MRPT 3.x (#220)
- Contributors: Jose Luis Blanco-Claraco
3.2.1 (2026-09-15)
- Merge pull request #209 from MOLAorg/feat/rosbag2-se3-odometry-as-robot-pose rosbag2: allow reading a 3D odometry source as CObservationRobotPose
- mola_viz_imgui: show dataset playback time in the dataset UI panel (#202)
- Contributors: Jose Luis Blanco-Claraco
3.2.0 (2026-08-21)
- Merge remote-tracking branch 'origin/feat/map-frame-gauge-change' into feat/map-frame-gauge-change
- Merge branch 'develop' into feat/map-frame-gauge-change
- Contributors: Jose Luis Blanco-Claraco
3.1.1 (2026-08-10)
- fix build in ros rolling (newer gcc)
- Contributors: Jose Luis Blanco Claraco
3.1.0 (2026-08-06)
-
Add mola::TransformTreeSource: expose the /tf tree to other MOLA modules (#188)
* Add mola::TransformTreeSource: expose the /tf tree to other modules New mola_kernel interface letting a data source publish its tree of coordinate frames, so consumers (e.g. a LiDAR-odometry viewer) can draw a robot's joints as it moves. transform_tree(root) returns the subtree below 'root' with poses already resolved against it. The filtering is done in the source, which is what owns the transform buffer, so a consumer never receives nor walks unrelated subtrees. The interface carries no ROS/tf2 type, keeping mola_kernel ROS-independent. Implemented by Rosbag1Dataset (separate repo), Rosbag2Dataset and BridgeROS2. No locking is added around the subtree walk: tf2::BufferCore guards its own internals, which is also what lets BridgeROS2's TransformListener feed the buffer from its own thread.
- Address review: depth-first comment, cycle guard in the tf walk
- No need for include guards inside this same git repo
-
Merge pull request #187 from MOLAorg/feat/incremental-point-cloud-kdtree-bake Bake IncrementalPointCloud's k-d tree index (mm-ipc-bake-kdtree)
-
changelog
-
Merge pull request #178 from MOLAorg/feat/rosbag2-compressed-image feat: decode sensor_msgs/msg/CompressedImage topics in Rosbag2Dataset
-
perf: avoid a redundant image-buffer copy and heap alloc per frame Two per-frame savings in toCompressedImage():
- The temporary sensor_msgs::msg::CompressedImage only needs to live for the duration of this call; a stack-local avoids a heap allocation cv_bridge::toCvCopy() doesn't require (it takes the message by const reference, unlike the raw-Image path's toCvShare(), which needs a shared_ptr).
- cv_ptr (and the cv::Mat it owns) is likewise local to this call, so copying it into the CObservationImage with mrpt::img::SHALLOW_COPY (ref-counted) instead of DEEP_COPY avoids duplicating the decoded pixel buffer a second time. Re-verified end-to-end against the Oxford Spires dataset: no errors. (CodeRabbit finding on PR #178)
-
feat: decode sensor_msgs/msg/CompressedImage topics in Rosbag2Dataset mrpt_ros_bridge's rosbag2ToImage() only understands the raw, uncompressed sensor_msgs/msg/Image wire format, so a 'sensors' entry of type CObservationImage pointed at a compressed-image topic (e.g. an "image/compressed" republished stream) previously fell through as unhandled. Added a local decoder (cv_bridge-based, dispatched on the topic's actual wire type) and registered the ROS type for auto-detection, so compressed camera streams can be read the same way as raw ones.
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| cv_bridge | |
| gps_msgs | |
| mola_kernel | |
| mrpt_obs | |
| mrpt_libros_bridge | |
| rosbag2_cpp | |
| sensor_msgs | |
| tf2_geometry_msgs | |
| tf2_msgs | |
| tf2_ros |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| mola | |
| mola_lidar_odometry | |
| mola_mapper_2d |
Launch files
Messages
Services
Plugins
Recent questions tagged mola_input_rosbag2 at Robotics Stack Exchange
|
mola_input_rosbag2 package from mola repomola mola_bridge_ros2 mola_demos mola_input_lidar_bin_dataset mola_input_rawlog mola_input_rosbag2 mola_input_video mola_kernel mola_launcher mola_metric_maps mola_msgs mola_pose_list mola_relocalization mola_traj_tools mola_viz mola_viz_imgui mola_yaml |
ROS Distro
|
Package Summary
| Version | 3.4.0 |
| License | GPLv3 |
| Build type | CMAKE |
| Use | RECOMMENDED |
Repository Summary
| Checkout URI | https://github.com/MOLAorg/mola.git |
| VCS Type | git |
| VCS Version | develop |
| Last Updated | 2026-11-12 |
| Dev Status | DEVELOPED |
| Released | RELEASED |
| Contributing |
Help Wanted (-)
Good First Issues (-) Pull Requests to Review (-) |
Package Description
Additional Links
Maintainers
- Jose-Luis Blanco-Claraco
Authors
mola_input_rosbag2
Offline RawDataSource from ROS 2 bags
Provided MOLA modules:
-
Rosbag2Dataset, type RawDataSourceBase.
CLI tools:
-
mola-sm-attach-from-rosbag2: Adds observations from a bag (e.g. camera images, for visual place recognition) to the keyframes of an existing.simplemap. Each observation goes to the keyframe closest in time (--max-age, default 0.5 s), and each keyframe keeps the closest one per topic, so none is stored twice. Images are written as jpg/png files to<output>_Images/(the external files of the input map are hard-linked there too); observations already in the map are not added again.
mola-sm-attach-from-rosbag2 -i map.simplemap -o map_cam.simplemap \
--rosbag2 dataset_dir --topic /camera/image_raw:camera_left
--topic is repeatable (TOPIC or TOPIC:LABEL), one label per topic: each
keyframe gets one observation per label. Use --fixed-sensor-pose
"x y z yaw pitch roll" for bags without /tf, and --image-format png or
inline to change how images are stored.
The ROS 1 version is mola-sm-attach-from-rosbag1 (package mola_input_rosbag1).
ROS 2 bags may also need --tf-topic / --tf-static-topic (e.g. namespaced robots).
Build and install
Refer to the root MOLA repository.
Docs and examples
See this package page in the documentation.
License
This package is released under the GNU GPL v3 license. Other options available upon request.
Changelog for package mola_input_rosbag2
3.4.0 (2026-11-01)
- Rosbag2Dataset: read only the topics that have a handler (#259)
- Contributors: Jose Luis Blanco-Claraco
3.3.2 (2026-10-09)
3.3.1 (2026-10-05)
3.3.0 (2026-09-23)
- Port to MRPT 3.x (#220)
- Contributors: Jose Luis Blanco-Claraco
3.2.1 (2026-09-15)
- Merge pull request #209 from MOLAorg/feat/rosbag2-se3-odometry-as-robot-pose rosbag2: allow reading a 3D odometry source as CObservationRobotPose
- mola_viz_imgui: show dataset playback time in the dataset UI panel (#202)
- Contributors: Jose Luis Blanco-Claraco
3.2.0 (2026-08-21)
- Merge remote-tracking branch 'origin/feat/map-frame-gauge-change' into feat/map-frame-gauge-change
- Merge branch 'develop' into feat/map-frame-gauge-change
- Contributors: Jose Luis Blanco-Claraco
3.1.1 (2026-08-10)
- fix build in ros rolling (newer gcc)
- Contributors: Jose Luis Blanco Claraco
3.1.0 (2026-08-06)
-
Add mola::TransformTreeSource: expose the /tf tree to other MOLA modules (#188)
* Add mola::TransformTreeSource: expose the /tf tree to other modules New mola_kernel interface letting a data source publish its tree of coordinate frames, so consumers (e.g. a LiDAR-odometry viewer) can draw a robot's joints as it moves. transform_tree(root) returns the subtree below 'root' with poses already resolved against it. The filtering is done in the source, which is what owns the transform buffer, so a consumer never receives nor walks unrelated subtrees. The interface carries no ROS/tf2 type, keeping mola_kernel ROS-independent. Implemented by Rosbag1Dataset (separate repo), Rosbag2Dataset and BridgeROS2. No locking is added around the subtree walk: tf2::BufferCore guards its own internals, which is also what lets BridgeROS2's TransformListener feed the buffer from its own thread.
- Address review: depth-first comment, cycle guard in the tf walk
- No need for include guards inside this same git repo
-
Merge pull request #187 from MOLAorg/feat/incremental-point-cloud-kdtree-bake Bake IncrementalPointCloud's k-d tree index (mm-ipc-bake-kdtree)
-
changelog
-
Merge pull request #178 from MOLAorg/feat/rosbag2-compressed-image feat: decode sensor_msgs/msg/CompressedImage topics in Rosbag2Dataset
-
perf: avoid a redundant image-buffer copy and heap alloc per frame Two per-frame savings in toCompressedImage():
- The temporary sensor_msgs::msg::CompressedImage only needs to live for the duration of this call; a stack-local avoids a heap allocation cv_bridge::toCvCopy() doesn't require (it takes the message by const reference, unlike the raw-Image path's toCvShare(), which needs a shared_ptr).
- cv_ptr (and the cv::Mat it owns) is likewise local to this call, so copying it into the CObservationImage with mrpt::img::SHALLOW_COPY (ref-counted) instead of DEEP_COPY avoids duplicating the decoded pixel buffer a second time. Re-verified end-to-end against the Oxford Spires dataset: no errors. (CodeRabbit finding on PR #178)
-
feat: decode sensor_msgs/msg/CompressedImage topics in Rosbag2Dataset mrpt_ros_bridge's rosbag2ToImage() only understands the raw, uncompressed sensor_msgs/msg/Image wire format, so a 'sensors' entry of type CObservationImage pointed at a compressed-image topic (e.g. an "image/compressed" republished stream) previously fell through as unhandled. Added a local decoder (cv_bridge-based, dispatched on the topic's actual wire type) and registered the ROS type for auto-detection, so compressed camera streams can be read the same way as raw ones.
File truncated at 100 lines see the full file
Package Dependencies
| Deps | Name |
|---|---|
| cv_bridge | |
| gps_msgs | |
| mola_kernel | |
| mrpt_obs | |
| mrpt_libros_bridge | |
| rosbag2_cpp | |
| sensor_msgs | |
| tf2_geometry_msgs | |
| tf2_msgs | |
| tf2_ros |
System Dependencies
Dependant Packages
| Name | Deps |
|---|---|
| mola | |
| mola_lidar_odometry | |
| mola_mapper_2d |