17
MCL -> SLAM

MCL -> SLAM. x: pose m: map u: robot motions z: observations

Embed Size (px)

Citation preview

Page 1: MCL -> SLAM. x: pose m: map u: robot motions z: observations

MCL -> SLAM

Page 2: MCL -> SLAM. x: pose m: map u: robot motions z: observations

x: posem: mapu: robot motionsz: observations

Page 3: 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)

Page 4: MCL -> SLAM. x: pose m: map u: robot motions z: observations

Indoors

Space

Undersea

Underground

Page 5: MCL -> SLAM. x: pose m: map u: robot motions z: observations

Can’t map without a pose!Can’t localize without a map!

Page 6: MCL -> SLAM. x: pose m: map u: robot motions z: observations
Page 7: MCL -> SLAM. x: pose m: map u: robot motions z: observations

Given:-Robot’s controls (u)-Observations of features (z)

Produce:-Map of features (m)-Path of the robot (x)

Given:-Robot’s controls (u)-Observations of features (z)-Map of features (m)

Produce:-Path of the robot (x)

Page 8: MCL -> SLAM. x: pose m: map u: robot motions z: observations

8Landmark 1 Landmark 2 Landmark M…x, y,

Landmark 1 Landmark 2 Landmark M…x, y, Particle#1

Landmark 1 Landmark 2 Landmark M…x, y, Particle#2

ParticleN

So, what’s a particle?

Page 9: MCL -> SLAM. x: pose m: map u: robot motions z: observations

So how do we represent a landmark?

MCL

Landmark’s location: knownLandmark:

SLAM

Landmark’s location: estimatedLandmark:

covariance matrix

Page 10: MCL -> SLAM. x: pose m: map u: robot motions z: observations
Page 11: MCL -> SLAM. x: pose m: map u: robot motions z: observations

So how do we represent a landmark?

MCL

Landmark’s location: knownLandmark:

SLAM

Landmark’s location: estimatedLandmark:

covariance matrix

Page 12: MCL -> SLAM. x: pose m: map u: robot motions z: observations

How do we run this particle filter? =robot_motionobs=robot_observationsforeach p in Particles

p.weight=1p.move( ) // Motion Model!foreach in obs

if never seen beforep.map.add_landmark( ) // Sensor Model!

elsep.map.update_landmark( ) // Sensor Model!

p.weight=p.weight * p.update_weight( ) // Independence!resample()

Page 13: MCL -> SLAM. x: pose m: map u: robot motions z: observations

13

FastSLAM – Action Update

Particle #1

Particle #2

Particle #3

Landmark #1Filter

Landmark #2Filter

Page 14: MCL -> SLAM. x: pose m: map u: robot motions z: observations

14

FastSLAM – Sensor Update

Particle #1

Particle #2

Particle #3

Landmark #1Filter

Landmark #2Filter

Page 15: MCL -> SLAM. x: pose m: map u: robot motions z: observations

15

FastSLAM – Sensor Update

Particle #1

Particle #2

Particle #3

Weight = 0.8

Weight = 0.4

Weight = 0.1

Page 16: MCL -> SLAM. x: pose m: map u: robot motions z: observations

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?

Page 17: MCL -> SLAM. x: pose m: map u: robot motions z: observations

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?