Monte Carlo Localisation
In MCL, a cloud of weighted particles represents the uncertain position of a robot. We can think of this as a:
- Bayesian probablistic filter.
- Genetic Algorithm (survival of the fittest).
1. Particles
A particle is a point estimate
2. Localisation Algorithm
- Continuous Localisation is a tracking problem - given a good estimate of where the robot was at the last time-step, and some new measurements, estimate where it is now. Here, the initial position is known, so we start with
and . - Global Localisation (kidnapped robot problem): the environment is known, but the robot's position ins completely uncertain. Here the initial particles are sampled randomly from all the positions, so
and .
If we need to, we can make a point estimate of the robot's position from the particles, e.g. the weighted mean:
- Motion is predicted based on odometry.
- Measurements are updated based on outward looking sensors.
- Normalization.
- Resampling.
2.1 Measurements Update
A measuerement update consists of applying Bayes Rule
A likelihood function
2.1.1 Sonar Update

If the robot is at
Then the world coordinates at which the forward vector from the robot would meet the wall a re:
2.1.2 Sonar Update Likelihood
The likelihood of a sonar update depends on the difference
Where
A robust likelihood function takes into account that real sensors sometimes report garbage values values which are not close to the ground truth:
The effect of this is that the filter is less aggressive in killing off particles which are far from aggreing with measurements.
2.1.3 Sonar Angle Correction
Possibly relevant for real sensors may be the angle between sonar direction and the normal to the wall. If

2.2 Normalization
The weights of all particles are scaled again so that they add to
2.3 Resampling
Resampling generates a new set of
Done by generating the cumulative probability distribution, generating a uniformly distributed random number between