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.
! Read the whole readme through first
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
- Eigen as 'production' dependency
- uWebSockets as 'production' dependency
- nlohmann_json as 'production' dependency
- Catch2 as testing/development dependency
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.
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.