I have a very large indoor area with multiple large rooms that are dynamic in the sense that objects may change position and I want to create its map periodically in order to localize multiple robots. Probably I’m describing the most complex scenario possible. LiDAR measurements and odometry are available and multiple robots can be used for mapping. My strategy to capture the aforementioned dynamicity is the use of multiple robots that will create separate maps frequently and then merge them.
Solution and "hiccup:"
I would like to use slam_toolbox for ROS1 Noetic for mapping since it seems to be more robust than its "competitors". Once a SLAM session has been finished, slam_toolbox serializes and saves poses and graph data into a file.
This great toolbox includes offline map merging functionality that does not fulfill my needs. More specifically, it creates an occupancy grid of all the maps combined, but it does not update appropriately the Karto::Mapper object i.e. the internal graph used to perform localization. According to the code and the README file, it seems that the merged occupancy grid can be used to generate an ordinary image (pgm) map that can be then used for localization e.g. with AMCL.
Based on your experience with slam_toolbox:
- Do you think that the localization performance of AMCL is comparable to the performance of slam_toolbox (given a relatively accurate initial pose) when the map is created by slam_toolbox?
- In some posts it is argued that slam_toolbox can be used for localization while being in mapping mode. Does this perform well?
- slam_toolbox argues that it can perform lifelong mapping and prioritize newer nodes, but it is still experimental and has many bugs, judging from related issues. Instead of that, mapping and restarting the whole localization process is obviously the dirtiest solution, but I can guess it performs well. Does this make sense?
Based on your answers and your experience I am thinking of different solutions and possible developments.
Post score: 2