Localization and SLAM#

Having a good estimate of position is necessary for most tasks in autonomous mobile robotics. A self driving car, a delivery drone, or even a Roomba is not very useful without knowledge of its own location. The task of determining the location of a robot is known as localization. In this project, we will implement two algorithms for localization on the Duckiedrone: Monte Carlo localization and FastSLAM.

Note that the Bayes filter setup, with observation model and measurement model is exactly the same for the Kalman filter and the localization/SLAM particle filter. The particle filter is another way to handle non-Gaussian density functions. In many ways it is simpler to implement, because each particle is transitioned/updated assuming its state values are ground truth, and covariance is maintained over the entire set of particles rather than updating a covariance matrix. However it requires more computation as performance/accuracy scales with the number of particles. Notably particle filters are capable of representing multimodal distributions, making them a good fit for localization, where you may have multiple peaks (for example as the robot goes down a corridor and sees identical observations), that then resolve as it reaches a disambiguation location.

These algorithms cover two important cases: one in which the robot has a map of its environment available beforehand, and a second in which it does not. In this second case, the robot must use its sensors to simultaneously develop a map of its surroundings and localize itself relative to that map. Not surprisingly, this is referred to as the simultaneous localization and mapping problem, hereafter referred to as SLAM.

Please use this link to generate your Github classroom repository and pull the stencil code. Use the Github repo created to handin your assignment and backup any changes you make.