Fatrop is a constrained nonlinear optimal control problem solver that is fast and achieves a high numerical robustness.
The main features of the solver are:
- high numerical robustness thanks to advanced numerical optimization techniques, inspired by Ipopt
- fast by exploiting the optimal control problem structure through a specialized linear solver, based on a generalized Riccati recursion
- effective handling of path equality and inequality constraints, without relying on penalty methods
- ability to incorporate exact Lagrangian Hessian information
- ability to be initialized from any, possibly infeasible, solution estimate
- interfaced to rockit, which is a high-level optimal control problem specification framework, built on top of CasADi
At this moment the easiest way to get specify fatrop problems is by using the rockit interface. See Install rockit with Fatropy interface for installation instructions. The fatrop-rockit-plugin is not very stable yet, and still under development. Apart form the rockit interface, we are working on a ocp specification framework, especially developed for specifying fatrop problems.
At this moment Fatrop is mainly tested on Ubuntu Linux machines. There are two installation types:
(Recursively) clone this repository
git clone https://gitlab.kuleuven.be/robotgenskill/fatrop/fatrop.git --recursive
cd fatrop
Set the CMake flags, change the BLASFEO target to your system architecture (see table of https://github.com/giaf/blasfeo)
export CMAKE_ARGS="-DBLASFEO_TARGET=X64_AUTOMATIC -DENABLE_MULTITHREADING=OFF"
Build and install the Fatropy project
cd fatropy
pip install .
Trouble shoot: make sure you're using the newest pip version (pip install --upgrade pip setuptools)
(Recursively) clone this repository
git clone https://gitlab.kuleuven.be/robotgenskill/fatrop/fatrop.git --recursive
cd fatrop
Build and install the Fatrop project
mkdir build
cd build
cmake -DBLASFEO_TARGET=X64_AUTOMATIC ..
make -j
If you want to install Fatrop on your system
sudo make install
For non-x64 targets change the BLASFEO_target parameter according to the table of https://github.com/giaf/blasfeo
git clone https://gitlab.kuleuven.be/meco-software/rockit.git
git clone https://gitlab.kuleuven.be/u0110259/rockit_fatrop_plugin.git ./rockit/rockit/external/fatrop --recursive
cd rockit
pip install .
https://gitlab.kuleuven.be/robotgenskill/fatrop/fatrop_rockit_demo
https://gitlab.kuleuven.be/robotgenskill/fatrop/fatrop_benchmarks
Using Fatrop from C++: check file fatrop/executables/RunFatrop.cpp
Fatrop is developed by Lander Vanroye at the KU Leuven Robotics Research Group under supervision of Wilm Decre.
Contributors:
- Ajay Sathya (rockit interface)