If I use a D455 rgbd camera, which then will provide depth as well, it is necessary that the lidar pointcloud and depth camera have overlapping FOV in order for loop closure to work?
not required
I figured that localization works, when I call the service trigger new map twice. First time, the loop hypothesis rejected, and the second time, it works. Do you why?
Unlike egne odometry, where localization works by default, using icp odometry with reg/strategy set to 2 for slam, the registration does not work at all. I need to call the trigger new map service two times in the beginning, then the system is able to do loop closure.
In the launch file you shared, you set --delete_db_on_start, so it will delete the map on start. To trigger a new map, calling trigger_new_map service once should be enough. Not sure calling trigger_new_map service is doing what you want to do. Triggering a new map will create a new session in the database. Here it seems you just want to start in localization mode (Mem/IncrementalMemory=false) and localize on a pre-built map (remove --delete_db_on_start).