Thank you for signing up for the course! We look forward to working with you and hearing your feedback in our forums.

**Need help getting started?**

- Find an answer to your question in the Udacity FAQ
- Learn about different parts of the Classroom in Udacity Introduction

Contents

- CS373 Office Hours with Sebastian Thrun
- Kalman Filter Matrices - extra explanations and study materials
- CS373 Visualizing Twiddle

You can download Supplemental Materials, Lesson Videos, and Transcripts from Downloadables (in the bottom-right corner of the Classroom) or from the Dashboard (the first option on the navigation bar on the left hand side).

Lesson tests for homework on GitHub

Welcome to AI for Robotics! In this lesson you'll learn about the problem of robot sensation and movement and probabilistic techniques to account for inaccuracies in both. You'll also brush up a bit on the basics of probability, such as Bayes' theorem and the law of total expectation, and start programming a robot to find its position in a simple 2-D world.

In this lesson you'll learn about a powerful method of localization called the Kalman filter. It uses sequential matrix operations to predict the position and velocity of a robot whose motion is linear but has unknown position and velocity. You'll also see the connections between the Kalman filter and the probabilistic concepts of the Gaussian function and covariance.

In this lesson you'll learn a different technique used to localize robots with uncertain position called the particle filter. In this technique, different possible positions of the robot (the "particles") are randomly generated and then given a score based on how compatible these positions are with the robot's observed measurements. The particles then are reselected with a probability corresponding to their score, and this process (after many iterations) causes particles to cluster around a position that is highly likely to be the robot's actual position. You'll program your own particle filter in this lesson and learn different methods for reselecting high-scoring particles.

In this lesson you'll switch gears from the problem of localization to the problem of planning a robot's motion. Given different costs associated with different paths to a goal, how does the robot choose the lowest-cost path? You'll learn different path-planning strategies such as the A* search and dynamic programming.

In this lesson, you'll build on the motion planning you learn in Lesson 4 to develop a more practical method of path-planning. In the real world, a robot cannot turn on a dime: it has to take smooth turns. First, you'll learn to use gradient descent to take a rigid path and smooth it into a more realistic path. Then you'll learn to use a PID controller to allow the robot to follow that path and make smooth corrections if it deviates from it.

In this last lesson, you'll review the concepts from the first five lessons, and then you'll learn a method for Simultaneous Localization And Mapping (SLAM): solving the problem of localizing a robot in a world whose features are not known. You'll learn the GraphSLAM algorithm for doing this in a 1-dimensional, and then program a 2-dimensional version for yourself!

In this project, you'll write a program to localize and then catch a robot that is running rampant in a circular path: the catch is that the robot's self-measurements are subject to noise, so it's not as easy to find the robot as it might seem!