Git Product home page Git Product logo

Comments (5)

andreadelprete avatar andreadelprete commented on June 24, 2024

In the last commit 8788221 I added two improved versions of eiquadprog, neither of which allocates dynamic memory during resolution (verified using Eigen function set_is_malloc_allowed). The only difference between them is that RtEiquadprog uses matrices with size known at compile time, whereas EiquadprogFast does not. In both solvers I optimized a bit the code using some Eigen tricks such as noalias, or solveInPlace. Finally, both new solvers have also more documentation and provide more information to the interested user, such as number of iterations, number of active inequalities, maximum number of iterations and proper status flag in case the problem could not be solved.

from tsid.

andreadelprete avatar andreadelprete commented on June 24, 2024

Thiese are the results I got solving random QP on HRP-2's computer (but in a non-real-time thread). More or less we gained 15% of the computation time. The real-time solver is only slightly faster than the "fast" solver. The size of the problems has been chosen to match the size of the QP we typically have to solve in our inverse-dynamics balance controller.

1000 tests with 60 variables, 18 equalities, 40 inequalities
*** PROFILING RESULTS [ms] (min - avg - max - nSamples) ***
Eiquadprog ................... 0.651 0.704 0.870 1000
Eiquadprog Fast ............ 0.563 0.605 0.810 1000
Eiquadprog Real Time .... 0.543 0.592 0.712 1000

*** STATISTICS (min - avg - max - nSamples) ***
active inequalities .... 16.0 19.8 26.0 1000
solver iterations ........ 17.0 21.5 29.0 1000

from tsid.

andreadelprete avatar andreadelprete commented on June 24, 2024

FYI: I also tried to warm start the algorithm (see macro USE_WARM_START in eiquadprog_fast.h) but I didn't manage to make it work properly (it only worked in the trivial case where the active set didn't change). Then I decided to stop working on it, but maybe it's just a matter of fixing a simple bug to make it work, in case someone is interested in finishing the work (the code should be quite self-explaining now because I added plenty of comments).

from tsid.

andreadelprete avatar andreadelprete commented on June 24, 2024

I've just discovered a new open-source QP solver, which is supposed to be faster than eiquadprog, so we may give it a try by integrating it inside TSID. Anybody feels like doing it?

from tsid.

andreadelprete avatar andreadelprete commented on June 24, 2024

Since this issue has been inactive for a while now I think we can close it.

from tsid.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.