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.

  • $\begingroup$ 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. $\endgroup$ – Ben Oct 1 '20 at 12:40
  • $\begingroup$ 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. $\endgroup$ – ywiyogo Oct 2 '20 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.

  • $\begingroup$ 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. $\endgroup$ – ywiyogo Oct 13 '20 at 8:43

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.