forked from udacity/CarND-Unscented-Kalman-Filter-Project
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit d218088
Showing
336 changed files
with
82,849 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
# silly macOS | ||
.DS_Store | ||
|
||
# build files | ||
build/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
project(UnscentedKF) | ||
|
||
cmake_minimum_required (VERSION 3.5) | ||
|
||
add_definitions(-std=c++0x) | ||
|
||
set(sources | ||
src/ukf.cpp | ||
src/main.cpp) | ||
|
||
add_executable(UnscentedKF ${sources}) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,29 @@ | ||
Data Flow: | ||
1) The measuremennt processor/matlab simulator is generating the FUSION .txt file: | ||
"data/obj_pose-laser-radar-synthetic-ukf-input.txt"; | ||
OR | ||
"../matlab_examples/obj_pose-laser-radar-synthetic-ukf-input.txt"; | ||
|
||
The Input file format is: | ||
#L(for laser) meas_px meas_py timestamp gt_px gt_py gt_vx gt_vy | ||
#R(for radar) meas_rho meas_phi meas_rho_dot timestamp gt_px gt_py gt_vx gt_vy | ||
|
||
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 | ||
|
||
2) The EKF Algorithm reads form file reads all the lines and generates measurement structures | ||
3) The MeasurementProcessor() is called with individual measurements (one by one). The results are saved | ||
(Attention: no file processing rutines are used inside MeasurementProcessor() all the file processing rutines are in the main function | ||
So the data read/wirte is decoupled from the algorithm | ||
4) The results are saved in an output file: | ||
"data/obj_pose-laser-radar-ekf-output.txt" | ||
|
||
Output file format: | ||
est_px est_py est_vx est_vy meas_px meas_py gt_px gt_py gt_vx gt_vy | ||
|
||
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 | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
#L(for laser) meas_px meas_py timestamp gt_px gt_py gt_vx gt_vy | ||
#R(for radar) meas_rho meas_phi meas_rho_dot timestamp gt_px gt_py gt_vx gt_vy | ||
----------------------------- | ||
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 | ||
|
||
#Output file format: | ||
est_px est_py est_vx est_vy meas_px meas_py gt_px gt_py gt_vx gt_vy |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
# Unscented Kalman Filter Project Starter Code | ||
Self-Driving Car Engineer Nanodegree Program | ||
|
||
--- | ||
|
||
## Dependencies | ||
|
||
* cmake >= v3.5 | ||
* make >= v4.1 | ||
* gcc/g++ >= v5.4 | ||
|
||
## Basic Build Instructions | ||
|
||
1. Clone this repo. | ||
2. Make a build directory: `mkdir build && cd build` | ||
3. Compile: `cmake .. && make` | ||
4. Run it: `./UnscentedKF path/to/input.txt path/to/output.txt`. You can find | ||
some sample inputs in 'data/'. | ||
- eg. `./UnscentedKF ../data/sample-laser-radar-measurement-data-1.txt output.txt` | ||
|
||
## Editor Settings | ||
|
||
We've purposefully kept editor configuration files out of this repo in order to | ||
keep it as simple and environment agnostic as possible. However, we recommend | ||
using the following settings: | ||
|
||
* indent using spaces | ||
* set tab width to 2 spaces (keeps the matrices in source code aligned) | ||
|
||
## Code Style | ||
|
||
Please stick to [Google's C++ style guide](https://google.github.io/styleguide/cppguide.html) as much as possible. | ||
|
||
## Generating Additional Data | ||
|
||
This is optional! | ||
|
||
If you'd like to generate your own radar and lidar data, see the | ||
[utilities repo](https://github.com/udacity/CarND-Mercedes-SF-Utilities) for | ||
Matlab scripts that can generate additional data. | ||
|
||
## Project Instructions and Rubric | ||
|
||
This information is only accessible by people who are already enrolled in Term 2 | ||
of CarND. If you are enrolled, see [the project page](https://classroom.udacity.com/nanodegrees/nd013/parts/40f38239-66b6-46ec-ae68-03afd8a601c8/modules/0949fca6-b379-42af-a919-ee50aa304e6a/lessons/c3eb3583-17b2-4d83-abf7-d852ae1b9fff/concepts/4d0420af-0527-4c9f-a5cd-56ee0fe4f09e) | ||
for instructions and the project rubric. |
Large diffs are not rendered by default.
Oops, something went wrong.
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
|
||
PROJECT DESCRIPTION | ||
The project "unscented Kalman filter" is based on the same structure as the extended Kalman filter. | ||
It uses a main file that calls a function called ProcessMeasurement. Anything important happens in this function. The function is part of the class ukf. | ||
|
||
|
||
C++ QUIZZES | ||
The quizzes including the solutions of them are included in the file ukf.cpp. They are individual functions, which don't need any special environment. The solution of the quizzes are given here and also the expected results. | ||
The quizzes can easily evaluated: if every value of the student solution (vectors and matrices) differs less than 0.001 from the original solution, the quizz is passed, otherwise failed. | ||
|
||
|
||
|
||
PROJECT PASSING CRITERIA | ||
There are several criteria that must be fulfilled to pass the project. | ||
|
||
- The overall processing chain (prediction, laser update or radar update depending on measurement type) must be correct. | ||
- The student is not allowed to use values from the future to reason about the current state. | ||
- It must be possible to run the project in three different modes: considering laser only, with considering radar only, or with using both sensors. | ||
- For every mode, the overall RMSE (2d position only) may not be more than 10% increased to what the original solution is able to reach (this number depends on the individual measurement sequence) | ||
- The RMSE of laser AND radar must be lower than radar only or laser only | ||
- The NIS of radar measurements must be between 0.35 and 7.81 in at least 80% of all radar update steps. | ||
|
||
|
||
PROJECT GRADING | ||
- I recommend a hall of fame for the lowest overall RMSE using laser AND radar. | ||
- I recommend to ask students to improve the initialization procedure and evaluate the RMSE during the first 20 steps. | ||
|
||
|
||
|
||
|
||
|
||
|
||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
#ifndef EIGEN_ARRAY_MODULE_H | ||
#define EIGEN_ARRAY_MODULE_H | ||
|
||
// include Core first to handle Eigen2 support macros | ||
#include "Core" | ||
|
||
#ifndef EIGEN2_SUPPORT | ||
#error The Eigen/Array header does no longer exist in Eigen3. All that functionality has moved to Eigen/Core. | ||
#endif | ||
|
||
#endif // EIGEN_ARRAY_MODULE_H |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
include(RegexUtils) | ||
test_escape_string_as_regex() | ||
|
||
file(GLOB Eigen_directory_files "*") | ||
|
||
escape_string_as_regex(ESCAPED_CMAKE_CURRENT_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}") | ||
|
||
foreach(f ${Eigen_directory_files}) | ||
if(NOT f MATCHES "\\.txt" AND NOT f MATCHES "${ESCAPED_CMAKE_CURRENT_SOURCE_DIR}/[.].+" AND NOT f MATCHES "${ESCAPED_CMAKE_CURRENT_SOURCE_DIR}/src") | ||
list(APPEND Eigen_directory_files_to_install ${f}) | ||
endif() | ||
endforeach(f ${Eigen_directory_files}) | ||
|
||
install(FILES | ||
${Eigen_directory_files_to_install} | ||
DESTINATION ${INCLUDE_INSTALL_DIR}/Eigen COMPONENT Devel | ||
) | ||
|
||
add_subdirectory(src) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
#ifndef EIGEN_CHOLESKY_MODULE_H | ||
#define EIGEN_CHOLESKY_MODULE_H | ||
|
||
#include "Core" | ||
|
||
#include "src/Core/util/DisableStupidWarnings.h" | ||
|
||
/** \defgroup Cholesky_Module Cholesky module | ||
* | ||
* | ||
* | ||
* This module provides two variants of the Cholesky decomposition for selfadjoint (hermitian) matrices. | ||
* Those decompositions are accessible via the following MatrixBase methods: | ||
* - MatrixBase::llt(), | ||
* - MatrixBase::ldlt() | ||
* | ||
* \code | ||
* #include <Eigen/Cholesky> | ||
* \endcode | ||
*/ | ||
|
||
#include "src/misc/Solve.h" | ||
#include "src/Cholesky/LLT.h" | ||
#include "src/Cholesky/LDLT.h" | ||
#ifdef EIGEN_USE_LAPACKE | ||
#include "src/Cholesky/LLT_MKL.h" | ||
#endif | ||
|
||
#include "src/Core/util/ReenableStupidWarnings.h" | ||
|
||
#endif // EIGEN_CHOLESKY_MODULE_H | ||
/* vim: set filetype=cpp et sw=2 ts=2 ai: */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
#ifndef EIGEN_CHOLMODSUPPORT_MODULE_H | ||
#define EIGEN_CHOLMODSUPPORT_MODULE_H | ||
|
||
#include "SparseCore" | ||
|
||
#include "src/Core/util/DisableStupidWarnings.h" | ||
|
||
extern "C" { | ||
#include <cholmod.h> | ||
} | ||
|
||
/** \ingroup Support_modules | ||
* \defgroup CholmodSupport_Module CholmodSupport module | ||
* | ||
* This module provides an interface to the Cholmod library which is part of the <a href="http://www.suitesparse.com">suitesparse</a> package. | ||
* It provides the two following main factorization classes: | ||
* - class CholmodSupernodalLLT: a supernodal LLT Cholesky factorization. | ||
* - class CholmodDecomposiiton: a general L(D)LT Cholesky factorization with automatic or explicit runtime selection of the underlying factorization method (supernodal or simplicial). | ||
* | ||
* For the sake of completeness, this module also propose the two following classes: | ||
* - class CholmodSimplicialLLT | ||
* - class CholmodSimplicialLDLT | ||
* Note that these classes does not bring any particular advantage compared to the built-in | ||
* SimplicialLLT and SimplicialLDLT factorization classes. | ||
* | ||
* \code | ||
* #include <Eigen/CholmodSupport> | ||
* \endcode | ||
* | ||
* In order to use this module, the cholmod headers must be accessible from the include paths, and your binary must be linked to the cholmod library and its dependencies. | ||
* The dependencies depend on how cholmod has been compiled. | ||
* For a cmake based project, you can use our FindCholmod.cmake module to help you in this task. | ||
* | ||
*/ | ||
|
||
#include "src/misc/Solve.h" | ||
#include "src/misc/SparseSolve.h" | ||
|
||
#include "src/CholmodSupport/CholmodSupport.h" | ||
|
||
|
||
#include "src/Core/util/ReenableStupidWarnings.h" | ||
|
||
#endif // EIGEN_CHOLMODSUPPORT_MODULE_H | ||
|
Oops, something went wrong.