All Projects → cggos → lidar_radar_fusion_ekf_ukf

cggos / lidar_radar_fusion_ekf_ukf

Licence: other
Lidar and Radar Fusion with EKF and UKF

Programming Languages

Jupyter Notebook
11667 projects
C++
36643 projects - #6 most used programming language

Projects that are alternatives of or similar to lidar radar fusion ekf ukf

sensor-fusion
Filters: KF, EKF, UKF || Process Models: CV, CTRV || Measurement Models: Radar, Lidar
Stars: ✭ 96 (+405.26%)
Mutual labels:  ekf, kalman-filter
avatar-facial-landmark-detection
A method about optimizing the facial landmark detection based on Kalman Filter, Optical Flow and Dlib
Stars: ✭ 87 (+357.89%)
Mutual labels:  kalman-filter
ai for robotics
Visualizations of algorithms covered in Sebastian Thrun's excellent Artificial Intelligence for Robotics course on Udacity.
Stars: ✭ 125 (+557.89%)
Mutual labels:  kalman-filter
Face-Detection-and-Tracking
Face Detection and tracking using CamShift, Kalman Filter, Optical Flow
Stars: ✭ 30 (+57.89%)
Mutual labels:  kalman-filter
cpp filter
Kalman filter using C++ and Manif
Stars: ✭ 19 (+0%)
Mutual labels:  kalman-filter
CarND-Extended-Kalman-Filter-P6
Self Driving Car Project 6 - Sensor Fusion(Extended Kalman Filter)
Stars: ✭ 24 (+26.32%)
Mutual labels:  kalman-filter
coursera robotics
Contains coursera robotics specialization assignment codes
Stars: ✭ 65 (+242.11%)
Mutual labels:  kalman-filter
KalmanFlow
A simple Kalman Filter built in TensorFlow
Stars: ✭ 22 (+15.79%)
Mutual labels:  kalman-filter
Embedded UKF Library
A compact Unscented Kalman Filter (UKF) library for Teensy4/Arduino system (or any real time embedded system in general)
Stars: ✭ 31 (+63.16%)
Mutual labels:  kalman-filter
robot-localization
A small 2D robot localization game using Kalman filtering written in C++11
Stars: ✭ 37 (+94.74%)
Mutual labels:  kalman-filter
pyUKF
Unscented kalman filter (UKF) library in python that supports multiple measurement updates
Stars: ✭ 52 (+173.68%)
Mutual labels:  kalman-filter
microprediction
If you can measure it, consider it predicted
Stars: ✭ 158 (+731.58%)
Mutual labels:  kalman-filter
go-estimate
State estimation and filtering algorithms in Go
Stars: ✭ 98 (+415.79%)
Mutual labels:  kalman-filter
ESP32 IMU BARO GPS VARIO
GPS altimeter/variometer with LCD display, routes with waypoints, data/gps track logging, bluetooth NMEA sentence transmission, wifi AP + webpage configuration
Stars: ✭ 72 (+278.95%)
Mutual labels:  kalman-filter
Face-Detection-and-Tracking
Computer Vision model to detect face in the first frame of a video and to continue tracking it in the rest of the video. This is implemented in OpenCV 3.3.0 and Python 2.7
Stars: ✭ 24 (+26.32%)
Mutual labels:  kalman-filter
adaptive-filters
My collection of implementations of adaptive filters.
Stars: ✭ 32 (+68.42%)
Mutual labels:  kalman-filter
Kalman
Implement Kalman filter for your Arduino projects
Stars: ✭ 66 (+247.37%)
Mutual labels:  kalman-filter
vision-based estimations
Vision-based Robot 3D Pose and Velocities Estimations
Stars: ✭ 32 (+68.42%)
Mutual labels:  kalman-filter
PPG
Code to estimate HR from PPG signals using Subspace Decomposition and Kalman filter for the dataset of 22 PPG recordings provided for the 2015 IEEE Signal Processing Cup (SP Cup) competition. The traces are stored in folder 'DATABASE'. Please cite this publication when referencing this material: "Measuring Heart Rate During Physical Exercise by …
Stars: ✭ 43 (+126.32%)
Mutual labels:  kalman-filter
fusion-ekf
An extended Kalman Filter implementation in C++ for fusing lidar and radar sensor measurements.
Stars: ✭ 113 (+494.74%)
Mutual labels:  kalman-filter

Lidar & Radar Fusion with EKF and UKF


[TOC]

Introduction

This is an Kalman Filter (EKF & UKF) implementation in C++ for fusing lidar and radar sensor measurements.

