Copra (Control & preview algorithms) is a C++ library for convex model predictive control of linear time-invariant (LTI) and linear time-variant (LTV) systems.
Assuming you have configured the ANYbotics PPA, you can install this package by:
sudo apt install ros-${ROS_DISTRO}-copra
- CMake >= 3.5
- Eigen >= 3.2
- Robot Operating System (ROS)
- g++
- GUROBI >= 4.0: optional QP solver
- OSQP: optional QP solver
- eigen-gurobi: bindings for GUROBI
- eigen-osqp: optional QP solver
To build from source, clone the latest version from this repository into your catkin workspace and compile the package using:
cd ~/catkin_ws/src
git clone git@github.com:ANYbotics/copra.git
catkin build copra
Run unit tests by:
catkin run_tests copra
Doxygen documentation is available online
You can also check out unit tests and the bipedal locomotion example.
This package was forked from jrl-umi3218. The following changes were made:
- Extended to time-variant systems
- Catkin packaging for ROS
- Unit tests converted from doctest to Google Test
- Introduce SimpleTrajectoryCost and SimpleControlCost
- Introduce a method to reset all costs
- Added support for the qpOASES QP solver
The library was originally developed by Vincent Samy. It is licensed under the BSD-2-Clause. Its default quadratic programming solver (eigen-quadprog) is licensed under the LGPLv2.