MCL -> SLAM x: pose m: map u: robot motions z: observations The SLAM Problem Given: -Robot’s controls (u) -Observations of features (z) Produce: -Map of features (m) -Path of the robot (x) Indoors Undersea Space Underground Can’t map without a pose! Can’t localize without a map! Given: Given: -Robot’s controls (u) -Observations of features (z) -Map of features (m) -Robot’s controls (u) -Observations of features (z) Produce: -Map of features (m) -Path of the robot (x) -Path of the robot (x) Produce: So, what’s a particle? Particle x, y, #1 Landmark 1 Landmark 2 … Landmark M Particle x, y, #2 Landmark 1 Landmark 2 … Landmark M … Particle x, y, N Landmark 1 Landmark 2 … Landmark8 M So how do we represent a landmark? MCL Landmark’s location: known Landmark: SLAM Landmark’s location: estimated Landmark: covariance matrix So how do we represent a landmark? MCL Landmark’s location: known Landmark: SLAM Landmark’s location: estimated Landmark: covariance matrix How do we run this particle filter? =robot_motion obs=robot_observations foreach p in Particles p.weight=1 p.move( ) // Motion Model! foreach in obs if never seen before p.map.add_landmark( ) // Sensor Model! else p.map.update_landmark( ) // Sensor Model! p.weight=p.weight * p.update_weight( ) // Independence! resample() FastSLAM – Action Update Landmark #1 Filter Particle #1 Landmark #2 Filter Particle #2 Particle #3 13 FastSLAM – Sensor Update Landmark #1 Filter Particle #1 Landmark #2 Filter Particle #2 Particle #3 14 FastSLAM – Sensor Update Particle #1 Weight = 0.8 Particle #2 Weight = 0.4 Particle #3 Weight = 0.1 15 Discussion Questions • What happens to one landmark’s estimated location if another landmark is observed wrongly? • What will happen if each landmark is seen exactly once in a trajectory? • What happens if the robot should see a landmark, and doesn’t? (negative information) • What happens if the robot misidentifies a landmark? Discussion Questions • What if your robot gets re-kidnapped? • What will happen if your robot never moves? • What happens if the robot should see a landmark, and doesn’t? (negative information) • What happens if the robot misidentifies a landmark?