Comments (5)
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.
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.
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.
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.
Since this issue has been inactive for a while now I think we can close it.
from tsid.
Related Issues (20)
- Choose floating-base (or not) when creating a robot wrapper HOT 4
- Expose SE3ToVector HOT 7
- import error while "import tsid" HOT 3
- TSID Position controlled robot, How to include real robot state? HOT 4
- TaskJointPosVelAccBounds: Swapped default values for qMin/qMax HOT 2
- Joint posture task computation incorrect for robot with `nq != nv` HOT 12
- Alignment error with -march=native, fixed with c++17 HOT 3
- TSID for "pantograph/biarticular" robot leg design? HOT 6
- COP_Task - Looking for the 'romeo_walking_traj_tsid.npz' file. HOT 4
- posture task read error HOT 4
- contact-6D: unclear - could be pulling force ? HOT 6
- ForceTask with moving object HOT 11
- GitHub Action HOT 3
- Cannot surpress SolverHQuadProg output HOT 3
- TaskJointPosVelAccBounds not exposed to the python API HOT 3
- Adding equality constraints between joints HOT 9
- Test optional dependencies during CI HOT 1
- conda install broken ? HOT 4
- undefined symbol error in libtsid_pywrap.so HOT 2
- SE3 Inequality Task or Constraint HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from tsid.