koide3 / fast_gicp

A collection of GICP-based fast point cloud registration algorithms
BSD 3-Clause "New" or "Revised" License
1.28k stars 319 forks source link

Registration score gradually diverges. #135

Open JACKLiuDay opened 1 year ago

JACKLiuDay commented 1 year ago

Hi, thank you for your great work about FASTVGICP. I use this projecto on my robot with my campus pcd map. Then the velodyne lidar point cloud can be used to registration with the map. So I can get the localization information with FASTVGICP. But I found something strange. At first, the registration score is good with 0.02. However, as time gradually increases, the registration score will gradually rise to 1.0. When I restart the program, the score returns to normal. Does this FASTVGICP algorithm continuously accumulate errors during its runtime? Cloud you give some help.

JACKLiuDay commented 1 year ago

image image Hi, I tried to use FASTVGICP to align one velodyne lidar pointcloud to the map. But the score grows with the running time. It's so wired. @kkoide3 @koide3

koide3 commented 1 year ago

I guess the score depends on the coverage of the map, and thus it should change depending on the place. At least, the registration algorithm itself is independent run-by-run, and it would not show time depending error accumulation.

JACKLiuDay commented 1 year ago

I guess the score depends on the coverage of the map, and thus it should change depending on the place. At least, the registration algorithm itself is independent run-by-run, and it would not show time depending error accumulation.

Hi, thank you for your reply. I just used the same one pcd which represents the same location to registration map for ten minutes. The registration method is used by reg.(pcd, initial_matrix); So the result transformation matrix is storaged in the initial_matrix for next time registration. It seems that the error in each registration is being accumulated into the next matrix each time. In theory, when registering the same frame of point cloud data with the map, the registration matrix obtained each time should be the same. However, with the passage of time, the solved matrix is gradually diverging, and the score is also gradually increasing. If you don't use an initial transformation matrix for registration, the registration process will take a very long time, making it impossible to achieve real-time localization.