Supporting image compression formats passthrough (#1461)

* Supporting ros depth compression formats passthrough

* Added image_compression_format (support jpg,png). Use Compression.h constants.

* Bridging gap with #1457

* CoreWrapper: decode_images_on_demand

* rgbd_sync->rgbd_split encoding/decoding test with image_transport validation. rgbd_split color passthrough

* more tests

* fixing ci on kilted+

* fixing test

* fixing lyrical tests

* fixing rolling ci

* Improved test coverage

* fixing some tf waitForTransform deadlocks when sim time is used in tests

* CI: build rtabmap_slam on rolling

rtabmap_slam builds without nav2_msgs, which is not on resolute yet: skip its
key instead of leaving the package out. Only rtabmap_costmap_plugins (and the
rtabmap_ros metapackage pulling it in) still need nav2.
This commit is contained in:
matlabbe
2026-10-10 16:05:08 -07:00
committed by GitHub
parent 82f0754bf7
commit cf7d7ab958
47 changed files with 3962 additions and 250 deletions
+1 -1
View File
@@ -2,7 +2,7 @@
std_msgs/Header header
# compressed global descriptor
# use rtabmap::util3d::uncompressData() from "rtabmap/core/util3d.h"
# use rtabmap::uncompressData() from "rtabmap/core/Compression.h"
int32 type
uint8[] info
uint8[] data
+1 -1
View File
@@ -17,7 +17,7 @@ int32[] word_id_values
KeyPoint[] word_kpts
Point3f[] word_pts
# compressed descriptors
# use rtabmap::util3d::uncompressData() from "rtabmap/core/util3d.h"
# use rtabmap::uncompressData() from "rtabmap/core/Compression.h"
uint8[] word_descriptors
SensorData data
+13 -1
View File
@@ -12,6 +12,18 @@ sensor_msgs/Image rgb
sensor_msgs/Image depth
# Compressed
# rgb_compressed: JPEG or PNG in compressed_image_transport's format (e.g.,
# "bgr8; jpeg compressed bgr8"), readable by the "compressed" image_transport plugin.
# depth_compressed: right image (stereo) in compressed_image_transport's format, or depth
# image in compressed_depth_image_transport's format (e.g., "16UC1; compressedDepth png",
# "32FC1; compressedDepth rvl"), readable by the "compressedDepth" image_transport
# plugin (RVL since Jazzy).
# Exception: depth compressed in rtabmap's own format (rtabmap_ros < 0.24, or
# depth_compression_format "legacy[:<format>]", e.g., to keep 32FC1 depth lossless), with format
# "png", "rvl" or "png:<max>:<quantization>" / "rvl:<max>:<quantization>", which
# image_transport plugins cannot read. rtabmap_conversions::uncompressDepthImage()
# decodes every format, and rgbd_split republishes them on a compressedDepth
# image_transport topic.
sensor_msgs/CompressedImage rgb_compressed
sensor_msgs/CompressedImage depth_compressed
@@ -19,7 +31,7 @@ sensor_msgs/CompressedImage depth_compressed
KeyPoint[] key_points
Point3f[] points
# compressed descriptors
# use rtabmap::util3d::uncompressData() from "rtabmap/core/util3d.h"
# use rtabmap::uncompressData() from "rtabmap/core/Compression.h"
uint8[] descriptors
GlobalDescriptor global_descriptor
+9 -5
View File
@@ -9,7 +9,11 @@ sensor_msgs/Image left
sensor_msgs/Image right
# Compressed images
# use rtabmap::util3d::uncompressImage() from "rtabmap/core/util3d.h"
# use rtabmap::uncompressImage() from "rtabmap/core/Compression.h"
# right_compressed holds a depth image in rtabmap's format (see Mem/DepthCompressionFormat),
# not readable by image_transport plugins: see
# rtabmap_conversions::rtabmapToCompressedDepthTransport() to convert it without
# decompression to compressed_depth_image_transport's format.
uint8[] left_compressed
uint8[] right_compressed
@@ -23,7 +27,7 @@ geometry_msgs/Transform[] local_transform
# raw 2d or 3D laser scan
sensor_msgs/PointCloud2 laser_scan
# compressed 2D or 3D laser scan
# use rtabmap::util3d::uncompressData() from "rtabmap/core/util3d.h"
# use rtabmap::uncompressData() from "rtabmap/core/Compression.h"
uint8[] laser_scan_compressed
int32 laser_scan_max_pts
float32 laser_scan_max_range
@@ -32,11 +36,11 @@ int32 laser_scan_format
geometry_msgs/Transform laser_scan_local_transform
# compressed user data
# use rtabmap::util3d::uncompressData() from "rtabmap/core/util3d.h"
# use rtabmap::uncompressData() from "rtabmap/core/Compression.h"
uint8[] user_data
# compressed occupancy grid
# use rtabmap::util3d::uncompressData() from "rtabmap/core/util3d.h"
# use rtabmap::uncompressData() from "rtabmap/core/Compression.h"
uint8[] grid_ground
uint8[] grid_obstacles
uint8[] grid_empty_cells
@@ -47,7 +51,7 @@ Point3f grid_view_point
KeyPoint[] key_points
Point3f[] points
# compressed descriptors
# use rtabmap::util3d::uncompressData() from "rtabmap/core/util3d.h"
# use rtabmap::uncompressData() from "rtabmap/core/Compression.h"
uint8[] descriptors
GlobalDescriptor[] global_descriptors