enforce RowVector as Jacobian for single-valued linear inequalities

release/4.3a0
thduynguyen 2014-12-12 12:43:07 -05:00
parent a26ef7b7a2
commit ac6f10ea74
1 changed files with 13 additions and 11 deletions

View File

@ -22,6 +22,8 @@
namespace gtsam { namespace gtsam {
typedef Eigen::Matrix<double,1,Eigen::Dynamic> RowVector;
/** /**
* This class defines Linear constraints by inherit Base * This class defines Linear constraints by inherit Base
* with the special Constrained noise model * with the special Constrained noise model
@ -49,44 +51,44 @@ public:
} }
/** Construct unary factor */ /** Construct unary factor */
LinearInequality(Key i1, const Matrix& A1, double b, Key dualKey) : LinearInequality(Key i1, const RowVector& A1, double b, Key dualKey) :
Base(i1, A1, (Vector(1) << b), noiseModel::Constrained::All(1)), dualKey_( Base(i1, A1, (Vector(1) << b), noiseModel::Constrained::All(1)), dualKey_(
dualKey) { dualKey) {
} }
/** Construct binary factor */ /** Construct binary factor */
LinearInequality(Key i1, const Matrix& A1, Key i2, const Matrix& A2, double b, LinearInequality(Key i1, const RowVector& A1, Key i2, const RowVector& A2, double b,
Key dualKey) : Key dualKey) :
Base(i1, A1, i2, A2, (Vector(1) << b), noiseModel::Constrained::All(1)), dualKey_( Base(i1, A1, i2, A2, (Vector(1) << b), noiseModel::Constrained::All(1)), dualKey_(
dualKey) { dualKey) {
} }
/** Construct ternary factor */ /** Construct ternary factor */
LinearInequality(Key i1, const Matrix& A1, Key i2, const Matrix& A2, Key i3, LinearInequality(Key i1, const RowVector& A1, Key i2, const RowVector& A2, Key i3,
const Matrix& A3, double b, Key dualKey) : const RowVector& A3, double b, Key dualKey) :
Base(i1, A1, i2, A2, i3, A3, (Vector(1) << b), Base(i1, A1, i2, A2, i3, A3, (Vector(1) << b),
noiseModel::Constrained::All(1)), dualKey_(dualKey) { noiseModel::Constrained::All(1)), dualKey_(dualKey) {
} }
/** Construct four-ary factor */ /** Construct four-ary factor */
LinearInequality(Key i1, const Matrix& A1, Key i2, const Matrix& A2, Key i3, LinearInequality(Key i1, const RowVector& A1, Key i2, const RowVector& A2, Key i3,
const Matrix& A3, Key i4, const Matrix& A4, double b, Key dualKey) : const RowVector& A3, Key i4, const RowVector& A4, double b, Key dualKey) :
Base(i1, A1, i2, A2, i3, A3, i4, A4, (Vector(1) << b), Base(i1, A1, i2, A2, i3, A3, i4, A4, (Vector(1) << b),
noiseModel::Constrained::All(1)), dualKey_(dualKey) { noiseModel::Constrained::All(1)), dualKey_(dualKey) {
} }
/** Construct five-ary factor */ /** Construct five-ary factor */
LinearInequality(Key i1, const Matrix& A1, Key i2, const Matrix& A2, Key i3, LinearInequality(Key i1, const RowVector& A1, Key i2, const RowVector& A2, Key i3,
const Matrix& A3, Key i4, const Matrix& A4, Key i5, const Matrix& A5, const RowVector& A3, Key i4, const RowVector& A4, Key i5, const RowVector& A5,
double b, Key dualKey) : double b, Key dualKey) :
Base(i1, A1, i2, A2, i3, A3, i4, A4, i5, A5, (Vector(1) << b), Base(i1, A1, i2, A2, i3, A3, i4, A4, i5, A5, (Vector(1) << b),
noiseModel::Constrained::All(1)), dualKey_(dualKey) { noiseModel::Constrained::All(1)), dualKey_(dualKey) {
} }
/** Construct six-ary factor */ /** Construct six-ary factor */
LinearInequality(Key i1, const Matrix& A1, Key i2, const Matrix& A2, Key i3, LinearInequality(Key i1, const RowVector& A1, Key i2, const RowVector& A2, Key i3,
const Matrix& A3, Key i4, const Matrix& A4, Key i5, const Matrix& A5, const RowVector& A3, Key i4, const RowVector& A4, Key i5, const RowVector& A5,
Key i6, const Matrix& A6, double b, Key dualKey) : Key i6, const RowVector& A6, double b, Key dualKey) :
Base(i1, A1, i2, A2, i3, A3, i4, A4, i5, A5, i6, A6, (Vector(1) << b), Base(i1, A1, i2, A2, i3, A3, i4, A4, i5, A5, i6, A6, (Vector(1) << b),
noiseModel::Constrained::All(1)), dualKey_(dualKey) { noiseModel::Constrained::All(1)), dualKey_(dualKey) {
} }