Overview¶
NonlinearConstraint is the abstract base for constrained factors in the constrained module, built on top of NoiseModelFactor with constrained noise models.
Key Concepts¶
violation computes the constraint violation magnitude from factor error.
feasible checks whether a Values assignment satisfies a tolerance.
penaltyFactor builds an L2 penalty factor for constrained optimization methods.
Derived classes specialize behavior for equality and inequality constraints.
Mathematical Formulation¶
A nonlinear constraint is treated as a residual map (with constrained noise scaling). A common penalty used by constrained solvers is:
This class provides the shared interface for evaluating constraint violation and creating a penalty factor used in outer-loop constrained optimization.
Key User API¶
violation(values)feasible(values, tolerance)penaltyFactor(mu)sigmas()unwhitenedHessian(values)(advanced)
Concise C++ Example¶
#include <gtsam/constrained/NonlinearEqualityConstraint.h>
#include <gtsam/nonlinear/expressions.h>
using namespace gtsam;
Symbol x('x', 0);
Double_ X(x);
ExpressionEqualityConstraint<double> c(X * X, 1.0, Vector1(0.1));
Values values;
values.insert(x, 0.8);
bool ok = c.feasible(values, 1e-3);
double v = c.violation(values);
auto penalty = c.penaltyFactor(10.0);