-
Notifications
You must be signed in to change notification settings - Fork 902
Handle noise and NonlinearEquality constraints #2332
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR enhances the handling of nonlinear equality constraints by adding support for noise model whitening and proper handling of constraints derived from NonlinearEquality. The changes migrate from the deprecated NonlinearEquality1 class to the more flexible NonlinearEquality class with an updated API parameter order (key first, then feasible value).
Key changes:
- Integrated noise model whitening in the multifrontal solver when noise models are present
- Added constraint handling for unary fully-constrained factors derived from
NonlinearEquality - Deprecated
NonlinearEquality1in favor ofNonlinearEqualitywith updated parameter ordering
Reviewed changes
Copilot reviewed 9 out of 9 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| gtsam/nonlinear/NonlinearEquality.h | Updated documentation, deprecated NonlinearEquality1 class, reformatted evaluateError method, fixed spelling in comments |
| gtsam/constrained/NonlinearEqualityConstraint.h | Fixed spelling error in comment ("equlity" → "equality") |
| gtsam/linear/MultifrontalClique.h | Added fields for constraint handling: blockIndex_ map, fixedFrontals_ set, updated documentation |
| gtsam/linear/MultifrontalClique.cpp | Implemented whitening and constraint handling in fillAb, added markFixedFrontals helper, updated eliminateInPlace to handle fixed frontals |
| gtsam/linear/tests/testMultifrontalSolver.cpp | Added comprehensive tests for constrained factors, weighted measurements, updated existing tests with different noise models |
| tests/testNonlinearEquality.cpp | Migrated from NonlinearEquality1 to NonlinearEquality with updated parameter order (key, value, gain), modernized smart pointers, removed explicit orderings |
| tests/testBoundingConstraint.cpp | Updated UnaryEqualityConstraint calls to new parameter order |
| tests/simulated2DConstraints.h | Changed typedef from NonlinearEquality1 to NonlinearEquality |
| gtsam/nonlinear/doc/NonlinearEquality.ipynb | Removed deprecated NonlinearEquality1 documentation section, reformatted string literals |
|
@ProfFan I merged the PR on this one which should alleviate concern about constraint handling. |
Allow for HessianFactors in MultifrontalSolver
Feature/marginals
befc2b0 to
548694a
Compare
|
9950X3D with TBB |
Also added burn in timing script. Schur advantage is not so apparent now:
Linux benchmarks
A bit disheartening for BAL :-( For chain (large balanced tree) still have speedups > 10, but for these BAL datasets GTSAM and new solver are essentially the same. Puzzling.
With TBB:
Without TBB: