Global loop closure with lidar

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

Global loop closure with lidar

dinossht
Does RTAB-Map support loading a previously mapped database file and using LiDAR-only loop closure (e.g., by setting Reg/Strategy to LiDAR-based registration) to relocalize within the existing map and continue mapping from that point? This would be similar to using camera-based bag-of-words for relocalization in the old map to resume mapping.

Reply | Threaded
Open this post in threaded view
|

Re: Global loop closure with lidar

matlabbe
Administrator
There is no built-in way to do it. You would need an approach like https://github.com/MarvinStuede/cmr_lidarloop or https://github.com/gisbi-kim/scancontext_tro
Reply | Threaded
Open this post in threaded view
|

Re: Global loop closure with lidar

dinossht
Ah allright, so what does setting reg/strategy=1 achieve?
Reply | Threaded
Open this post in threaded view
|

Re: Global loop closure with lidar

matlabbe
Administrator
Reg/Strategy=1 enables ICP registration between nodes of a visual loop closure. If nodes have laser scans, then we apply ICP registration to refine the loop closure transform. That parameter enables that part from section 3.4 of this paper:
When a laser scan or a point cloud is available, link’s transformation is refined using the same ICP Registration approach than with lidar odometry (described in Section 3.1.2).
Reply | Threaded
Open this post in threaded view
|

Re: Global loop closure with lidar

dinossht
Allright, so the scan data is for refinement. Does this refinement take place also when odometry is lost and the system needs loop closure to continue mapping?
Reply | Threaded
Open this post in threaded view
|

Re: Global loop closure with lidar

matlabbe
Administrator
ICP refinement will be used all the time if you enable it.

For odometry lost, it will recover only if you move back where it got lost, or if you use Odom/ResetCountdown != 0 to just reset odom after a couple of iterations.

To continue mapping, the system doesn't need a loop closure, just a valid odometry. An exception is on start, if Rtabmap/StartNewMapOnLoopClosure=true, a loop closure with a previous session in the database would be required to start a new mapping session (e.g., this is also called the "Append" mode in the mobile app).
Reply | Threaded
Open this post in threaded view
|

Re: Global loop closure with lidar

dinossht
How do you enable ICP refinement? Is that the same as node link refinement?

"To continue mapping, the system doesn't need a loop closure, just a valid odometry." But how do you then merge the old map with the new map?
Reply | Threaded
Open this post in threaded view
|

Re: Global loop closure with lidar

matlabbe
Administrator
How do you enable ICP refinement? Is that the same as node link refinement?
If "Reg/Strategy: 1", it is enabled for all loop closure and proximity detections. To further enable it for odometry constraints, you have to set "RGBD/NeighborLinkRefining: true".


"To continue mapping, the system doesn't need a loop closure, just a valid odometry." But how do you then merge the old map with the new map?
I was referring that "refinement" is not mandatory for mapping, as long as odometry is valid, it will accumulate new nodes even if refinement failed. To merge with old maps, a visual loop closure is indeed required.
Reply | Threaded
Open this post in threaded view
|

Re: Global loop closure with lidar

dinossht
Aha, I understand. Thank you!