qpmad package from qpmad repo

qpmad

Package Summary

Tags No category tags.
Version 1.0.2
License Apache 2.0
Build type CMAKE
Use RECOMMENDED

Repository Summary

Checkout URI https://github.com/asherikov/qpmad.git
VCS Type git
VCS Version master
Last Updated 2019-12-31
Dev Status MAINTAINED
CI status Continuous Integration : 0 / 0
Released RELEASED
Package Tags No category tags.
Contributing Help Wanted (0)
Good First Issues (0)
Pull Requests to Review (0)

Package Description

qpmad QP solver

Additional Links

Maintainers

  • Alexander Sherikov

Authors

No additional authors.

qpmad

Travis CI: https://travis-ci.org/asherikov/qpmad Build Status

Eigen-based, header-only C++ implementation of Goldfarb-Idnani dual active set algorithm for quadratic programming. The intended purpose of this solver is embedded optimization for robot control, for this reason some of the computations are omitted as described below. The package is ROS compatible.

Contents

Links

Features:

  • Double sided inequality constraints: lb <= A*x <= ub. Such constraints can be handled in a more efficient way than lb <= A*x commonly used in other implementations of the algorithm.

  • Simple bounds: lb <= x <= ub.

  • Lazy data initialization, e.g., perform inversion of the Cholesky factor only if some of the constraints are activated.

  • Does not compute value of the objective function.

  • Does not compute/update Lagrange multipliers for equality constraints.

Dependencies:

  • cmake
  • Eigen
  • Boost (for C++ tests)

Notes:

  1. Before computing the full step length I check that the dot product of the chosen constraint with the step direction is not zero instead of checking the norm of the step direction. The former approach makes more sense since the said dot product appears later as a divisor and we can avoid computation of a useless norm.

  2. I am aware that activation of simple bounds zeroes out parts of matrix 'J'. Unfortunately, I don't see a way to exploit this on modern hardware -- updating the whole 'J' at once is computationally cheaper than doing this line by line selectively or permuting 'J' to collect sparse rows in one place.

  3. Since the solver may arbitrarily choose violated constraints for activation, it always prefers the cheapest ones, i.e., the simple bounds. In particular, this allows to avoid computation of violations of general constraints if there are violated bounds.

  4. Vector 'd' and primal step direction are updated during partial steps instead of being computed from scratch. This, however, does not result in a significant performance improvement.

Documentation and examples

CHANGELOG

Changelog for package ariles_ros

1.0.2 (2019-12-31)

  • Added missing dependency in package.xml.

1.0.1 (2019-12-24)

  • Doxygen documentation.
  • Initial ROS release.

Wiki Tutorials

See ROS Wiki Tutorials for more details.

Source Tutorials

Not currently indexed.

Package Dependencies

No dependencies on ROS packages.

System Dependencies

Name
cmake
eigen

Dependant Packages

No known dependants.

Launch files

No launch files found

Messages

No message files found.

Services

No service files found

Plugins

No plugins found.

Recent questions tagged qpmad at answers.ros.org