Evaluation of Methods for 3D Environment Reconstruction with ...

1 downloads 0 Views 6MB Size Report
The field of 3-D-environment reconstruction has been subject to various re- ..... in addition to the control when sampling a new pose. ...... Orleans, USA, pp.
MEE10:89

Evaluation of Methods for 3D Environment Reconstruction with Respect to Navigation and Manipulation Tasks for Mobile Robots Syed Farzad Husain http://bth.itslearning.com/farzad

This thesis is presented as part of Degree of Master of Science in Electrical Engineering

Blekinge Institute of Technology November 2010 Blekinge Institute of Technology School of Engineering Department of Applied Signal Processing Internal Supervisor: Dr. Siamak Khatibi1 External Supervisor: Dipl.–Ing. Georg Arbeiter2 Examiner: Dr. Siamak Khatibi1

1 2

Blekinge Institute of Technology, Multisensor Group, Karlskrona, Sweden Fraunhofer Institute for Manufacturing Engineering and Automation IPA, Stuttgart, Germany

ii

Abstract The eld of 3-D-environment reconstruction has been subject to various research activities in recent years. The applications for mobile robots are manifold. First, for navigation tasks (especially SLAM), the perception of 3-D-obstacles has many advantages over navigation in 2-D-maps, as it is commonly done. Objects that are located hanging above the ground can be recognized and furthermore, the robots gain a lot more information about its operation area what makes localization easier. Second, in the eld of tele-operation of robots, a visualization of the environment in three dimensions helps the tele-operator performing tasks. Therefore, a consistent, dynamically updated environment model is crucial. Third, for mobile manipulation in a dynamic environment, an on-line obstacle detection and collision avoidance can be realized, if the environment is known. In recent research activities, various approaches to 3-D-environment reconstruction have evolved. Two of the most promising methods are FastSLAM and 6-D-SLAM. Both are capable of building dense 3D environment maps on-line. The rst one uses a Particle Filter applied on extracted features in combination with a robot system model and a measurement model to reconstruct a map. The second one works on 3-D point cloud data and reconstructs an environment using the ICP algorithm. Both of these methods are implemented in GNU C++. Firstly, FastSLAM is implemented.

The object-oriented programming technique is used to build

up the Particle and Extended Kalman Filters. Secondly, 6-D SLAM is implemented. The concept of inheritance in C++ is used to make the implementation of ICP algorithm as much generic as possible. To test our implementation a mo-

R 3 bile robot called Care-O-bot

1 is used. The mobile robot is equipped with

a color and a time-of-ight camera. Data sets are taken as the robot moves in dierent environments and our implementation of FastSLAM and 6-D SLAM is used to reconstruct the maps.

Keywords: SLAM, FastSLAM, 6-D SLAM

1 http://www.care-o-bot.org

iv

Acknowledgments I would like to thank my boss and supervisor Georg Arbeiter at the Fraunhofer Institute from whom nothing escapes.

I am grateful to my internal su-

pervisor Siamak Khatibi at Blekinge Institute of Technology for his help and guidance. I am also indebted to the bright ideas and sharp eyes of the following people: Jan Fischer, Özgür Sen and Daniel Joseph. Thanks are due to all my friends especially Farooq Kifayat, Surkhru Osman, Shahruk Osman and Felix Messmar. Finally, I want to express my hearty gratitude to my family for their continuous encouragement, support and for their love.

v

vi

Contents

Abstract

iii

Acknowledgements

v

List of Algorithms

ix

List of Figures

xii

List of Acronyms 1

2

Introduction

1

1.1

Overview

1.2

Thesis Scope

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1

1.3

Thesis Outlines . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

FastSLAM 2.1

2.2 2.3

2.4

3

xiii

3

Introduction to FastSLAM . . . . . . . . . . . . . . . . . . . . . .

3

2.1.1

Background and Related Work

. . . . . . . . . . . . . . .

3

2.1.2

Kalman Filter . . . . . . . . . . . . . . . . . . . . . . . . .

3

2.1.3

Particle Filter . . . . . . . . . . . . . . . . . . . . . . . . .

3

2.1.4

FastSLAM

. . . . . . . . . . . . . . . . . . . . . . . . . .

Characteristics of FastSLAM Implementation Details

. . . . . . . . . . . . . . . . . . . .

4 4

. . . . . . . . . . . . . . . . . . . . . . .

5

2.3.1

Why FastSLAM 1.0 and not FastSLAM 2.0 . . . . . . . .

5

2.3.2

Procedure for FastSLAM 1.0

. . . . . . . . . . . . . . . .

5

Experimental Results . . . . . . . . . . . . . . . . . . . . . . . . .

8

6-D SLAM 3.1

1

15

Introduction to 6-D SLAM

. . . . . . . . . . . . . . . . . . . . .

3.1.1

Background and Related Work

3.1.2

ICP Algorithm

. . . . . . . . . . . . . . .

15 16

. . . . . . . . . . . . . . . . . . . . . . . .

16

3.2

Characteristics of ICP Algorithm . . . . . . . . . . . . . . . . . .

17

3.3

Our Approach . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

17

3.4

ICP with Color Images . . . . . . . . . . . . . . . . . . . . . . . .

18

3.4.1

18

Implementation Details 3.4.1.1

3.4.2 3.5

. . . . . . . . . . . . . . . . . . . .

19

Experimental Results

. . . . . . . . . . . . . . . . . . . .

20

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

27

Frustum ICP 3.5.1

. . . . . . . . . . . . . . . . . . .

Registration

Implementation Details vii

. . . . . . . . . . . . . . . . . . .

27

3.5.2 3.6

4

Experimental Results

. . . . . . . . . . . . . . . . . . . .

29

Estimating Rigid Body Transformation . . . . . . . . . . . . . . .

29

3.6.1

Singular Value decomposition of a Matrix . . . . . . . . .

30

3.6.2

Computing Transformation Using Unit Quaternion . . . .

30

3.6.3

Computing Transformation by Approximation

31

. . . . . .

Discussion

33

4.1

FastSLAM Versus 6-D SLAM . . . . . . . . . . . . . . . . . . . .

33

4.2

Conclusion and Future Work

36

. . . . . . . . . . . . . . . . . . . .

Bibliography

37

Appendices

39

A List of External Libraries

41

A.1

ANN: A Library for Approximate Nearest Neighbor Searching . .

A.2

Bayesian Filtering Library . . . . . . . . . . . . . . . . . . . . . .

42

A.2.1

Gaussian Distribution

. . . . . . . . . . . . . . . . . . . .

42

A.2.2

Resampling Function . . . . . . . . . . . . . . . . . . . . .

42

viii

41

List of Algorithms 3.1

ICP Algorithm

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

17

3.2

Proposed ICP . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

19

ix

x

List of Figures 1.1

Care-O-bot 3

2.1

Simulated robot poses in world coordinates

. . . . . . . . . . . .

6

2.2

Simulated landmark Poses in world coordinates . . . . . . . . . .

8

2.3

Sequence of images of a kitchen environment

