Continuing inverse kinematics after IpOpt fails to achieve desired accuracy #3120
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.
Fixes issue #3119
Brief summary of changes
Added a flag (
adaptiveAccuracy
) and two parameters to InverseKinematicsToolBase that allow rerunning track on a frame with lower accuracy if the optimizer failed to converge.Added another flag (
ignoreConvergenceErrors
) to InverseKinematicsToolBase that allows ignoring a convergence error during track() of a frame.void AssemblySolver::track(SimTK::State &s)
now throws a more comprehensive exception that can be traced, similar tovoid AssemblySolver::assemble(SimTK::State &state)
.Testing I've completed
Running with flags turned off produces the same results as the default version. Ran tests with enabling each or both of the flags, behavior is similar (mean DOF angle difference ~ 1 degree).
Looking for feedback on the validity of this approach.
CHANGELOG.md (choose one)
Please tell me where to append a note of change.
This change is