A project for robustly resolving collisions with a guarantee of no interpenetrations and/or pass through.
To build the project, use the following commands from the root directory of the project.
mkdir build && cd build
cmake ..
make
Fixing Collisions includes some optional and non-optional dependencies.
ToDo: add a build option to enable/disable NLopt
(Build Option: -DENABLE_NLOPT=ON
)
NLopt is automatically downloaded through CMake.
NLopt is used for non-linear optimization of our constrained objective function. Currently, NLopt is required to make the project, but this may change in the near future.
Build Option: -DENABLE_IPOPT=ON
To install Ipopt via Homebrew, use the following commands.
brew tap udacity/CarND-MPC-Project https://github.com/udacity/CarND-MPC-Project
brew install ipopt --with-openblas
Ipopt is used for non-linear optimization of our constrained objective function. Ipopt is not required to make the project, but it is recommended in order to use the interior point optimization method.
Build Option: -DENABLE_OSQP=ON
When OSQP is enabled for the first time, it is downloaded automatically through CMake.
OSQP is used for quadratic programming of the linearized constraints and the interior iterations of the nonlinear complementarity problem. OSQP is not required to make the project, but it is recommended in order to use the linearized constraints.
Build Option: -DENABLE_MOSEK=ON
Currently, MOSEK must be installed manually (steps below).
MOSEK is used for quadratic programming of the linearized constraints and the interior iterations of the nonlinear complementarity problem. MOSEK is not required to make the project, but it is recommended in order to use the linearized constraints.
Currently, only MOSEK 7 works on macOS. MOSEK 8 gives the following error even after following all the installation instructions.
dyld: Library not loaded: libmosek64.8.1.dylib
Referenced from: <FIXING_COLLISIONS_DIR>/fixing-collisions/build/tests/unit_tests
Reason: image not found
-
Download MOSEK 7 from https://www.mosek.com/downloads/7.1.0.63/
-
Extract the files and follow MOSEK's installation directions found in
<MSKHOME>/mosek/quickstart.html
where<MSKHOME>/
is the directory where MOSEK was extracted. -
Get a personal academic license from https://www.mosek.com/products/academic-licenses/, and place it in the appropriate directory (
%USERPROFILE%\mosek\mosek.lic
on Windows and$HOME/mosek/mosek.lic
on all UNIX like operating systems). -
In order for CMake to find MOSEK you can either create a symbolic link:
ln -s <MSKHOME>/mosek /usr/local/mosek
or create a MOSEK_DIR
environment variable:
export MOSEK_DIR="<MSKHOME>/mosek/7/tools/platform/osx64x86"
Build Option: -DBUILD_UNIT_TESTS=ON
Catch2 is automatically downloaded through CMake.
Catch2 is used for unit tests. Catch2 is not required to make the project, but it is recommended in order to test the build.
Libigl is automatically downloaded through CMake.
Libigl is used for the viewer and for calling MOSEK's QP. Libigl is required to make the project.