8

2.4

Front view of the reconstructed kitchen environment built using FastSLAM

2.5

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2

9

Top view of the reconstructed kitchen environment built using FastSLAM

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9

2.6

Sequence of images of a table

. . . . . . . . . . . . . . . . . . . .

10

2.7

Front view of the reconstructed table built using FastSLAM . . .

10

2.8

Top view of the reconstructed table built using FastSLAM

. . .

11

2.9

Top view of the table without the application of FastSLAM . . .

12

2.10 [Left] Original path - [Right] Noise added path (gray) & Corrected path(red)

θz ,

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

Pitch

θy

θx

3.1

Yaw

3.2

Target (red) and Source (blue) point clouds . . . . . . . . . . . .

20

3.3

Color images along with the corresponding points . . . . . . . . .

21

3.4

Resultant point cloud after applying ICP algorithm . . . . . . . .

21

3.5

Front view of the kitchen map built using ICP based SLAM . . .

22

3.6

Top view of the kitchen map built using ICP based SLAM . . . .

22

3.7

RMS Error for dierent sets of point clouds with known initial alignment

3.8 3.9

and Roll

rotations . . . . . . . . . . . . . . .

13 15

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

23

Convergence using standard ICP, target (red), source (blue) . . .

24

Convergence using standard ICP on the subset of point clouds only, target (red), source (blue) . . . . . . . . . . . . . . . . . . .

24

3.10 Resulting point clouds after transformation, target (red), source (blue)

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

25

3.11 RMS Error for dierent sets of point clouds with unknown initial alignment

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

3.12 Sequence of images in an indoor environment 3.13 Front view of the indoor environment 3.14 Top view of the indoor environment

25

. . . . . . . . . . .

26

. . . . . . . . . . . . . . .

26

. . . . . . . . . . . . . . . .

27

. . . . . . . . . . . . . . . . . . . . . . . . . .

28

3.16 Target (red) and Source (blue) point clouds . . . . . . . . . . . .

29

3.15 Visibility Frustum

4.1

Maps built with FastSLAM (left) and 6-D-SLAM (right) . . . . .

33

4.2

Reconstruction of table using Frustum ICP

34

xi

. . . . . . . . . . . .

4.3

Reconstructed planes of kitchen environment

4.4

Reconstructed surface of kitchen map built using FastSLAM (left)

. . . . . . . . . . .

and 6-D SLAM (right) . . . . . . . . . . . . . . . . . . . . . . . .

xii

35 35

List of Acronyms SLAM: Simultaneous Localization and Mapping RBPF: Rao Blackwellised Particle Filter SURF: Speeded Up Robust Features ICP: Iterative Closest Points SVD: Singular Value Decomposition UQ: Unit Quaternion

xiii

xiv

Chapter 1 Introduction

1.1

Overview

In the eld of robotics, when a fully automated task is to be performed then one of the most essential requirement is to have a map of the surrounding environment and the relative position of the robot. The more detailed this information is acquired, the more it becomes possible to perform complicated tasks. For example, if a robot is capable of moving and operating in all the three dimensions of space but the map is known only in two dimensions then it will restrict the capability of the robot. Also the level of complexity and probability of error in performing a task depends on how much densely and accurately the structure of the environment is known. When tasks are to be performed with full automation then both the robot pose and the map of the surrounding environment are unknown and should be determined simultaneously.

This problem is commonly referred to as the

Simultaneous Localization and Mapping or SLAM problem. Various methods have been proposed to solve the SLAM problem which are mostly based on a seminal paper by Smith and Cheeseman [1]. Two of the methods which are being used most commonly to solve this problem are FastSLAM [2] and 6-D-SLAM [3]. There are two versions of FastSLAM. FastSLAM 1.0 [2] and FastSLAM 2.0 [27]. The dierence is that the later incorporates the most recent measurement in addition to the control when sampling a new pose.

ICP (Iterative Closest Points ) [4] algorithm for registration of raw 3-D point cloud data.

The second method uses the the

1.2

Thesis Scope

The aim of this work is to implement the FastSLAM and 6-D-SLAM methods, and test them under dierent real world scenarios of indoor environments. Then make a comparison between these two methods and enlist the pros and cons of

R 3. their usage. The implementation was tested on a robot called Care-O-bot Figure 1.1 shows the image of the robot. 1

Figure 1.1: Care-O-bot 3

1.3

Thesis Outlines

This thesis report is organized into four chapters. Chapter 1 gives a general introduction to the thesis topic and outlines the scope of the work. Chapter 2 is organized into four sections. Section 2.1 introduces the FastSLAM algorithm and explains its underlying details.

Section 2.2 enlists the

characteristics of FastSLAM algorithm. Section 2.3 explains the in depth implementation details of FastSLAM. Section 2.4 shows the experimental results of the application of FastSLAM in dierent real world scenarios. Chapter 3 is organized into six sections.

Section 3.1 introduces the 6-D-

SLAM problem and explains the underlying ICP algorithm. Section 3.2 enlists the characteristics of ICP algorithm. Section 3.3 tells about the approach we used for implementing ICP algorithm.

Section 3.4 gives the implementation

details and shows the experimental results of the ICP algorithm when using the color images. Section 3.5 gives the implementation details and shows the experimental results of using Frustum-ICP approach. Section 3.6 gives a detailed explanation of the dierent rigid body transformation estimation methods used in the ICP algorithm. Finally in Chapter 4, dierent aspects of FastSLAM and 6-D-SLAM are compared in section 4.1 and the thesis is concluded along with the outline for future work in section 4.2.

2

Chapter 2 FastSLAM 2.1

Introduction to FastSLAM

FastSLAM is an algorithm which is primarily based on Kalman and Particle Filtering.

2.1.1

Background and Related Work

FastSLAM 1.0 was introduced by Montemerlo

et al. [2] which is capable of solv-

ing the SLAM problem in a robust way. Compared to EKF SLAM [1] approach which has a computational complexity of

O N2



where

N

is the number of

landmarks, FastSLAM reduces the computational complexity to where

M

O (M log (N ))

is the number of particles.

Later the same authors extended it to FastSLAM 2.0 [27], which is an improved version of FastSLAM 1.0. As explained in [28], in case of low error in measurement FastSLAM 1.0 starts to diverge and in order to avoid divergence the number of particles need to be increased resulting in increased computational time but FastSLAM 2.0 does not diverge in this case. Our implementation closely follows [29], where they use SURF features as landmarks but they use stereo vision for computing depth information, where as we use a time-of-ight sensor for the same purpose.

2.1.2

Kalman Filter

Kalman Filter is an algorithm which is used to estimate the optimal value of current state

xt

using the old estimate

xt−1 and

current observation

zt .

The

Kalman ltering algorithm is limited to linear systems which can be extended to non-linear systems. This can be done by linearizing the non-linear system and measurement model. This method is known as Extended Kalman Filtering or EKF.

2.1.3

Particle Filter

A Particle Filter is used to estimate a current set of states

n o [1] [2] [k] xt , xt , . . . xt

