ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
1 | initial version |
Rtabmap node updates the map only when it receives all its input topics. If one of the topics is not published, rtabmap will "idle" (the TF /map -> /odom will still be published though). If the input topics are republished again (under same topic name), rtabmap should resume mapping. Same thing for rtabmap's odometry nodes.
In the case we setup rtabmap to use both camera and lidar, if one fails, SLAM is stopped. With how rtabmap is built, we cannot easily switch to single sensor mapping if one fails. rtabmap uses ApproximateTime or ExactTime synchronizers from ROS API, so if we would want to change a preconfigured synchronizer with camera and lidar to only camera, we would have to delete the synchronizer, set subscribe_scan
to false, then re-call the function which setups the callbacks. We may also want changing other parameters that depended on both sensors. So overall, we cannot do that with rtabmap in its state right now without changing the code (it is not a simple flag to turn off).
We cannot change subscribe_depth
and subscribe_scan
parameters at runtime, only those listed by $ rtabmap --params
(for which we can use rtabmapviz for convenience).
Another approach (not quite efficient) when a sensor fails would be to kill rtabmap node, then restart it with a different configuration using the same saved database. The downside is that we would force rtabmap to create a new map (even if odometry is still consistent), which may not be connected to first one (if no loop closures are found at restart).
cheers,
Mathieu