CCNYRoboticsLab/scan_tools

How to force scan matcher to match all points

Opened this issue · 1 comments

In the case shown in the image below, I couldn't find a way to make the scan matcher give me a correct relative pose between the two scans (Reference scan shown in red here, lidar scan from the robot shown in yellow). What I think happens is that there are so many coplanar points corresponding to the walls on the left and right of the robot that they lead icp to ignore the few points portruding (points that are very relevant to estimating the x offset). The relative offset in y direction is always precise, but in x direction, as long as both scans have an offset of 10cm or more, the scan matcher fails. I tried tweaking some parameters to no avail. Any hints?

What I am trying to achieve is using the laser scan matcher class in order to estimate the robot pose relative to a reference pose based on the lidar scan observed on that reference pose. Vanilla ICP might be enough for this but I couldn't find a better implementation than laser_scan_matcher that is already integrated in the ROS framework.

forceicp

First, I am not involved with laser scan matcher, but I saw you post and have also had this problem. I can say it is not unique to laser scan matcher. It is a general problem with icp implementations. Basically, icp is a gradient decent process. Once shifting the point cloud a small increment does not result in improvements in the quality of the match, it declares the match as best fit, and finishes. The only real solution within ICP is a closer initial guess.

Do you have options to provide/improve the input for an initial guess? Can you perform the icp matches more often, i.e., before it has shifted so much?