by nding a set of weighted samples from a previous set of states and a given current observation

zt and

control

ut . 3

the previous state

[k]

x ˆt [k] xt−1

A state sample

is rst generated given the probability distribution of

ut . i.e.   [k] ∼ p xt |xt−1 , ut

and control

1. Draw a sample from

[k]

x ˆt

2. Then the estimated state is weighted based on the given observation. i.e.

  [k] [k] wt = p zt |ˆ xt Finally the estimated states are resampled on the principle that the states having higher weights are sampled more often than those having lower weights. Compared to a Kalman Filtering, the Particle Filtering can be used with non-linear Bayesian states.

Since it estimates a distribution by sampling, so

in the limit, as the number of particles approaches innity the approximation approaches exactness. Since the introduction of Particle Filters in 1993 [5], this ltering method has been evolving with the passage of time. A detailed and up-to-date tutorial on Particle Filtering can be found in [6].

2.1.4

FastSLAM

The problem with Particle Filtering is that with the increase in the number of dimensions the size of the state space over which we need to sample increases drastically, resulting in the requirement of number of particles to increase exponentially. So Particle Filters are usually restricted to problems having lower dimensions. FastSLAM solves this by factoring the SLAM problem into an independent landmark estimation problem, given an estimate of the robot path. This technique of analytic marginalization of landmark estimation using Extended Kalman Filters conditioned on robot path estimate is an instance of

Rao-Blackwellisation [30]. In this way the number of dimensions is reduced to the dimensions of the robot pose.

2.2

Characteristics of FastSLAM

The following are the characteristics of the FastSLAM algorithm. 1. This algorithm works only for static environments. 2. It uses a Particle Filter, where each particle represents a set of probability distributions. 3. The pose of landmarks is represented by Extended Kalman Filters with a mean and a covariance. 4. Every particle has its own set of landmarks and robot pose. 5. Every particle has a weight.

The particle having the maximum weight

represents the most probable set of probability distributions for robot and landmark pose i.e. the most accurate representation of the environment and robot pose.

4

2.3

Implementation Details

There are dierent variants of FastSLAM which are adapted according to the measurement and system model. The variant that we use is FastSLAM 1.0 with known correspondences and multiple observations per time step. We are having multiple observations per time step because we are using SURF descriptors as a landmark.

SURF (Speeded Up Robust Features) is a

scale invariant and rotation invariant interest point detector and descriptor [7]. So after every time step we get a set of 3D points which correspond to SURF descriptors that are extracted from the color images. We can track these feature points in the following steps based on the descriptor values, so we have known correspondences after every step.

2.3.1

Why FastSLAM 1.0 and not FastSLAM 2.0

FastSLAM 2.0 could also have been used but for multiple observations per time step it becomes more complicated. As explained in [8], in this case we will need to nd a way to process the measurements that will give new landmarks to be processed in the end. This is required because if the motion model is noisy then the initial pose estimate of the new landmark may get quiet inaccurate. In order to determine the new landmarks after every step, we will need to compute the eld of view after every step. Also since we are using a kd-Tree to speed up the search process, it becomes almost impossible to reorder the landmark once the kd-Tree is built.

And in order to reorder the landmarks

before building up a kd-Tree will require an extra loop to go through all the features to check whether the feature points lie inside or outside the eld of view.

2.3.2

Procedure for FastSLAM 1.0

First a set of particles are created. Each particle carries a weight, stores a robot pose and a set of landmarks. In order to speed up the landmark search process in every step, the map in every particle (the set of landmarks) is stored in the form of a kd-Tree. A.1.

Details of kd-Tree implementation are given in appendix

The pose of a landmark is represented by a Gaussian distribution (see

appendix A.2.1). After every time step, Initially the robot pose is updated in every particle based on the control information noise level of the system.

ut

from the odometry and the

This is a simulated guess.

Since we are assuming

Gaussian noise so the value of the robot pose is spread around a mean variance

σ

in the particles.

particles with

µr

µ

and

Figure 2.1 shows simulated robot poses for 100

equal to robot pose from odometry and 5

σr = 0.05m.

Robot Poses −2.7

Distance along y−axis (meters)

−2.75

−2.8

−2.85

−2.9

−2.95

−3

2.7

2.75 2.8 2.85 Distance along x−axis (meters)

2.9

2.95

Figure 2.1: Simulated robot poses in world coordinates

When a landmark is added, it is rst checked using its SURF descriptor if it is new or old.

If it is new then it is added in a global kd-Tree and in the

map of every particle as a new landmark. The mean value of the pose of the landmark is determined by transforming the measurement from robot into world coordinates using the simulated robot pose for every particle. i.e.

µxw

= xrob · cos (µθr ) − yrob · sin (µθr ) + µxr

(2.1)

µyw

= xrob · sin (µθr ) + yrob · cos (µθr ) + µyr

(2.2)

µzw

=

zrob

(2.3)

µxw , µyw , µzw is the mean value of landmark pose in world coordinates xrob , yrob , zrob is the landmark pose (measurement) in robot coordinates and µxr , µyr , µθr is the mean value of the simulated robot pose in world coordinates. where

and

The measurement covariance can be determined by

Σ where

G

=

−1 GT R−1 G

(2.4)

is calculated by taking the Jacobian of the robot pose with respect

to the measurement (landmark pose in world coordinates). matrix that models the measurement noise. 6

R

is the covariance

If the landmark is determined to be an old one by the SURF descriptor then it is passed as a known landmark to every particle. The probability of correct association is computed in every particle using eq. 2.5.

p

where

  1 1 T −1 √ exp − (znew − zprv ) Σ (znew − zprv ) 2 2πΣ

=

znew

is the new pose of the landmark and

pected position of the landmark.

zprv

zprv

(2.5)

is the predicted, ex-

can be calculated by transforming the

landmark pose stored in the particle back to the robot coordinates. This transformation can be done using eq. 2.6,2.7,2.8.

xrob

yrob

=

=

(µxw − µxr ) · cos (µθr ) + (µyw − µyr ) · sin (µθr )

(2.6)

− (µxw − µxr ) · sin (µθr ) + (µyw − µyr ) · cos (µθr )

(2.7)

zrob

=

µzw

(2.8)

So if the predicted pose of the landmark and the pose that we get from the measurement are close to one another will give a higher probability, implying the association was correct. Otherwise it will be wrong. If the probability is higher than a certain threshold then EKF update equations will be applied to nd the new pose of the landmark. Since we are using a global map to compute initial correspondence, the features that are rejected by the best particle (the particle having the maximum weight) are added as a new feature to the global map. As explained in [8] for multiple observations per step, the weight of the particle can be calculated by multiplying the individual weights for every landmark. Finally the resampling method (see appendix A.2.2) will be used to remove the particles having lower weights. The particles having higher weights will be sampled more often then the ones having lower weights. Figure 2.2 shows the simulated poses of a landmark for 100 particles in world coordinates in 2D. 7

Landmark Poses 0.4

Distance along y−axis (meters)

