Add dynamic constraint support #495
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This now brings TrajOptIfopt implementation nearly identical to the legacy trajopt. The major difference between the two is how coefficients are handled. After ready more into how trajopt adds constraints with slack variables it was recommend to avoid applying the coefficient to the value and jacobian and only apply it to the slack variable gradient. This simplifies things within so bounds no longer need to be scaled by the coefficient and coefficients are handled directly within the QP problem class. With this change the coefficient for constraints can be lowered which seems to also improve convergence allowing the Trust region loop to increase as needed instead of starting directly with scaled error and jacobians.
Below is the benchmark table of the tesseract_examples with some running of coefficients. As it can be seen trajopt ifopt implementation is mostly faster than the legacy implementation. Next steps will be to profile and consolidate code within the trajopt_qp_problem to allow parallelization. FYI @marrts @rjoomen @marip8