GithubHelp home page GithubHelp logo

kfsensorfusion's Introduction

KFSensorFusion

About The Project

The given repository contains solution for the LiDAR - RADAR Fusion problem. Where we are provided with lidar and radar measurements of a detected vehcile and the task is to get a fused trajectory with minimum RMS error.

Built With

This project was built with:

  • python v3.8.12
  • gcc 4.9

Getting Started

Clone the repository into a local machine and enter the KFSensorFusion directory using:

git clone https://github.com/vardeep-sandhu/KFSensorFusion.git
cd KFSensorFusion/

Get data by running the following commands:

wget --no-check-certificate 'https://docs.google.com/uc?export=download&id=1M3VRzUxoraUBWCoXprKKfcJAzp8awlh_' -O data.zip
unzip data.zip
rm data.zip

Prerequisites

Since we are using external library Eigen for our C++ implementation, so for smooth running at different machines we will build a docker container. You can install docker and docker-compose on your local machine using the link and link respectively and make sure you follow these steps to run Docker with root privilidges.

Additionally, you need to set $DATA variable in your bashrc to where the data is placed in your local machine. This can be done by:

export DATA=/path/to/dataset

That's all you need!

Instructions to run

To build the docker container run:

make start

This command will build the docker container.

You can test if all the appropriate packages of C++ and Python are installed by running:

make test

Now to run the docker container use the command:

make run

If everything goes accordingly then you will be taken to the Docker container. There are additionally some more packages that need to be installed. This is done by running:

bash run.sh

After this everything is set and we are ready to run the actual program. Here simply run the command:

python3 main.py -b [python, cpp]

Here -b flag signifies the backend that can be choosen for the task. There are two options python which invokes the kalmanfilter.py script or cpp which invokes the library in the build/ directory. Thus, the results are generated and the output trajectory is saved in the local directory. Here is the sample of the generated trajectory.

Results

One of the main drawback of Kalman Filter algorithm is it's sensitivity to initialization. Kalman Filters are quite sensitive to the initial values of their internal variables, such as the covariance matrix. If these initial values are not set correctly, the Kalman Filter may produce poor estimates.

After experimenting with different values of process and measurement noise we settled with the values that we used in the implementation. This lead to an Average Displacement Error of 0.2294 when we quantitatively compared the perdicted and the GT trajectory.

Qualitatively, we show in the figure below the comparison of the perdicted trajectory and the GT trajectory (dotted red).

kfsensorfusion's People

Contributors

vardeep-sandhu avatar

Stargazers

 avatar

Watchers

 avatar

kfsensorfusion's Issues

Issues in the code

I have a few questions, you can answer them in the interview as well.

  1. Why haven't you included dt (time difference) in your prediction step?
  2. Are you sure your state transition matrix is true?
  3. You have included radar measurements to initialize the filter, and not after that in the entire process. Why is that?
  4. Can you provide some comments on the noise covariance matrix?

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.