1
$\begingroup$

When working with a FastSlam2.0 algorithm, ICP Scan Matching is supposed to give more accurate measurements than odometry.

The problem is, that given some noisy measurements from the laser scanner, when the robot is stationary, or doing relative small movements, the dispersion from the ICP scan matching is greater than the dispersion from the odometry, especially if working with grid maps instead of landmarks.

In a set of tests I have performed with a simulated laser scanner and a grid map, this is true even for not noisy data. A relatively small movement (0.1m) changes all the points in the scan cloud, and the ICP algorithm can diverge from the expected result. The odometry behaves better in this case.

However, when working with relative big movements from step to step (1m), scan matching will perform better than odometry.

The question is, what is the typical time interval o distance interval to perform the FastSlam2.0 algorithm? If that interval is small, or the robot makes small distance increments, how is it possible to avoid this problem?

Edit

To illustrate better the problem, here are 2 simulations.

Cyan dots represent the odometry different hypotheses without scan matching. Red dots represent the odometry different hypotheses with scan matching. Green dot represents the odometry readings. Black line (straight) represents the robots real movement (this is the particle that generate the simulated scans for the scan matching).

First one with simulated speed = 1 m/s and simulated time step = 0.5 s.

enter image description here

Second one, simulated speed = 1 m/s and simulated time step = 0.1 s.

enter image description here

Performance of the scan matching with time step = 0.5 is really good, whereas the performance of the scan matching with time step = 0.1 behaves way worse that just odometry.

If there is no way to solve this, then, what are the typical time steps for a real FastSlam 2.0 Application?

In the end, the best approach I have found is to apply scan matching if the displacement is high enough. If not, apply only odometry.

$\endgroup$
2
$\begingroup$

This is the typical calibration you need to do depending on the sensors you have, there is no optimal solution. And this is why you have to know your sensors specs. Actually, that precisely what gmapping (http://wiki.ros.org/gmapping) does.

So, the answer there is no answer. Each situation will force to recalibrate based on your sensors, the type of environment you have, your type of movement, etc.

$\endgroup$
  • $\begingroup$ In the end, the best option I found is to apply scan matching if I estimate the robot has move above a certain threshold. If not, apply only motion resampling. $\endgroup$ – Guille Sanchez Mar 1 at 12:09

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.