GithubHelp home page GithubHelp logo

lucascoelhof / carnd-extended-kalman-filter-project Goto Github PK

View Code? Open in Web Editor NEW

This project forked from udacity/carnd-extended-kalman-filter-project

0.0 2.0 0.0 2.64 MB

An Extended Kalman Filter Project implemented during my Self-Driving Car Nanodegree

License: MIT License

CMake 0.22% Shell 0.05% C++ 98.51% C 1.21%

carnd-extended-kalman-filter-project's Introduction

Extended Kalman Filter Project

Udacity Self-Driving Car Engineer Nanodegree Program

In this project, I implemented a Kalman Filter to estimate the state of a moving car. This car has two sensors, a Laser and a Radar, and both measurements are noisy. The objective is to use a Kalman Filter to combine the two measurements and have an improved measurement that is more accurate.

Implementation

The implementation involved creating the equations for a Kalman Filter and a Extended Kalman filter (available here). The setup of the Kalman Filter, initialization, prediction step and update step can be found here. There is also a file with common tools used on the code here.

To comply with the requirement of the project, I tried to make the code as efficient as possible, and also avoid type conversions. I replaced all float references to double, to avoid precision loss between calculations. In my experimentation, I noticed that this created a lot of impact, making my error reduce 50% during validation phase.

Results

Here you can check out a video of the implementation:

Self driving

The red and blue points are radar and laser measurements, and the green points are the output of the Kalman filter. On the right, we can see the error values for the filter. On final time step, we can see that the error is below the error requirements.

Try it yourself

In my case, I found easier to use a Ubuntu virtual machine that I already had with the simulator running on Windows. So I had to set up a port forwarding. Here is an article about that.

This project involves the Term 2 Simulator which can be downloaded here.

This repository includes two files that can be used to set up and install uWebSocketIO for either Linux or Mac systems. For windows you can use either Docker, VMware, or even Windows 10 Bash on Ubuntu to install uWebSocketIO. Please see the uWebSocketIO Starter Guide page in the classroom within the EKF Project lesson for the required version and installation scripts.

Once the install for uWebSocketIO is complete, the main program can be built and run by doing the following from the project top directory.

  1. mkdir build
  2. cd build
  3. cmake ..
  4. make
  5. ./ExtendedKF

Other Important Dependencies

carnd-extended-kalman-filter-project's People

Contributors

alexxucui avatar amintahmasbi avatar andrewpaster avatar awbrown90 avatar baumanab avatar brandonhe avatar cameronwp avatar citlaligm avatar danziger avatar deniskrut avatar domluna avatar dwillmer avatar ianboyanzhang avatar kerrickstaley avatar kylesf avatar lucascoelhof avatar mleonardallen avatar mvirgo avatar nateous avatar swwelch avatar tsekityam avatar vatavua avatar wolfgangsteiner avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.