# What is the state-of-the-art approach to detect moving objects from mobile robot with 2D Lidar only?

Having a setup of a mobile robot with a 360° 2D lidar (1 plane). What is the current easiest approach to detect moving object with a high reliability from a moving robot? To make it simple, we consider an indoor application.

My current considerations:

1. Creating a SLAM occupancy map (e.g. Hector SLAM)
2. conducting a projection of the measurement points to the created 2D occupancy map from t-2. Points which are projected to the free space can be clustered as moving objects.

The issues of the above approach are the chicken-egg-problem of the new measurement points and reliability of the detection.

I've read the DATMO approach (detection and tracking moving object). However, the papers about DATMO are too complicated and too abstract for me.

Is there any reliable approach without creating a global map through SLAM? Comparing points from t and t-1 directly without estimating the robot movement/odometry is not a possible task.

• Welcome to Robotics ywiyogo. Can you provide a little more detail? I've done something similar, but was able to constrain the problem to make it easier. For example, the robot was constrained to a certain region of the space that I could map before hand. And I was only interested in tracking human-sized moving objects. Are there any more details you can provide? Please edit your question to elaborate.
– Ben
Commented Oct 1, 2020 at 12:40
• Hi @Ben thanks for your comment. What do you mean with "map before hand"?. Does it means that the map is given or we can generate a map a few seconds after the robot deployment? I would say, the map is not given and the robot can wait a few seconds to create a SLAM mapping. At the moment, I'm interested to detect a movement which is detected by the 2D point clouds regardless the object type, since I can adjust the height of the sensor. The tracking is nice to have. But just in DATMO, normally the tracking provides us more reliable detection. Commented Oct 2, 2020 at 7:41

Obviously this problem can get very complicated when you just consider a 2D lidar. So I'm gonna try to keep my answer simple. You will want to estimate the position of the robot (odometry) as a minimum in order to project everything into a global space, rather than the local vehicle space. You can technically do it locally, but I personally don't think it is clean and you will run into more issues.

If you wanted to just track a moving object, you can use something simple like k-means clustering to estimate the center of the moving objects based on N scan point. Anything that doesn't move in the global space between t and t-1 (within a reasonable margin of error) could be filtered out. Anything that does move can be estimated, flagged, and tracked with something like a kalman filter to cover potential misdetections or if the obstacle stops moving. Obviously this isn't a flawless idea, I'm just trying to give something to go off of based on your sensing capabilities.

• thanks for your answer. Yes, you are right the first issue is to estimate the robot pose or odometry. This issue can be solve with the scan matching algorithm which is applied in HectorSLAM. At the moment, I don't need a tracking, just a detection. Commented Oct 13, 2020 at 8:43