• Stars
    star
    155
  • Rank 240,864 (Top 5 %)
  • Language
    C++
  • Created over 7 years ago
  • Updated about 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Object (e.g Pedestrian, biker, vehicles) tracking by Unscented Kalman Filter (UKF), with fused data from both lidar and radar sensors.

Object Tracking with Unscented Kalman Filter

Objective

Utilize sensor data from both LIDAR and RADAR measurements for object (e.g. pedestrian, vehicles, or other moving objects) tracking with the Unscented Kalman Filter.

Unscented Kalman Filter example

Kalman Filters variances

All Kalman filters have the same mains steps: 1. Initialization, 2. Prediction, 3. Update. A Standard Kalman Filter (KF) can only handle linear equations. Both the Extended Kalman Filter (EKF) and the Unscented Kalman Filter allow you to use non-linear equations; the difference between EKF and UKF is how they handle non-linear equations: Extended Kalman Filter uses the Jacobian matrix to linearize non-linear functions; Unscented Kalman Filter, on the other hand, does not need to linearize non-linear functions, insteadly, the unscented Kalman filter takes representative points from a Gaussian distribution.

Unscented Kalman Filter VS Extended Kalman Filter

Table 1: Accuracy comparison in RMSE by using EKF and UKF with both lidar and radar measurements. The lidar and radar measurements are included in the txt file under the data folder.

state UKF EKF
px 0.0640299 0.0972256
py 0.0832734 0.0853761
vx 0.330315 0.450855
vy 0.212456 0.450855

Table 2: Accuracy comparison in RMSE by UKF with different sensor measurements.

state lidar and radar only lidar only radar
px 0.0640299 0.168267 0.203744
py 0.0832734 0.146901 0.250427
vx 0.330315 0.613026 0.450143
vy 0.212456 0.252216 0.249284

Conclusions from aboves:

  • From Table 1, we can see the UKF outperform EKF in estimation of all states.
  • From Table 2, we can see that ultizing both lidar and radar measurements improves the tracking results.

Motion Model: CTRV model

Unscented Kalman Filter roadmap


Code & Files

1. Dependencies & environment

2. My project files

(Note: the hyperlinks only works if you are on the homepage of this GitHub reop, and if you are viewing it in "github.io" you can be redirected by clicking the View the Project on GitHub on the top)

  • CMakeLists.txt is the cmake file.

  • data folder contains test lidar and radar measurements.

  • Docs folder contains docments which describe the data.

  • src folder contains the source code.

3. Code Style

4. How to run the code

  1. Clone this repo.
  2. Make a build directory: mkdir build && cd build
  3. Compile: cmake .. && make
    • On windows, you may need to run: cmake .. -G "Unix Makefiles" && make
  4. Run it by the following commands:
    • ./ExtendedKF ../data/obj_pose-laser-radar-synthetic-input.txt ./output.txt

5. Release History

  • 0.1.1

    • First proper release
    • Update documentation
    • Date 25 May 2017
  • 0.1.0

    • Initiate the repo
    • Date 22 May 2017

More Repositories

1

tracking-with-Extended-Kalman-Filter

Object (e.g Pedestrian, vehicles) tracking by Extended Kalman Filter (EKF), with fused data from both lidar and radar sensors.
C++
709
star
2

vehicle-detection

Created vehicle detection pipeline with two approaches: (1) deep neural networks (YOLO framework) and (2) support vector machines ( OpenCV + HOG).
Python
622
star
3

driving-lane-departure-warning

Built a real-time lane departure warning system with a monocular camera, using OpenCV.
Python
211
star
4

Model-Predictive-Control

This project is to use Model Predictive Control (MPC) to drive a car in a game simulator. The server provides reference waypoints (yellow line in the demo video) via websocket, and we use MPC to compute steering and throttle commands to drive the car. The solution must be robust to 100ms latency, since it might encounter in real-world application.
C++
152
star
5

semantic_segmentation

Semantically segment the road in the given image.
Python
105
star
6

traffic-light-detector

Detect traffic lights and classify the state of them, then give the commands "go" or "stop".
Python
62
star
7

PID-controller

Use a PID controller to control the steering angle and throttle for driving a car in a car game simulator.
C++
56
star
8

camera-pose-estimation

Given a map data (image + lidar), estimate the 6 DoF camera pose of the query image.
MATLAB
28
star
9

path_planning

Implement a simple real-time path planner in C++ to navigate a car around a simulated highway scenario
C++
21
star
10

kidnapped-vehicle

Implemented a C++ particle filter for real-time vehicle localization with only current visual observations and a map.
C++
19
star
11

traffic-light-classifier

A simple network to classifier the states of the traffic lights.
Python
16
star
12

DrivingLaneDetection

Detected highway lane lines on a video stream. Used OpencV image analysis techniques to identify lines, including Hough Transforms and Canny edge detection.
Jupyter Notebook
13
star
13

driving-behavioral-cloning

Built and trained a convolutional neural network for end-to-end driving in a simulator, using TensorFlow and Keras.
Python
11
star
14

traffic-sign-recognition

Built and trained a deep neural network to classify traffic signs, using TensorFlow.
Jupyter Notebook
9
star
15

ResNet_MobileNet_InceptionV3

An example to run ResNet, MobileNet and InceptionV3 with Keras and Imagenet weights
Python
1
star
16

rental-bike

Predict the number of rental bikes should be placed based on the environmental conditions.
Jupyter Notebook
1
star
17

calculator

C++ based Calculation Engines which can do multiplication and division with numbers, and it is implemented with template and factory method.
HTML
1
star