0.3

0.2

0.1

0

−0.1

−0.2

−0.3 −1.85

−1.8

−1.75 −1.7 −1.65 −1.6 Distance along x−axis (meters)

−1.55

−1.5

Figure 2.2: Simulated landmark Poses in world coordinates

2.4

Experimental Results

The implementation is tested using a color and a time-of-ight camera, that is

R . Data is taken as the robot moves in dierent mounted on top of Care-O-bot environments.

Figure 2.3: Sequence of images of a kitchen environment

Figure 2.3 shows a series of color images taken in a kitchen environment. The lines show the association of every feature with the last image (bottom 8

right), found using FastSLAM. The numbers tell the associated feature's id.

Figure 2.4:

Front view of the reconstructed kitchen environment built using

FastSLAM

Figure 2.5: Top view of the reconstructed kitchen environment built using FastSLAM Figures 2.4 and 2.5 show the view from front and top of the kitchen map respectively, built using FastSLAM. 9

Figure 2.6: Sequence of images of a table

Figure 2.6 shows a series of color images taken as the robot moved around a table. The lines show the correspondences between the rst image (top left) and the last image (bottom right) as the robot came back to its starting position. Figure 2.7 and 2.8 show the view from front and top of the table map respectively, built using FastSLAM.

Figure 2.7: Front view of the reconstructed table built using FastSLAM

10

Figure 2.8: Top view of the reconstructed table built using FastSLAM

11

In order to test the eciency of FastSLAM algorithm, the data collected for the table environment (cf. Figure 2.6) was transformed using plain odometry without the application of FastSLAM. Figure 2.9 shows the view from top of the table without applying the FastSLAM algorithm. A comparison of Figure 2.8 with Figure 2.9 shows how much FastSLAM is able to correct the pose of each feature.

Figure 2.9: Top view of the table without the application of FastSLAM

12

Finally Gaussian distributed noise is added to the robot path which we obtain from the odometry and then it is checked up to how much FastSLAM was able to correct it. Figure 2.10 shows robot path obtained from odometry on the left and path with Gaussian added noise with mean

σ = 0.02m

µ=0

and variance

on the right (gray color) and the corrected path (red color).

Figure 2.10: [Left] Original path - [Right] Noise added path (gray) & Corrected path(red)

13

14

Chapter 3 6-D SLAM

3.1

Introduction to 6-D SLAM

6-D SLAM or Simultaneous Localization and Mapping with 6 Degrees of Freedom is a method used to build dense 3-d maps and at the same time determine pose and orientation of the ranging device. This is done by consistent matching of a set of points with another set of points by nding a transformation. This method is called

registration. In order to fully identify the pose and orientation

of the device 6 parameters will be needed. 3 to identify the spatial position i.e.

{tx , ty , tz }

and 3 to identify the spatial orientation i.e.

{θx , θy , θz }.

eters that determine the orientation are commonly referred to as

roll angles [9]. Figure 3.1 show the yaw, pitch and roll rotations.

Figure 3.1: Yaw

θz ,

Pitch

θy

15

and Roll

θx

The param-

yaw, pitch and

rotations

3.1.1

Background and Related Work

6-D SLAM is based on ICP algorithm. ICP or Iterative Closes Points was initially introduced by Besl and McKay [10] and Chen and Medioni [11].

Since

then it has been used extensively for matching of two sets of points. The proposed algorithm describes a method to register point or line segment sets in 3-D space. Although the term 6-D SLAM was rst used by Nütcher [12] in 2004 where he uses a variant of ICP to perform registration of points got from a laser scanner, ICP algorithm has been used for similar tasks before by others as well [13, 14].

3.1.2

ICP Algorithm

Given two sets of point clouds, Source computes the rotation matrix

R

S

and Target

T, t

and translation vector

the ICP algorithm by minimizing the

error function in eq. 3.1.

E(R, t)

=

N X

k (R · pi + t) − qi k2

(3.1)

i=1

i − th point in the Source that corresponds to qi point in the R is the (3 × 3) rotation matrix and t is the (3 × 1) translation vector. The (3 × 3) rotation matrix is found by multiplying all the three individual rotation matrices Rx , Ry , Rz which Where

N

Target.

pi

is the

is the total number of corresponding points.

are used for rotation around a single axis of rotation. Combining this with the

(3 × 1)

translation vector gives us the complete transformation matrix

 T =

       =      

R(3×3) t(3×1) 0 0 0 1

T



cos (θx ) cos (θy ) cos (θx ) sin (θy ) sin (θz ) − sin (θx ) cos (θz ) sin (θx ) cos (θy ) sin (θx ) sin (θy ) sin (θz ) + cos (θx ) cos (θz ) . . . −sin (θy ) cos (θy ) sin (θz ) 0 0

...

i.e.

cos (θx ) sin (θy ) cos (θz ) + sin (θx ) sin (θz ) sin (θx ) sin (θy ) cos (θz ) − cos (θx ) sin (θz ) cos (θy ) cos (θz ) 0

tx ty tz 1

              (3.2)

The ICP algorithm is summarized in Algorithm 3.1. 16

Algorithm 3.1 ICP Algorithm 1: for i = 0 to 2:

maxIterations do

Find correspondences

(pi , qi )

between Source

S

and Target

T

point

clouds. 3:

Calculate transformation

(R, t) that minimizes the error function eq.

3.1. Apply the transformation(R, t) to the data set

4: 5:

S.

Compute the dierence of the quadratic error, i.e., compute the dierence of the value

kEi−1 (R, t) − Ei (R, t)k

application of the transformation. threshold

ε,

before and after the

If this dierence falls below a

terminate.

8: end for

3.2

Characteristics of ICP Algorithm

Following are the characteristics of the ICP algorithm. 1. The Target point cloud must be a proper subset of Source point cloud. 2. ICP algorithm might converge in a wrong convergence basin depending on the initial position and orientation of the Source point cloud with respect to the Target point cloud. 3. ICP algorithm is prone to noise. The performance of the algorithm degrades with the increase in noise level.

3.3

Our Approach

We tested two dierent variants of the ICP algorithm. First one uses the color images to nd the overlapping region. Also a set of corresponding points were found using these images, which served to compute the initial transformation. After applying this initial transformation to the Source point cloud, the ICP algorithm with slight modication (mentioned in section 3.4.1.1) is applied on the complete point cloud of Target and the overlapping region of the Source. In the second variant we use Frustum ICP to nd the transformation. For this we need the robot pose from odometry to nd the visibility frustum which in turn tells us about the points in the Source point cloud that overlap with the Target. Then only overlapping points are used in the modied ICP algorithm. For minimizing eq. 3.1 we need to compute a rigid body transformation in every iteration of ICP algorithm. Three methods were tested which are discussed in section 3.6. Finally point clouds were merged together into one point cloud based on the principle that if the distance between the nearest points between Source and Target lie below a certain threshold then they are considered as one. Then this point cloud is considered as a Target point cloud for next step. 17

3.4

ICP with Color Images

3.4.1

