Comments (7)
I think the main advantage of having our own package with a standard API (which is the one implemented by solver-HQP-...) is that we could easily switch solver if one day we need to.
from tsid.
Indeed, we already discussed with @andreadelprete and @nmansard about that. I've already started such a project on my own but still work in progress.
And it seems pretty easy to do that. I think the main issue to discuss a bit about is a common interface for all these solvers.
Can we make a meeting next week @ LAAS to discuss all of that?
from tsid.
If it is any help, I think stephane caron did make a unified API in python for some of the available QP Solvers.
https://github.com/stephane-caron/qpsolvers
from tsid.
And then you get http://roboptim.net/
from tsid.
@gabrielebndn has started working on this and he may update us on the status of that project here.
from tsid.
@andreadelprete, the externalized code can be found in repo eiquadprog.
In there, I copied eiquadprog_2011
(renamed eiquadprog.hpp, I don't think it's used a lot and I would not recommend it), eiquadprog-fast.hpp (which I turned to a header-only version) and eiquadprog-rt.hpp (which I reorganized so that it works by including eiquadprog-rt.hpp
, not eiquadprog-rt.hxx
, and where I fixed some minor Eigen compilation issues related to problems with less then two constraints).
The code is unit tested in folder unittest for many different cases.
The solvers seem to work perfectly well for all convex, bounded, feasible problems.
I sometimes get unexpected results for problems that do not respect these three conditions at the same time: sometimes I get a solution when there isn't one; sometimes I get a wrong solution; sometimes I do not get a solution when there technically is at lease one; sometimes I correctly get that there is no solution, but the specific error code is not correct.
I do not know how important this is, as I would expect that most of the problems we actually try to solve indeed do respect the above conditions. The above-listed cases are also documented in the unit tests: I am just using BOOST_WARN
instead of BOOST_CHECK
, so that the unit tests issue warnings when executed with -l warning
, but they still technically pass.
I did not copy files solver-HQP-eiquadprog-fast.hpp and solver-HQP-eiquadprog-rt.hpp, as they seemed to me incomplete and non-essential.
Version 1.0.0 was released about a month ago. I've been using it on real problems for Talos and so far, it seems to do well. As far as I am concerned, work on it is more or less done and I am not planning to change anything. If you wish, I think you may remove the original files from tsid and depend on eiquadprog instead.
If you want to improve on existing algorithms, or help fixing the non-convex/unbonded/unfeasible cases (if you think it is desirable), or move solver-HQP-eiquadprog-fast.hpp and solver-HQP-eiquadprog-rt.hpp there, you are more than welcome to do so through a PR, which I can verify.
This is what concerns eiquadprog. But there is another point: in a recent issue (see stack-of-tasks/eiquadprog#2) @andreadelprete pointed out that QuadProg++ contains lots of the things we need. If we can confirm that QuadProg++ has everything we need, that it is stable, that it works well, that it is easy to integrate in our own systems, and that there are no problems with licences, then it is probably useless to have our own in-house solver and we could just rely on QuadProg++
from tsid.
It would also help with easily benchmarking different solvers.
from tsid.
Related Issues (20)
- 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
- Large time steps HOT 4
- github action on OSX conda Release failing on osqp solver HOT 2
- TSID Performance Issue, slow HQP solves HOT 9
- Does it contain c++ examples? HOT 4
- auto formating precommit hook HOT 1
- display error
- Plans for Pinocchio3.x integration? HOT 3
- build issue with catkin build ROS1 HOT 6
- Python Binding for TaskActuationEquality HOT 4
- Compatibility Issue with Latest Pinocchio Version and TSID 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.