Monte Carlo Localization
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