Implementation Details

First a colored 3D point cloud is created i.e. each point has 6 dimensions. 3 for describing its spatial position and 3 for its color. Then the color Image is used to nd the interesting points.

For that purpose SURF (Speeded Up Robust

Features) is used, which is a scale invariant and rotation invariant interest point detector and descriptor [6]. Using the SURF descriptors an initial set of corresponding points is created. Also using the color images the region in the source image that overlaps with the target image is found. This is done by dividing the source image into small segments and searching each segment in the target image. We use the normalized correlation coecient to compare the dierence. Its implementation from the OpenCV library

1 is used. The formula for nding

normalized correlation coecient is given in eq.

3.3.

Here

Sseg

is the image

segment from the source image used for searching in the target image

T. R

is

the resulting coecient.

 0 (i0 , j 0 ) × T 0 (i + i0 , j + j 0 ) Sseg qP P 0 0 0 2 0 0 0 2 i0 ,j 0 Sseg (i , j ) × i0 ,j 0 T (i + i , j + j ) P

R(i, j)

=

i0 ,j 0

(3.3)

where

0 (i0 , j 0 ) = Sseg (i0 , j 0 ) − Sseg



1 (w×h)

×

P

T 0 (i + i0 , j + j 0 ) = T (i + i0 , j + j 0 ) −



i00 ,j 00

 Sseg (i00 , j 00 )

&

1 (w×h)

×

P

i00 ,j 00

 T (i + i00 , j + j 00 )

If the coecient is greater than a threshold, then the corresponding points in the source point cloud are marked as the overlapping points and only those are used in the registration process.

The rest are marked as non-overlapping

ones. So there are two pairs of point clouds now, which are used in the ICP algorithm. 1. Complete target point cloud and Overlapping Region of source point cloud.

2. Point Cloud of corresponding points generated from SURF descriptors. Our assumption is that we do not have any kind of information from odometry. So we are relying on the SURF algorithm for initial transformation

Minitial ,

so

that the point clouds are aligned in the correct convergence basin. Then we run ICP algorithm with the proposed modication described in section 3.4.1.1.

1 http://opencv.willowgarage.com/documentation/index.html 18

3.4.1.1

Registration

Algorithm 3.2 Proposed ICP Given source and target point cloud subset in our case

S, T

and source and target point cloud

SSU RF , TSU RF

1. Compute overlapping region in source:

Ssub

2. Compute initial point correspondence (SURF descriptor in our case) 3. Compute initial registration matrix

Minitial

4. Apply transformation

(Ssub , T )

5. Alternate between

and

(SSU RF , TSU RF )

6. Create closest point pairs 7. Compute registration matrix

M

8. Find RMS point to point distance error 9. If converged then terminate 10. Go to step 4

Our proposed ICP method for registration is summarized in algorithm 3.2. In step 6 we use a point pairs.

k -D

tree with

k = 3

as proposed in [15] for creating closest

This helps in reducing the search time.

dierent converging values. One is convergence using using

(SSU RF , TSU RF ).

In step 8 there are two

(Ssub , T )

and the other

Whichever gives the minimal value of error should be

taken as nal and the algorithm should be terminated then. Also it should be noted that it is not necessary to use these pairs alternatively. It is also possible to use one pair more often than the other depending on various parameters like noise level, overlapping region. As information from color images is highly dependent on texture from the environment. The basic idea behind our proposal is that, if we are able to nd a subset of point cloud from source and target which are more likely to have a correspondence i.e. fewer points in the source set that do not belong to the target then we can use the alternating ICP approach to make ICP converge in fewer iterations and in correct local minimum. This is because ICP will be directed to converge to a minimum that is common to both pairs of point clouds. The new error function that has to be minimized becomes

E(R, t)

=

Nj X

k (R · pi,j + t) − qi,j k2

(3.4)

i=1 Where the index sponding points

p

j

and

tells which point cloud pair is being used for the corre-

q.

Due to the non-overlapping points and noise in the coordinate values it is possible that the global minimum is not the correct minimum or even in worst 19

case scenario the minimum does not even exist that gives the desired alignment. This can happen if we reduce the point cloud size by uniform sampling in order to increase the computational speed. But because of the point cloud of SURF descriptors the correct minimum will stay. In that case ICP will not converge rather it will start to oscillate between the correct minimum and approach towards another wrong minimum. It depends on how often we alternate between the SURF descriptor point cloud and the entire point cloud.

3.4.2

Experimental Results

Figure 3.2: Target (red) and Source (blue) point clouds

Figure 3.2 shows the two point clouds, Target in red color and Source in blue color and the initial corresponding points. The points in the dark blue are the non-overlapping points and the points in light blue are the overlapping points found using the color images in gure 3.3. Figure 3.3 also shows the point correspondences found using the SURF descriptors which are used to compute the initial transformation. Figure 3.4 shows the resultant point cloud after applying proposed ICP algorithm 3.2. 20

Figure 3.3: Color images along with the corresponding points

Figure 3.4: Resultant point cloud after applying ICP algorithm

Figure 3.5 and 3.6 show the view from front and top of the kitchen map respectively, corresponding to the images shown in Figure 2.3. This map was built using ICP with small angle approximation explained in section 3.6.3 for nding transformation in every iteration. 21

Figure 3.5: Front view of the kitchen map built using ICP based SLAM

Figure 3.6: Top view of the kitchen map built using ICP based SLAM In order to compare our modied ICP approach with the standard ICP approach we tested both of them with the same point clouds of gure 3.2. Figure 3.7 shows a comparison of the RMS error values. 22

Once the standard

ICP was tested using SURF features only and once it was tested with the raw data. Although the ICP algorithm converged for all the three cases because we aligned the point clouds initially using the point correspondences from SURF features but it can be seen that the modied ICP and ICP using SURF features converged in fewer iterations.

3 RMS Error modified ICP RMS Error standard ICP with raw point clouds only RMS Error standard ICP SURF features only

2.5

RMS Error

2

1.5

1

0.5

0

0

Figure 3.7:

10

20

30

40 50 60 no. of iterations

70

80

90

100

RMS Error for dierent sets of point clouds with known initial

alignment

The eect of modied ICP is most pronounced when it is tested with the same point clouds shown in gure 3.2 without using the initial point correspondence and without computing the overlapping region.

SVD method is used

for nding transformation and the algorithm converged only when we alternate between the two point clouds. Figure 3.8 shows the result of using standard ICP on raw point clouds without using any initial transformation. Figure 3.9 shows the result of using the subset of point clouds only, again without any initial transformation. Figure 3.10 shows the result of using the alternating approach. Figure 3.11 shows a plot of RMS (Root Mean Square) point to point distance error value, after every iteration, for all the 3 cases mentioned before.

From

gure 3.8, 3.9, 3.10 and 3.11 it can be seen that ICP algorithm converged in the correct convergence basin, only with the alternating approach and it rather started to diverge for the rest. Finally the algorithm was tested inside another indoor environment. Figure 3.12 shows the sequence of images as the robot moved in the environment. Figure 3.13 and 3.14 show the view from front and top of the map respectively. 23

