This repository contains the work for the Path Planning project in the Self-Driving Car Engineer Nanodegree Program of Udacity.
The required Model Documentation can be read from ModelDocumentation.
- Clone this repo with git
git clone git@github.com:joustava/CarND-Path-Planning-Project.git
-
Make sure you meet the dependency requirement instructions.
-
This project involves the Term 3 Simulator which can be downloaded here. Once unzipped you might need to change permissions of the simulator executable by running:
chmod u+x term3_sim_mac/term3_sim.app/Contents/MacOS/term3_sim_mac
from the folder you've extracted it. -
IMPORTANT: Initialise git submodules by running (from project root).
git submodule update --init # only once
This will add Eigen to the project via a git submodule as 'production' dependency.
- Then with the running simulator this project can be build and run with the following scripts
./build.sh
./run.sh
NOTE: This project was not build to support Docker.
Test support is added to the project. Test are not extensive yet. To run them:
./build.sh
./test.sh
The project aims to follow a Modern CMake setup. It has several targets, an app target containing the complete application (./app
), a Planner library (./src
and ./include
) and the tests (./test
). Each part has its own CMakeList.txt
file which come together in the main CMakeList.txt
found in the root of the project.
With CppCheck one can improve code quality by checking common errors.
Installation and dependencies
brew install cppcheck
pip install pygments # run once if complaining about missing pygments...
Now reports can be generated by running the report.sh
script
./report.sh
With Doxygen and Graphviz installed, documentation can be written in Doxygen/Javadoc style and an html version generated.
brew install doxygen
brew install graphviz
Running the supplied ./docs.sh
script will generate html documentations that can be viewed (opened by script) in the browser.
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.