Global relocalization with ICP SLAM?

classic Classic list List threaded Threaded
12 messages Options
Reply | Threaded
Open this post in threaded view
|

Global relocalization with ICP SLAM?

dinossht
Is it possible to create a map using lidar and icp odometry+slam, then reload the same database, but starting at a different location in the map?
Reply | Threaded
Open this post in threaded view
|

Re: Global relocalization with ICP SLAM?

dinossht
here is my launch file. I am using Livox mid360 lidar with insta360 x3 for coloring (and hopefully loop closure)
Reply | Threaded
Open this post in threaded view
|

Re: Global relocalization with ICP SLAM?

dinossht
Reply | Threaded
Open this post in threaded view
|

Re: Global relocalization with ICP SLAM?

matlabbe
Administrator
In reply to this post by dinossht
Hi,

With only LiDAR, we cannot re-localize automatically, we have to send a initialpose to corresponding topic of rtabmap node.

If you have a camera, it is possible to do global re-localization. If it is a monocular camera, you would need to provide a rough depth image to make it work. Examples:

http://official-rtab-map-forum.206.s1.nabble.com/Multi-monocular-cameras-tp9383p9387.html

http://official-rtab-map-forum.206.s1.nabble.com/RTAB-setup-with-a-3D-LiDAR-td1080.html#a1119

cheers,
Mathieu
Reply | Threaded
Open this post in threaded view
|

Re: Global relocalization with ICP SLAM?

dinossht
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?
Reply | Threaded
Open this post in threaded view
|

Re: Global relocalization with ICP SLAM?

dinossht
When I try in this configuration, rtabmap does not detect loop closure
Reply | Threaded
Open this post in threaded view
|

Re: Global relocalization with ICP SLAM?

dinossht
Reply | Threaded
Open this post in threaded view
|

Re: Global relocalization with ICP SLAM?

dinossht
This post was updated on .
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.
Reply | Threaded
Open this post in threaded view
|

Re: Global relocalization with ICP SLAM?

matlabbe
Administrator
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).
Reply | Threaded
Open this post in threaded view
|

Re: Global relocalization with ICP SLAM?

dinossht
Sorry for my confusing working here, I notice that the camera does not perform loop closure in mapping mode. For some reason, I need to trigger new map, and when I do in the beginning, the first loop closure is rejected. Then I do this again, which leads to loop hypothesis being accepted, and from there, the camera is able to perform local loop detection etc. If I skip the trigger new map service calls, the camera does nothing during online SLAM. Is this correct and expected behaviour?
Reply | Threaded
Open this post in threaded view
|

Re: Global relocalization with ICP SLAM?

matlabbe
Administrator

It should detect loop closures in mapping mode. Look for warnings/errors to know why a loop closure would be rejected. If there is no warning, what kind of trajectory are you doing? The STM needs to fill up before actual loop closures are detected, but that should only take 10 sec by default while you are walking/robot moving.
Reply | Threaded
Open this post in threaded view
|

Re: Global relocalization with ICP SLAM?

dinossht
Aha that makes sense, thank you. I expected loop closure to work right away, but was not aware of STM system. So with futher experimentation, it works, I just need to let it accumulate enough KFs.