# Which scan matching algorithm can be used to extract the moving objects (in 2D lidar scanner)?

There are different types of scan matching algorithms to match consecutive 2D lidar scans, see https://youtu.be/nvFcN2-NqRc?t=421 (ICP, correlative matching, RANSAC). Most of the algorithms return the estimated robot pose as a result. From the intuition, if we can match the data points, we shall extract the points that don't match. These outliers after the scan matching can be the dynamic objects which can be filtered again.

Update: My concrete question, during a robot motion, how can I extract the unmatched measurement points from two consecutive lidar scan, after a scan-matching pre-processing? This question is of course depends on the utilized scan-matching algorithm.

• Welcome to Robotics ywiyogo, but I'm afraid that Unbounded Design Questions are off-topic because there are many ways to solve any given design problem. We prefer practical, answerable questions based on actual problems that you face, so questions which ask for a list of approaches or a subjective recommendation on a method (for how to build something, how to accomplish something, what something is capable of, etc.) are off-topic. Please take a look at How to Ask & tour for more information on how stack exchange works. Oct 13 '20 at 17:39
• thanks @Chunk for the comment. I'll update my question later to be more precise and more practicable. But I still think that the question is bounded in the scan-matching scope. There are not many ways to solve this problem, from my perspective. Since most of the scan-matching algorithm, from what I've read, don't suit to the dynamic point extraction. Oct 14 '20 at 10:30
• Looking at your updated question, I'm not sure what the answer is other than the obvious. You ask, How can I extract the unmatched [...] points [...] after a scan-matching pre-processing? - Wouldn't the unmatched points be everything that's left after you've done the matching? It's not clear (to me at least) what you're asking so it's hard to think of how to help <3 Oct 14 '20 at 12:05
• Exactly that is what I would like to know which algorithm of the scan matching do you know that obviously return the unmatched points? Please look this example from Matlab (mathworks.com/help/nav/ug/…) the unmatched points would be the points with the low score. However, I can't see the code and I don't know which algorithm. Most of the algorithms in SLAM, they directly return the new estimated robot pose. For instance, ICP returns rotations matrix and translation vector as in this slide cs.gmu.edu/~kosecka/cs685/cs685-icp.pdf. Oct 15 '20 at 14:09

## 1 Answer

I think I understand the problem more now, after your comment about ICP.

Iterative Closest Point (ICP) doesn't exactly match a point or some subset of points, or even features. ICP finds the pose that minimizes the total error.

What you would need to do is to define some threshold where you would consider points to be matched or unmatched. Then, you have a scan1, a scan2, and your scan matching algorithm returns a pose that minimizes error.

Apply your pose to scan 2, such that your scan1 and scan2 sets are "aligned," then run a nearest-neighbor search between the scan sets. Neighbor distances falling below the threshold are "matched," so you remove those, and what's left is then the data you're looking for.

I think this question is a bit more on-topic now because it seems to get at the heart of what ICP is doing, which again is to minimize RMS error across the entire dataset.