Figure 3.8: Convergence using standard ICP, target (red), source (blue)

Figure 3.9: Convergence using standard ICP on the subset of point clouds only, target (red), source (blue)

24

Figure 3.10: Resulting point clouds after transformation, target (red), source (blue)

16 RMS Error standard ICP corresponding to Figure 2 RMS Error standard ICP corresponding to Figure 3 RMS Error modified ICP corresponding to Figure 4

14 12

RMS Error

10 8 6 4 2 0

0

5

10

15

20 25 no. of iterations

30

35

40

Figure 3.11: RMS Error for dierent sets of point clouds with unknown initial alignment

25

Figure 3.12: Sequence of images in an indoor environment

Figure 3.13: Front view of the indoor environment

26

Figure 3.14: Top view of the indoor environment

3.5

Frustum ICP

The non-overlapping points in the Source image are separated from the overlapping ones using the visibility frustum of the range sensor. This method of removal of points based on visibility frustum is called frustum culling [16] a nd combined with ICP algorithm it is called Frustum ICP [17].

3.5.1

Implementation Details

The two point clouds Target and Source are transformed using the data from odometry. Then points of the Source image that lie outside the visibility frustum of the Target point cloud are not used in ICP algorithm. the frustum, 4 vectors

 → − − → − → − a , b ,→ c, d

and vertical eld of view of the range sensor. the

4

In order to create

are computed based on the horizontal Then based on these vectors

normal vectors of the clipping planes, i.e. up, bottom, left and right are

computed and nally the points that lie inside the four clipping planes are found using a simple dot product. Figure 3.15 shows the visibility frustum of the range imaging sensor. 27

nup

nright

nleft

nbottom Figure 3.15: Visibility Frustum The normal vectors of the clipping planes are computed by

→ − n up

→ − n bottom

If the point lies inside the

→ − → b ×− a

=

=

(3.5)

→ − → d × −c

→ − n lef t

→ − − = → a × d

→ − n right

− −c × → = → b

4

(3.6)

(3.7)

(3.8)

clipping planes, than the dot product

x · nx + y · ny + z · nz




0

(3.10)

for all the normal vectors. If it lies outside then

x · nx + y · ny + z · nz

So if the dot product becomes greater than zero for even one of the clipping planes then it means the point lies outside the frustum. The dot product will always be greater than zero if the point is above the surface because



cos (θ) > 0 cos (θ) < 0



28

−90 < θ < 90 otherwise

(3.11)

3.5.2

Experimental Results

Figure 3.16 shows the Target points in red, the Source points that lie inside the frustum of the Target in light blue and the points that lie outside the frustum in dark blue color.

Figure 3.16: Target (red) and Source (blue) point clouds

Since the points of the Source were transformed already using the information from odometry before applying ICP so the points are already close enough to the Target points. Thus in this case the ICP algorithm does not show much eect, compared to the case when the odometric information was not used (cf. Section 3.4).

3.6

Estimating Rigid Body Transformation

We test two closed form solutions and a small angle approximation for nding transformation in every iteration of ICP algorithm. The closed form solutions are namely computing transformation using Singular Value Decomposition (SVD) and using Unit Quaternion (UQ). A comparison of these methods can be found in [24]. It is shown in [24] that the results of both the methods are similar in most cases. But for our data set it was found that in the absence of initial point correspondences, UQ based minimization converges sometimes in the correct convergence basin when SVD based minimization fails to converge. The third method does not give a closed form solution rather it solves the ICP algorithm by making small angle assumption.

This method proved to be the

most robust and required the least number of iterations. 29

3.6.1

Singular Value decomposition of a Matrix

This method was presented in 1987 by Arun, Huan and Blostein [18]. Two point sets

{pi }

and

{qi }

where

i = 1, 2, . . . N qi

where

R

=

is the rotation matrix,

t

are related by

Rpi + t + vi is the translation vector and

vi

is a noise

vector. Given

{pi }

and

rotation matrix

R

{qi }

it is possible to nd the least square solution of a

t which is based on the singular value {pi } and {qi } are considered as 3 × 1

and translation vector

decomposition of a

3×3

matrix. Here

vectors. It was proved in [18] that if

Γ2

N X

=

kqi0 − Rp0i k2

(3.12)

i=1

p0i , pi − cS ˆ which minimizes Γ2 in eq. 3.12. Here cS and Then we can use SVD to nd R cT are the centroids of the point sets {pi } and {qi } respectively. The translation where

qi0 , qi − cT

,

can be found using

ˆ S tˆ = cT − Rc

(3.13)

Proof can be found in [18, 19].

3.6.2

Computing Transformation Using Unit Quaternion

The transformation can also be calculated using unit quaternion. This method was presented in 1987 by Horn [20]. A quaternion can be thought of as a complex number with three dierent imaginary parts [21]. Summary of the equations given in [22] is reproduced here. First we compute the cross covariance matrix represented as unit quaternion.



(σxx + σyy + σzz ) (σyz + σzy )  (σ + σ ) (σ yz zy xx − σyy − σzz ) Σ=  (σzx + σxz ) (σxy + σyx ) (σxy + σyx ) (σyz + σzy )

 (σzx + σxz ) (σxy + σyx )  (σxy + σyx ) (σzx + σxz )   (−σxx + σyy − σzz ) (σyz + σzy ) (σzx + σxz ) (−σxx − σyy + σzz ) (3.14)

where

σxx =

N P

0 qx,i p0x,i ,σxy =

i=1

N P

0 qx,i , p0y,i

...

i=1

.

The rotation represented as unit quaternion

Q,

that minimizes eq.

3.1,

corresponds to the largest eigenvalue of the cross covariance matrix in eq. 3.14. Then convert the eigen vector corresponding to the largest eigen values into a matrix. This is the rotation matrix

R

equivalent to the quaternion. Method

for conversion from quaternion to matrix can be found in [23]. The translation can be found in a similar way as in the SVD method (cf. Eq. 3.13). 30

3.6.3

Computing Transformation by Approximation

This method does not provide a closed form solution, rather it assumes that all the three angles i.e yaw, pitch and roll are small enough that rst-order Taylor series approximation can be applied [25, 26], i.e.

sin (θ) = θ −

θ3 θ5 + − ... ≈ θ 3 5

(3.15)

cos (θ) = 1 −

θ2 θ4 + − ... ≈ 1 2 4

(3.16)

and

Computing the net rotation matrix by multiplying the individual rotation matrices around

x, y

and

z

axis gives

R = Rx · Ry · Rz

      =     

cos (θx ) cos (θy ) cos (θx ) sin (θy ) sin (θz ) − sin (θx ) cos (θz ) sin (θx ) cos (θy ) sin (θx ) sin (θy ) sin (θz ) + cos (θx ) cos (θz ) . . . −sin (θy ) cos (θy ) sin (θz )

