joustava / CarND-Extended-Kalman-Filter-P5_Docker

Solution to Extended Kalman Filter project in Udacity's Self Driving Car Engineer ND

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Extended Kalman Filter Project

C++ project which is a solution to the Extended Kalman Filter project of Udacity's Self Driving Car Engineer Nano Degree. This document covers how the project has been setup.

Prerequisites

! Read the whole readme through first

Build and Run

Docker

The project needs to be run in a docker container. To build the image run docker build -t joustava/ekf -f ./ops/Dockerfile.dev . Then the project can be run with ./run.sh, this will start a cli in the running container where the command ./bin/ExtendedKF_APP will run the server on port 4567.

In the docker container root directory run

cmake -S . -B build #-DEigen3_DIR=(pwd)/extern/eigen/cmake -DuWS_DIR=(pwd)/extern/uWebSockets
cmake --build build

then either run executable

./bin/ExtendedKF_APP

or tests (needs build of test target)

# Is this needed? cmake --build build --target test
./bin/ExtendedKF_LIB_TESTS

Dependencies

Eigen was added to the project by using git submodule add https://gitlab.com/libeigen/eigen.git extern/eigen and then adding required config to ./CMakeLists.txt. See running section for making it available to build step.

The adding of submodules after cloning is typically done once with git submodule update --init ran from the project root directory.

Catch2 is fetched automatically via the configuration supplied in tests/CMakeLists.txt

nlohmann_json is fetched automatically via the configuration supplied in ./CMaleLists.txt, to keep size small the lightweight tracking repo is used as source.

uWebSockets is added into to the docker image via git. A really old version is used that had CMake support and is the version used in the template repo.

Note that there are 2 additional git submodules configured: uWebSockets and uSockets, which I'd like to use at a later stage to update these to current versions in a nicer and managable (CMake?) way.

Contributing

We try follow the Google C++ Style Guide as close as possible and use clang-format to validate our code accordingly.

Tests live in ./tests folder and we aim to not reduce coverage so please add tests for your code or changes.

Resources

About

Solution to Extended Kalman Filter project in Udacity's Self Driving Car Engineer ND


Languages

Language:C++ 82.9%Language:CMake 15.9%Language:Shell 1.2%