Monte Carlo Localization

Brie Finger
Jessica Fisher

Monte Carlo Code


All screenshots were taken with NOISE = 50.0 and NOISE_MODEL = 100.0


We encountered several difficulties while doing this assignment. The largest of these was that we neglected to cast to double when calculating fractional weights. For example, "double x = 1 / (int)z" will return 0, despite the fact that x was specified as a double. Another problem we encountered was with maxed-out sonar readings. When the readings were too large on one side, the particles tended to stay at the location at which the sonar had maxed out. This is because the clearance will return the true clearance (which can be greater than the max sonar value) though the sensors can only return readings up to 255. When the clearance is greater than the max sonar, the probability that it is the same as the sonar reading goes down.

When testing with the maze environment, we had one instance where the algorithm mistakenly thought we were somewhere other than the actual location. Once the particles have moved elsewhere, they do not come back to the actual location unless noise is added.

If the NOISE_MODEL is too low, then all of the particles will simply disappear. If NOISE is low, the algorithm still works. If NOISE_MODEL is very high, the cloud of particles is much more diffuse. If NOISE is high, the cloud has a tendency to be centered on the wrong location because the noisified sonar reading is inaccurate.

MCL does not work if the NOISE_MODEL noise is under about 9 or 10. Above that, it is not very efficient at 10, but particles can still exist. If the noise gets too high, the cloud will be diffuse and will not provide much information. NOISE can be as low as 0 without the MCL breaking.