Skip to content

Add proxQP solver support#49

Merged
olivier-roussel merged 9 commits intoSofaDefrost:mainfrom
olivier-roussel:switch-solver-proxqp
Jan 2, 2025
Merged

Add proxQP solver support#49
olivier-roussel merged 9 commits intoSofaDefrost:mainfrom
olivier-roussel:switch-solver-proxqp

Conversation

@olivier-roussel
Copy link
Contributor

@olivier-roussel olivier-roussel commented Dec 20, 2024

This PR adds the possibility to switch the QP solver used and to select proxQP from proxsuite, taking advantage of the existing abstraction layer already in place, so it does add overhead for conversions types.
The idea is to have a smooth transition to switch to proxQP solver as qpOASES is not maintened anymore. Having both solvers will enable to perform some benchmarking to validate or not the switch.
This PR is mainly motivated due to the presence of bugs with qpOASES when coupling SoftRobots.Inverse with the Sofa.RigidBodyDynamics plugin.
Another motivation is to facilitate integration of SoftRobots.Inverse in modern packagings tool (such Conda) as qpOASES (and its packages) is not properly maintained anymore.

The support for proxQP must be enabled by setting the cmake variable SOFTROBOTSINVERSE_ENABLE_PROXQP to ON. Proxsuite can be already installed externally or it will be fetched ("find or fetch" mechanism).

Then, the type of QP solver can be set using the attribute qpSolver by setting the value proxQP (default is qpOASES). See unit tests for example.

@olivier-roussel olivier-roussel merged commit fe7c02b into SofaDefrost:main Jan 2, 2025
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant