Remote mapping, rtabmap grid_map empty/dosen't update

asked 2021-05-19 10:45:13 -0600

cbj34 gravatar image

updated 2021-05-23 18:37:18 -0600

matlabbe gravatar image

Dear reader,

I'm trying to implement a navigation with a zed2 and the following structure:

rtabmap publishing map-->odom

and

zed_node publishing odom-base-->link

Im starting the camera on the rover and use one of two options:

  1. Send a downsampled point cloud to the remote PC and republish it via an relay. From there I subscribe the republished topics with rtabmap and rtabmap obstacle detection.

    This would be my preferred way, since it should take less bandwith than version 2, but as soon as rviz subscribes to the /grid_map topic I get the following error:

    [ INFO] [1621430937.994038071]:
     /rtabmap subscribed to (approx sync):
       /zed2/zed_node/rgb/image_rect_color/relay,
       /zed2/zed_node/rgb/camera_info,
       /voxel_grid/output/relay
    [ INFO] [1621430938.906883462]: rtabmap (1): Rate=1.00s, Limit=0.000s, RTAB-Map=0.0193s, Maps update=0.0002s pub=0.0001s (local map=1, WM=1)
    [ INFO] [1621430939.734185958]: rtabmap (2): Rate=1.00s, Limit=0.000s, RTAB-Map=0.0495s, Maps update=0.0001s  pub=0.0000s (local map=1, WM=1)
    [ INFO] [1621430940.609188923]: rtabmap (3): Rate=1.00s, Limit=0.000s, RTAB-Map=0.0487s, Maps update=0.0000s pub=0.0000s (local map=1, WM=1)
    [ WARN] (2021-05-19 15:29:01.707) MapsManager.cpp:584::updateMapCaches() Occupancy grid for location 1 should be added to global map (e..g, a ROS node is subscribed to any occupancy grid output) but it cannot be found in memory. For convenience, the occupancy grid is regenerated. Make sure parameter "RGBD/CreateOccupancyGrid" is true to avoid this warning for the next locations added to map. For older locations already in database without an occupancy grid map, you can use the "rtabmap-databaseViewer" to regenerate the missing occupancy grid maps and save them back in the database for next sessions. This warning is only shown once.
    [ WARN] (2021-05-19 15:29:01.710) SensorData.cpp:696::uncompressDataConst() Requested depth/right image data, but the sensor data (1) doesn't have depth/right image.
    [ WARN] [1621430941.710569823]: Grid map is empty! (local maps=1)
    [ INFO] [1621430941.928216864]: rtabmap (4): Rate=1.00s, Limit=0.000s, RTAB-Map=0.0576s, Maps update=0.0072s            pub=0.2176s (local map=1, WM=1)
    [ WARN] [1621430942.748583952]: Grid map is empty! (local maps=1)
    [ INFO] [1621430942.920003316]: rtabmap (5): Rate=1.00s, Limit=0.000s, RTAB-Map=0.0511s, Maps update=0.0041s pub=0.1713s (local map=1, WM=1)
    

    The resulting /grid_map in the Database is empty.

  2. Publishing the left and right image topics via a throttle, like descirbed in http://wiki.ros.org/rtabmap_ros/Tutor... .

    This leads to a one time update/snapshot grid_map which wont get updated any more.

Additional Information:

Some times the tf-tree in rviz is broken right between map and odom (the parts that are created on two diffrent maschines), but the rqt_tf_tree isn't (pictures here: https://drive.google.com/drive/folder...). With or without the error the two versions above always behave the same way. I haven't figured out how to reproduce the error, yet. image description image description

I already ... (more)

edit retag flag offensive close merge delete

Comments

What is the type of /voxel_grid/output/relay? PointCloud2? If so, you have to set Grid/FromDepth=false for rtabmap node to create occupancy grid from PointCloud2. Can you show /voxel_grid/output/relay in rviz? For tf problems between computers, make sure they are synchronized (ntpdate) and ROS_IP is set on both computers (e.g., if Computer A is 192.168.0.2, then its ROS_IP=192.168.0.2).

matlabbe gravatar image matlabbe  ( 2021-05-23 18:43:14 -0600 )edit