introlab / rtabmap_ros

RTAB-Map's ROS package.
http://wiki.ros.org/rtabmap_ros
BSD 3-Clause "New" or "Revised" License
962 stars 557 forks source link

Not able to use compressed image for rgbd_sync #757

Open MJA0111 opened 2 years ago

MJA0111 commented 2 years ago

Hello,

My problem is similar to this issue, but with "rgbd_sync" nodelet. I am using camera realsense l515 and this roslaunch. I am going to record a bag file including the topics below: /camera/color/image_raw/compressed /camera/color/camera_info /camera/aligned_depth_to_color/image_raw/compressedDepth /tf_static

The problem is that since recording a bag file for long time, I need to record compressed images otherwise the size of bag file would be too high, which decreases the speed of pc. However, rgbd_sync only accepts raw_image messages. I tried the solution that was given in the issue, but it seems it does not work, as it can be check also in the rgbd_sync.cpp.

I think that I need to change something in the rgbd_sync.cpp, but I am not sure if I change the subscribing message type would be the right solution. I would appreciate your further help. Looking forward to your reply.

kind regards, Javad

matlabbe commented 2 years ago

rgbd_sync supports compressed topics. It uses image_transport interface.

rosrun rtabmap_ros rgbd_sync _rgb/image_transport:=compressed _depth/image_transport:=compressedDepth ...

[ INFO] [1652209973.384429160]: Initializing nodelet with 12 worker threads.
[ INFO] [1652209974.639589865]: /rgbd_sync: approx_sync = true
[ INFO] [1652209974.640378747]: /rgbd_sync: approx_sync_max_interval = 0.000000
[ INFO] [1652209974.640404644]: /rgbd_sync: queue_size  = 10
[ INFO] [1652209974.640426087]: /rgbd_sync: depth_scale = 1.000000
[ INFO] [1652209974.640446330]: /rgbd_sync: decimation = 1
[ INFO] [1652209974.640466613]: /rgbd_sync: compressed_rate = 0.000000
[ INFO] [1652209974.655928931]: 
/rgbd_sync subscribed to (approx sync):
   /rgb/image/compressed \
   /depth/image/compressedDepth \
   /rgb/camera_info

Another solution is to launch image_transport republish nodes when playing the bag to decompress images before sending them to rgbd_sync.