27 typedef Eigen::RowVectorXd RowVector;
46 Base(), active_(true) {
51 throw std::runtime_error(
52 "Cannot convert HessianFactor to LinearInequality");
57 Base(jf), dualKey_(dualKey), active_(true) {
59 throw std::runtime_error(
60 "Cannot convert an unconstrained JacobianFactor to LinearInequality");
64 throw std::runtime_error(
"Only support single-valued inequality factor!");
70 Base(i1, A1, (Vector(1) << b).finished(),
71 noiseModel::Constrained::All(1)), dualKey_(dualKey), active_(true) {
77 Base(i1, A1, i2, A2, (Vector(1) << b).finished(),
78 noiseModel::Constrained::All(1)), dualKey_(dualKey), active_(true) {
84 Base(i1, A1, i2, A2, i3, A3, (Vector(1) << b).finished(),
85 noiseModel::Constrained::All(1)), dualKey_(dualKey), active_(true) {
92 template<
typename TERMS>
94 Base(terms, (Vector(1) << b).finished(), noiseModel::Constrained::All(1)), dualKey_(
95 dualKey), active_(true) {
109 DefaultKeyFormatter)
const override {
119 > (std::make_shared < LinearInequality > (*this));
144 return unweighted_error(c);
156 Vector pj = p.
at(*xj);
157 Vector aj =
getA(xj).transpose();
LinearInequality(Key i1, const RowVector &A1, Key i2, const RowVector &A2, double b, Key dualKey)
Definition: LinearInequality.h:75
bool equals(const GaussianFactor &lf, double tol=1e-9) const override
Definition: LinearInequality.h:103
GaussianFactor::shared_ptr clone() const override
Definition: LinearInequality.h:117
LinearInequality(const HessianFactor &hf)
Definition: LinearInequality.h:50
LinearInequality This
Typedef to this class.
Definition: LinearInequality.h:35
bool equals(const GaussianFactor &lf, double tol=1e-9) const override
assert equality up to a tolerance
void print(const std::string &s="", const KeyFormatter &formatter=DefaultKeyFormatter) const override
print with optional string
Definition: Testable.h:152
std::shared_ptr< This > shared_ptr
shared_ptr to this class
Definition: LinearInequality.h:37
void print(const std::string &s="", const KeyFormatter &formatter=DefaultKeyFormatter) const override
Definition: LinearInequality.h:108
Vector & at(Key j)
Definition: VectorValues.h:139
Definition: VectorValues.h:74
double error(const VectorValues &c) const override
Definition: LinearInequality.h:148
Definition: GaussianFactor.h:38
void inactivate()
Make this inequality constraint inactive.
Definition: LinearInequality.h:138
bool isConstrained() const
Definition: JacobianFactor.h:270
bool active() const
return true if this constraint is active
Definition: LinearInequality.h:128
const_iterator end() const
Definition: Factor.h:148
LinearInequality()
Definition: LinearInequality.h:45
Key dualKey() const
dual key
Definition: LinearInequality.h:123
std::function< std::string(Key)> KeyFormatter
Typedef for a function to format a key, i.e. to convert it to a string.
Definition: Key.h:35
Definition: JacobianFactor.h:91
std::shared_ptr< This > shared_ptr
shared_ptr to this class
Definition: GaussianFactor.h:42
void activate()
Make this inequality constraint active.
Definition: LinearInequality.h:133
Definition: chartTesting.h:28
constABlock getA() const
Definition: JacobianFactor.h:304
~LinearInequality() override
Definition: LinearInequality.h:99
LinearInequality(const TERMS &terms, double b, Key dualKey)
Definition: LinearInequality.h:93
LinearInequality(Key i1, const RowVector &A1, Key i2, const RowVector &A2, Key i3, const RowVector &A3, double b, Key dualKey)
Definition: LinearInequality.h:82
A Gaussian factor using the canonical parameters (information form)
Definition: HessianFactor.h:100
LinearInequality(const JacobianFactor &jf, Key dualKey)
Definition: LinearInequality.h:56
KeyVector::const_iterator const_iterator
Const iterator over keys.
Definition: Factor.h:82
const_iterator begin() const
Definition: Factor.h:145
double dotProductRow(const VectorValues &p) const
Definition: LinearInequality.h:153
Definition: LinearInequality.h:33
LinearInequality(Key i1, const RowVector &A1, double b, Key dualKey)
Definition: LinearInequality.h:69
std::uint64_t Key
Integer nonlinear key type.
Definition: types.h:102
const SharedDiagonal & get_model() const
Definition: JacobianFactor.h:292
JacobianFactor Base
Typedef to base class.
Definition: LinearInequality.h:36
Vector error_vector(const VectorValues &c) const
Definition: LinearInequality.h:143