cos (θx ) sin (θy ) cos (θz ) + sin (θx ) sin (θz ) sin (θx ) sin (θy ) cos (θz ) − cos (θx ) sin (θz ) cos (θy ) cos (θz )

...

           

(3.17) After applying the approximations of eq. 3.15 and 3.16 yields



1 R ≈  θx −θy

θy θz − θx θx θy θz + 1 θz

 θy + θx θz θx θy − θz  1

(3.18)

Since we are assuming small angles, so we make another assumption that multiplication of two or more angles will give a smaller term which can be neglected as well.



1 R ≈  θx −θy

−θx 1 θz

 θy −θz  1

(3.19)

Eq. 3.19 can be viewed as a sum of an Identity matrix and a skew-symmetric matrix.



0 R ≈ I(3×3) +  θx −θy 31

−θx 0 θz

 θy −θz  0

(3.20)

In order to minimize the error function in eq. 3.1 we need to minimize the term i.e.

(R · pi + t) − qi = 0

(3.21)

We can solve eq. 3.21 for rotation angles rst by substituting the value of translation vector

t

from eq. 3.13

(R · pi + cT − RcS ) − qi = 0

(3.22)

rearranging terms in eq. 3.22

R · (pi − cS ) − (qi − cT ) = 0

(3.23)

R · p0i − qi0 = 0

(3.24)

Substituting the value of

 0 qi,x 0  qi,y  0 qi,z 

R

from eq. 3.20 to eq. 3.24 yields

  p0i.x 0 =  p0i,y  +  θx p0i,z −θy 

−θx 0 θz

 0  pi.x θy −θz   p0i,y  0 p0i,z

(3.25)

Eq. 3.25 can be rewritten as

 0 qi,x 0  qi,y  0 qi,z 

  0 p0i.x  p0i,y  −  p0i,z p0i,z −p0i,y 

=

−p0i,z 0 p0i,x

  p0i,y θz −p0i,x   θy  θx 0

Eq. 3.26 can be used to solve for the yaw, pitch and roll angles

(3.26)

(θx , θy , θz ).

The translation can be found in a similar way as we did in the SVD method (cf. Eq. 3.13). Since its an approximate solution but as we are using it in every iteration of ICP algorithm, so in the limiting case, after ever step the dierence in the yaw, pitch and roll angles approaches to zero, hence the approximate solution will approach exactness.

32

Chapter 4 Discussion 4.1

FastSLAM Versus 6-D SLAM

Both FastSLAM and 6-D SLAM have their advantages and disadvantages. The type of algorithm one should choose depends on the application. If the task of the robot is to navigate through a path having dierent obstacles then high accuracy in robot and feature location will be required. FastSLAM should be used in this case. In cases when the task of the robot is to locate dierent objects in an environment and manipulate them in a desired way, then a highly dense representation of the object and the environment in which the object is located is required. In this case, 6-D SLAM should be used. Figure 4.1 shows maps built with FastSLAM (left) and 6-D SLAM (right) overlaid with the planes of the actual kitchen environment (cf.

Figure 2.3)

reconstructed manually. It can be seen that the map built with FastSLAM is more accurate but at the same time is sparse as well.

Figure 4.1: Maps built with FastSLAM (left) and 6-D-SLAM (right)

If we compare Figures 2.4 and 2.5 with Figures 3.5 and 3.6 we can see that the map built using FastSLAM is sparse but it does not have noisy values. Figure 4.2 shows a case where the ICP algorithm failed to converge correctly. Frustum ICP is used which has the maximum chances of correct convergence 33

because the points are transformed using the odometric data rst. Compared to gure 2.8 it can be seen that usage of FastSLAM is better in this case.

Figure 4.2: Reconstruction of table using Frustum ICP

34

Finally a comparison has been made by reconstructing the surface of 3D map of the kitchen built using FastSLAM and 6-D SLAM. Figure 4.3 shows the planes of the actual kitchen environment reconstructed manually.

Figure 4.4

shows the reconstructed surfaces of maps from FastSLAM (left) and 6-D SLAM (right).

Figure 4.3: Reconstructed planes of kitchen environment

Figure 4.4: Reconstructed surface of kitchen map built using FastSLAM (left) and 6-D SLAM (right)

35

Table 4.1 enlists a few pros and cons of FastSLAM and 6-D SLAM. FastSLAM

6-D SLAM

Models the pose of the robot and the

Does not use any noise model.

features as a Gaussian model.

more like an averaging technique.

Impractical to work without odomet-

Can work without odometric data as

ric data because it will require a lot

well.

of particles and a very large noise co-

ing into wrong convergence basin is

variance.

slightly increased.

It is

But the chances of converg-

Corrects the robot and the feature pose in a statistical way and gives the

Only corrects the robot pose.

best possible map. Error does not propagate in every step.

Error propagates in every step.

Table 4.1: Comparison of FastSLAM and 6-D SLAM

4.2

Conclusion and Future Work

Both FastSLAM and 6-D SLAM are implemented and tested under dierent real world scenarios. Information is processed at pixel level because of the usage of color and time-of-ight camera.

Maps are built which are then used by the

robot to navigate and perform manipulation tasks. In future information from color images will be exploited further. Preltering will be done to remove the noisy data from the time-of-ight camera. As discussed in [32], FastSLAM will be extended further to work for dynamic environments as well. In the past decade, a lot of variants of ICP algorithms have been introduced. A nice comparison of these variants can be found in [31]. These variants will also be tested and compared.

36

Bibliography [1]

R.C. Smith and P. Cheeseman.,

"On the representation and estima-

tion of spatial uncertainty", International Journal of Robotics Research, 5(4):5668, 1986. 1, 3 [2]

Michael M., Sebastian T., Daphne K., Ben W.,"FastSLAM: A Factored Solution to the Simultaneous Localization and Mapping Problem", In: AAAI National Conference on Articial Intelligence, Edmonton, Canada, 2002. 1, 3

[3]

Andreas Nütcher, 3D Robotic Mapping, The Simultaneous Localization and Mapping Problem with Six Degrees of Freedom, Springer Tracts in Advanced Robotics, Vol 52,2009. 1

[4]

P. Besl and N.D McKay, "A Method for Registration of 3-D Shapes", Proc. of IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol. 14, No. 2, pp.239-256, 1992. 1

[5]

Gordon

N.J.,

Salmond

D.J.

and

Smith

A.F.M.

"Novel

approach

to

nonlinear/non-Gaussian Bayesian state estimation", IEE-Proceedings-F, 140, 107113, 1993. 4 [6]

Doucet, A., Johansen, A.M., "A tutorial on particle ltering and smoothing: fteen years later", Technical report, Department of Statistics, University of British Columbia, December 2008. 4, 18

[7]

Herbert Bay, Andreas Ess, Tinne Tuytelaars, Luc Van Gool "SURF: Speeded Up Robust Features", Computer Vision and Image Understanding (CVIU), Vol. 110, No. 3, pp. 346359, 2008. 5

[8]

Michael M. and Sebastian T., FastSLAM, A Scalable Method for the Simultaneous Localization and Mapping in Robotics, Springer Tracts in Advanced Robotics, Vol 27, pp 71. 5, 7