In this case, we have two 'noisy' sensors:

  • A lidar sensor that measures our position in cartesian-coordinates (x, y)
  • A radar sensor that measures our position and relative velocity (the velocity within line of sight) in polar coordinates (rho, phi, drho)

EKF

We want to predict our position, and how fast we are going in what direction at any point in time:

  • the position and velocity of the system in cartesian coordinates: (x, y, vx, vy)

  • We are assuming a constant velocity model (CV) for this particular system

Note:

  • The measurement covariance matrices lidar_R and radar_R are hard-coded in src/fusionekf.cpp.
  • The initial state covariance matrix P is hard-coded in src/fusionekf.cpp.
  • The process 2d noise ax and ay used to update the process covariance matrix Q is hard-coded in include/fusionekf.h.

UKF

  • In essence we want to get: the position of the system in cartesian coordinates, the velocity magnitude, the yaw angle in radians, and yaw rate in radians per second (x, y, v, yaw, yawrate)

  • We are assuming a constant turn/yaw rate and velocity magnitude model (CRTV) for this particular system

  • Compared with an EKF with a constant velocity model, RMSE should be lower for the UKF especially for velocity. The CTRV model is more precise than a constant velocity model. And UKF is also known for handling non-linear equations better than EKF.

Build

make build & cd build
cmake .. & make -j3

Run

EKF

  • run with datafile (data-1, data-2)

    ./extended_kf ../data/data-1.txt output.txt
  • Please use the following format for your input file

    L(for lidar) m_x m_y t r_x r_y r_vx r_vy
    R(for radar) m_rho m_phi m_drho t r_px r_py r_vx r_vy
    
    Where:
    (m_x, m_y) - measurements by the lidar
    (m_rho, m_phi, m_drho) - measurements by the radar in polar coordinates
    (t) - timestamp in unix/epoch time the measurements were taken
    (r_x, r_y, r_vx, r_vy) - the real ground truth state of the system
    
    Example:
    R 8.60363 0.0290616 -2.99903  1477010443399637  8.6 0.25  -3.00029  0
    L 8.45  0.25  1477010443349642  8.45  0.25  -3.00027  0
    
  • The program outputs the predictions in the following format on the output file path you specified

    p_x p_y p_vx p_vy m_x m_y r_px r_py r_vx r_vy
    
    Where:
    (p_x, p_y, p_vx, p_vy) - the predicted state of the system by FusionEKF
    (m_x, m_y) - the position value as measured by the sensor converted to cartesian coordinates
    (r_x, r_y, r_vx, r_vy) - the real ground truth state of the system
    
    Example:
    4.53271 0.279 -0.842172 53.1339 4.29136 0.215312  2.28434 0.226323
    43.2222 2.65959 0.931181  23.2469 4.29136 0.215312  2.28434 0.226323
    
  • draw the position data from output.txt

    • input data-1.txt

    • input data-2.txt

UKF

  • run with datafile (data-3)

    ./unscented_kf ../data/data-3.txt out-3.txt
  • Please use the following format for your input file

    L(for lidar) m_x m_y t r_x r_y r_vx r_vy, r_yaw, r_yawrate
    R(for radar) m_rho m_phi m_drho t r_px r_py r_vx r_vy, r_yaw, r_yawrate
    
    Where:
    (m_x, m_y) - measurements by the lidar
    (m_rho, m_phi, m_drho) - measurements by the radar in polar coordinates
    (t) - timestamp in unix/epoch time the measurements were taken
    (r_x, r_y, r_vx, r_vy, r_yaw, r_yawrate) - the real ground truth state of the system
    
    Example:
    L 3.122427e-01  5.803398e-01  1477010443000000  6.000000e-01  6.000000e-01  5.199937e+00  0 0 6.911322e-03
    R 1.014892e+00  5.543292e-01  4.892807e+00  1477010443050000  8.599968e-01  6.000449e-01  5.199747e+00  1.796856e-03  3.455661e-04  1.382155e-02
    
  • The program outputs the predictions in the following format on the output file path you specified

    time_stamp  px_state  py_state  v_state yaw_angle_state yaw_rate_state  sensor_type NIS px_measured py_measured px_ground_truth py_ground_truth vx_ground_truth vy_ground_truth
    1477010443000000  0.312243  0.58034 0 0 0 lidar 2.32384e-319  0.312243  0.58034 0.6 0.6 0 0
    1477010443050000  0.735335  0.629467  7.20389 9.78669e-18 5.42626e-17 radar 74.6701 0.862916  0.534212  0.859997  0.600045  0.000345533 4.77611e-06
    ...
    

Ref

EKF

UKF

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].