SteveMacenski / slam_toolbox

Slam Toolbox for lifelong mapping and localization in potentially massive maps with ROS
GNU Lesser General Public License v2.1
1.5k stars 497 forks source link

Map is overlapping and doesn't make loop_closure #692

Closed Zarqu0n closed 2 months ago

Zarqu0n commented 2 months ago

Required Info:

Steps to reproduce issue

Doesn't make loop closure in big loops in default async node parameters.

Expected behavior

Actual behavior

Screenshot from 2024-04-26 09-49-03 Screenshot from 2024-04-26 10-00-39

We mapped it on the map above and using the async mode with default parameters. It did not connect the pose graph nodes between the point where we started mapping and the point where we finished mapping. It made a small modification to the map but did not complete the loop closure. It did not connect the pose graph nodes between the point where we started mapping and the point where we finished mapping. It made a small modification to the map but did not complete the loop closure. For examples.

Screenshot from 2024-04-26 09-49-18

Screenshot from 2024-04-26 09-49-26

Screenshot from 2024-04-26 09-49-32

Can you help me what to do in this case, which parameters I can tune or any other solution.

Additional information

SteveMacenski commented 2 months ago

Ask on ROS Answers, but this looks correct to me. Please let us know why you think the start and end nodes you point out should somehow be connected (and the session know that that's the "end" for that to be semantically meaningful)

Zarqu0n commented 2 months ago

We had manually pushed the robot around to map and explore the area. We started the robot from the same point and brought it back to that point, expecting it to perform a loop closure. However, it didn’t happen. I know the map is quite large and the small errors in our odometry accumulate over time and impact the results. Unfortunately, there isn’t a smaller loop available where we could expect to return to the starting point. I am looking into similar issues that have been opened and trying to gather information from them. Meanwhile, I am tuning parameters and researching what else I can do to test. I will continue to share my findings and methods here. I also tried a manual loop closure, but either I didn’t succeed or the integration isn’t complete yet.