[9]

Steven

M.,

"Planning

Algorithms",

http://planning.cs.uiuc.edu/node102.html [Accessed:

Available:

July 2010],

Cam-

bridge University Press, 2006. 15 [10] PJ Besl and HD McKay, A method for registration of 3-d shapes , IEEE Transactions on pattern analysis and machine intelligence, vol. 14, no. 2, pp. 239-256, 1992. 16 37

[11] Bali Y. Chen and G.Medioni, "Object Modeling by Registration of Multiple Range Images", Image and Vision Computing, Vol. 10, no. 3, pp. 145-155, April 1992. 16 [12] Nüchter A., Surmann H., Lingemann K., Hertzberg J., Thrun, S., "6D SLAM with an Application in autonomous mine mapping", In: Proceedings of the IEEE International Conference on Robotics and Automation, New Orleans, USA, pp. 19982003 (April 2004). 16 [13] G. Sharp, S. Lee, and D. Wehe, "ICP registration using invariant features", IEEE TRANSACTIONS ON PATTERN ANALYSIS AND MACHINE INTELLIGENCE, VOL. 24, NO. 1, pp. 90-102, (January 2002). 16 [14] A. E. Johnson and S. B. Kang,"Registration and integration of textured 3-D data", in NRC '97, Proceedings of the International Conference on Recent Advances in 3-D Digital Imaging and Modeling, (1997). 16 [15] Z.Zhang, "Iterative Point Matching for Registration of Free-Form Curves", Tech. Rep. RR-1658. 19 [16] Lengyel, E. "A fast cylinder-frustum intersection test", In Game programming gems. Boston, MA: Charles River Media, 2000. 27 [17] S. May, D. Droeschel, D. Holz, S. Fuchs, E. Malis, A. Nüchter, and J. Hertzberg. "Three-dimensional mapping with time-of-ight cameras," Journal of Field Robotics, Special Issue on Three-Dimensional Mapping, Part 2, 26(11-12):944945, (December 2009). 27 [18] Arun, K.S., Huang, T.S., Blostein, S.D.: Least square tting of two 3-d point sets, IEEE Transactions on Pattern Analysis and Machine Intelligence 9(5), 698700 (1987). 30 [19] Andreas Nütcher, 3D Robotic Mapping The Simultaneous Localization and Mapping Problem with Six Degrees of Freedom, Springer,pp 38-40 (2008). 30 [20] Horn, B.K.P.:

Closedform solution of absolute orientation using unit

quaternions, Journal of the Optical Society of America A 4(4),pp 629642 (1987). 30 [21] Hamilton, W.: On a new Species of Imaginary Quantities connected with a theory of Quaternions. In:

Proceedings of the Royal Irish Academy,

Dublin, Ireland (November 1843) 30 [22] Andreas Nütcher, 3D Robotic Mapping The Simultaneous Localization and Mapping Problem with Six Degrees of Freedom, Springer,pp 42-45 (2008). 30 [23] J.M.P. van Waveren, From Quaternion to Matrix and Back, Id Software, Inc, (2005). 30 [24] Lorusso A., Eggert D., Fisher R.: "A Comparison of Four Algorithms for Estimating 3-D Rigid Transformations", In: Proceedings of the 4th British Machine Vision Conference (BMVC 1995), Birmingham, England, pp. 237 246, (September 1995). 29 38

[25] Andreas Nütcher, "3D Robotic Mapping, The Simultaneous Localization and Mapping Problem with Six Degrees of Freedom", pp.50-52. 31 [26] Chuck S., Luis I., CSci 6971: Image Registration, Lecture 18, Available: http://www.cs.rpi.edu/academics/courses/spring04/imagereg/lecture18.ppt, [Accessed: July 2010]. 31 [27] Michael M., Sebastian T., Daphne K., Ben W.,"FastSLAM 2.0: An Improved Particle Filtering Algorithm for Simultaneous Localization and Mapping that Provably Converges", In: Proc. of the International Conf. on Articial Intelligence (IJCAI), pp. 1151-1153, (2003). 1, 3

FastSLAM, A Scalable Method for the Simultaneous Localization and Mapping in Robotics, Springer Tracts in Advanced

[28] Michael M. and Sebastian T.,

Robotics, Vol 27, pp 79-80. 3 [29] Peer N., Niko S., Peter P., "FastSLAM using SURF Features:

An E-

cient Implementation and Practical Experiences", In: Proc. of the International Conference on Intelligent and Autonomous Systems (IAV), Toulouse, France. 3 [30] Arnaud D., Nando de F., Kevin M., Stuart R., "Rao-Blackwellised Particle Filtering for Dynamic Bayesian Networks", In: Proc. of the 16th Conference on Uncertainty in Articial Intelligence, (2000). 4 [31] S. Rusinkiewicz and M. Levoy, "Ecient variants of the ICP algorithm", 3-D Digital Imaging and Modeling, 2001. Proceedings. Third International Conference on 3D Digital Imaging and Modeling, pp. 145152, 2001. 36

FastSLAM, A Scalable Method for the Simultaneous Localization and Mapping in Robotics, Springer Tracts in Advanced

[32] Michael M. and Sebastian T., Robotics, Vol 27, pp 90-95. 36

39

40

Appendix A List of External Libraries A.1

ANN: A Library for Approximate Nearest Neighbor Searching

ANN is a library written in C++ by David M. Mount and Sunil Arya, which supports data structures and algorithms for both exact and approximate nearest neighbor searching in arbitrarily high dimensions. This library is used to build up the kd-Tree which is used to perform searching in k dimensions. For detailed information and download go to

http://www.cs.umd.edu/~mount/ANN/

41

A.2

Bayesian Filtering Library

The Bayesian Filtering Library (BFL) is a C++ library provided by Open Robot Control Software (OROCOS). This library is used for matrix operations and implementation of probabilistic methods. For detailed information and download go to

http://www.orocos.org/bfl

A.2.1

Gaussian Distribution

Gaussian(const MatrixWrapper::ColumnVector &Mu, const MatrixWrapper::SymmetricMatrix &Sigma) Class representing Gaussian distribution. Parameters: Mu: Mean Vector of the Gaussian Sigma: Covariance Matrix of the Gaussian For further information go to

http://people.mech.kuleuven.be/~tdelaet/bfl_doc/doc/html/classBFL_ 1_1Gaussian.html#42213e80e2818ffddf49d6d1abd014a4 A.2.2

Resampling Function

bool SampleFrom (vector&list_samples, const unsigned int num_samples, int method = DEFAULT, void * args = NULL) This function is used for Resampling in FastSLAM algorithm. Parameters: list_samples: list of samples that will contain result of sampling num_samples: Number of Samples to be drawn (iid) method: Sampling method to be used For further information go to

http://people.mech.kuleuven.be/~tdelaet/bfl_doc/doc/html/classBFL_ 1_1Pdf.html#5a889a2c5f3829683cdc5c47f82016f1

42