# Mobile Robot Mapping - Lecture 2

Julian Ryde

Friday 20 April 2012

Pieter Abbeel

# Loop Closure more details

• How to recognize previously visited locations?
• Rich sensor such as camera
• For range finders often have to do sub-mapping
• Single scans are not good enough to reliably determine loop closure
• What to do when a revisit is detected?
• Perform pose graph relaxation
• Distribute the angular and translation displacement error
• Spring model
• Minimise energy of the lattice
• Rat slam

# Fast SLAM

http://www.mobilerobots.ethz.ch/videos/Thrun_Mapping.AVI

# Pose graph relaxation

• Pose graph is a graph of connected poses

• connected by observed relative pose either
• from odometry
• from scan matching
• Spring network energy minimisation

• Spring energy is $$E = \frac{k_1}{2} x^2 + \frac{k_2}{2} \theta ^2$$

• For angular and translational displacements

• Energy minimised over the whole network

• Estimate position and variance of node i from each neighboring node j:

• Andrew Davison SLAM lecture 8

Pieter Abbeel

# RANdom SAmple Consensus, RANSAC

• Overview
• Iterative method for model parameter estimation
• Good generic goto algorithm
• In real world data outliers are usually possible
• Robust to outliers
• Simple to implement and effective
• Anytime algorithm
• Can take a long time
• Requires some parameters
• Number of elements required for a good fit
• Inlier/Outlier distance threshold
• Number of iterations

# RANSAC pseudocode

while iterations < k
maybe_inliers := n randomly selected values from data
maybe_model := model parameters fitted to maybe_inliers
consensus_set := maybe_inliers

for every point in data not in maybe_inliers
if point fits maybe_model with an error smaller than t

if the number of elements in consensus_set is > d
(this implies that we may have found a good model,
now test how good it is)
this_model := model parameters fitted to all points in consensus_set
this_error := a measure of how well this_model fits these points
if this_error < best_error
(we have found a model which is better than any of the previous ones,
keep it until a better one is found)
best_model := this_model
best_consensus_set := consensus_set
best_error := this_error

increment iterations