We also need another matrix D which is landmark's portion of final measurement model, use of D will be explained later.

We also need another matrix D which is landmark's portion of final measurement model, use of D will be explained later.

Line 89:

Line 92:

Updated error covariance, P = (I – KH)P<sub>k+1</sub>

Updated error covariance, P = (I – KH)P<sub>k+1</sub>

Where I is the identity matrix.

Where I is the identity matrix.

+

'''

'''

−

==

+

==Java library for SLAM ==

−

Java library for SLAM ==

+

'''

'''

I used kalman filter java library, javaslam[[http://ai.stanford.edu/~paskin/slam/tjtf-java.zip]]. This library provides functions for motion update and measurement update, I need just need to build the matrics and plug them in the functions. Steps for using javaslam are explained below:

I used kalman filter java library, javaslam[[http://ai.stanford.edu/~paskin/slam/tjtf-java.zip]]. This library provides functions for motion update and measurement update, I need just need to build the matrics and plug them in the functions. Steps for using javaslam are explained below:

Line 130:

Line 133:

−

Evaluation is done using 11 landmarks and straight line path.

+

Evaluation is done using 8 landmarks and straight line path.

Result is shown in figure below.

Result is shown in figure below.

Line 142:

Line 145:

EKF Slam works well when the following situation holds:

EKF Slam works well when the following situation holds:

−

1. Initial estimations of the robot state and error covariance are almost correct. If difference between actual robot position and initial estimation is high, EKF fails to predict correct next state.

+

1. Initial estimations of the robot state and error covariance are almost correct. If difference between actual robot position and initial estimation is high, EKF does not converge.

+

+

2. Error model and robot motion model are almost linear. EKF-SLAM does not converge where large angular error is present.

+

+

3. Data association is almost perfect.

−

2. Error model and robot motion model are almost linear. EKF-SLAM does not converge if large angular error is present

−

'''

== Code: ==

== Code: ==

−

'''

Code can be downloaded from [https://docs.google.com/leaf?id=0ByOY6vHGMB8PZjk1ZDJlODQtMWZiYS00NDI1LWEwNmMtMDUwNmJmZmY3YzJm&hl=en here]

Code can be downloaded from [https://docs.google.com/leaf?id=0ByOY6vHGMB8PZjk1ZDJlODQtMWZiYS00NDI1LWEwNmMtMDUwNmJmZmY3YzJm&hl=en here]

Revision as of 02:31, 21 March 2010

Contents

Introduction:

In the pursuit of constructing truly autonomous mobile robots, the simultaneous localization and mapping problem is considered as one of the most important problems. Simultaneous localization and mapping (SLAM) is the process by which a mobile robot can build a map of an unknown environment and at the same time use this map to compute its location. SLAM is considered as a chicken-egg problem as to identify a robots location the map is needed which the robot is still building. One classical solution to the
SLAM problem is the EKF-SLAM method. EKF-SLAM uses Kalman filter, which is an efficient recursive filter that estimates the internal state of a linear dynamic system from a series of noisy measurements. Goal of this project is to implement and simulate the EKF-SLAM method for solving the SLAM problem.

How the project works:

Overview of the project is shown here:

Detailed process is explained below:

1. Observe and associate landmarks:

For simplicity, I assumed true data association. That means whenever the robot sees a landmark it knows which landmark is this. Each landmark has id. Landmarks are stored in an array. If landmark with id n is not in the landmark array, it is added to the array.

2. Predict next state based on odometry:

The robots state is defined as X = [ x y theta]

Here, x = x component of robot’s position

y= y component of robot’s position

theta = robot's orientation

The robot’s initial uncertainty is defined as P, which is a 3X3 diagonal matrix.
The estimation of next state could be predicted using to following equation:

Java library for SLAM

I used kalman filter java library, javaslam[[1]]. This library provides functions for motion update and measurement update, I need just need to build the matrics and plug them in the functions. Steps for using javaslam are explained below: