constructors for JacobianFactor up to 6-ary for testing in matlab
parent
ecb896ef03
commit
3778e3c928
8
gtsam.h
8
gtsam.h
|
@ -1217,6 +1217,14 @@ virtual class JacobianFactor : gtsam::GaussianFactor {
|
||||||
const gtsam::noiseModel::Diagonal* model);
|
const gtsam::noiseModel::Diagonal* model);
|
||||||
JacobianFactor(size_t i1, Matrix A1, size_t i2, Matrix A2, size_t i3, Matrix A3,
|
JacobianFactor(size_t i1, Matrix A1, size_t i2, Matrix A2, size_t i3, Matrix A3,
|
||||||
Vector b, const gtsam::noiseModel::Diagonal* model);
|
Vector b, const gtsam::noiseModel::Diagonal* model);
|
||||||
|
JacobianFactor(size_t i1, Matrix A1, size_t i2, Matrix A2, size_t i3, Matrix A3,
|
||||||
|
size_t i4, Matrix A4, Vector b, const gtsam::noiseModel::Diagonal* model);
|
||||||
|
JacobianFactor(size_t i1, Matrix A1, size_t i2, Matrix A2, size_t i3, Matrix A3,
|
||||||
|
size_t i4, Matrix A4, size_t i5, Matrix A5, Vector b,
|
||||||
|
const gtsam::noiseModel::Diagonal* model);
|
||||||
|
JacobianFactor(size_t i1, Matrix A1, size_t i2, Matrix A2, size_t i3, Matrix A3,
|
||||||
|
size_t i4, Matrix A4, size_t i5, Matrix A5, size_t i6, Matrix A6, Vector b,
|
||||||
|
const gtsam::noiseModel::Diagonal* model);
|
||||||
JacobianFactor(const gtsam::GaussianFactorGraph& graph);
|
JacobianFactor(const gtsam::GaussianFactorGraph& graph);
|
||||||
|
|
||||||
//Testable
|
//Testable
|
||||||
|
|
|
@ -102,6 +102,34 @@ JacobianFactor::JacobianFactor(const Key i1, const Matrix& A1, Key i2,
|
||||||
b, model);
|
b, model);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ************************************************************************* */
|
||||||
|
JacobianFactor::JacobianFactor(const Key i1, const Matrix& A1, Key i2,
|
||||||
|
const Matrix& A2, Key i3, const Matrix& A3, Key i4, const Matrix& A4,
|
||||||
|
const Vector& b, const SharedDiagonal& model) {
|
||||||
|
fillTerms(
|
||||||
|
cref_list_of<4>(make_pair(i1, A1))(make_pair(i2, A2))(make_pair(i3, A3))
|
||||||
|
(make_pair(i4, A4)), b, model);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ************************************************************************* */
|
||||||
|
JacobianFactor::JacobianFactor(const Key i1, const Matrix& A1, Key i2,
|
||||||
|
const Matrix& A2, Key i3, const Matrix& A3, Key i4, const Matrix& A4,
|
||||||
|
Key i5, const Matrix& A5, const Vector& b, const SharedDiagonal& model) {
|
||||||
|
fillTerms(
|
||||||
|
cref_list_of<5>(make_pair(i1, A1))(make_pair(i2, A2))(make_pair(i3, A3))
|
||||||
|
(make_pair(i4, A4))(make_pair(i5, A5)), b, model);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ************************************************************************* */
|
||||||
|
JacobianFactor::JacobianFactor(const Key i1, const Matrix& A1, Key i2,
|
||||||
|
const Matrix& A2, Key i3, const Matrix& A3, Key i4, const Matrix& A4,
|
||||||
|
Key i5, const Matrix& A5, Key i6, const Matrix& A6, const Vector& b,
|
||||||
|
const SharedDiagonal& model) {
|
||||||
|
fillTerms(
|
||||||
|
cref_list_of<6>(make_pair(i1, A1))(make_pair(i2, A2))(make_pair(i3, A3))
|
||||||
|
(make_pair(i4, A4))(make_pair(i5, A5))(make_pair(i6, A6)), b, model);
|
||||||
|
}
|
||||||
|
|
||||||
/* ************************************************************************* */
|
/* ************************************************************************* */
|
||||||
JacobianFactor::JacobianFactor(const HessianFactor& factor) :
|
JacobianFactor::JacobianFactor(const HessianFactor& factor) :
|
||||||
Base(factor), Ab_(
|
Base(factor), Ab_(
|
||||||
|
@ -115,9 +143,6 @@ JacobianFactor::JacobianFactor(const HessianFactor& factor) :
|
||||||
bool success;
|
bool success;
|
||||||
boost::tie(maxrank, success) = choleskyCareful(Ab_.matrix());
|
boost::tie(maxrank, success) = choleskyCareful(Ab_.matrix());
|
||||||
|
|
||||||
factor.print("HessianFactor to convert: ");
|
|
||||||
cout << "Maxrank: " << maxrank << ", success: " << int(success) << endl;
|
|
||||||
|
|
||||||
// Check for indefinite system
|
// Check for indefinite system
|
||||||
if (!success)
|
if (!success)
|
||||||
throw IndeterminantLinearSystemException(factor.keys().front());
|
throw IndeterminantLinearSystemException(factor.keys().front());
|
||||||
|
|
|
@ -126,6 +126,22 @@ namespace gtsam {
|
||||||
const Matrix& A2, Key i3, const Matrix& A3,
|
const Matrix& A2, Key i3, const Matrix& A3,
|
||||||
const Vector& b, const SharedDiagonal& model = SharedDiagonal());
|
const Vector& b, const SharedDiagonal& model = SharedDiagonal());
|
||||||
|
|
||||||
|
/** Construct four-ary factor */
|
||||||
|
JacobianFactor(Key i1, const Matrix& A1, Key i2,
|
||||||
|
const Matrix& A2, Key i3, const Matrix& A3, Key i4, const Matrix& A4,
|
||||||
|
const Vector& b, const SharedDiagonal& model = SharedDiagonal());
|
||||||
|
|
||||||
|
/** Construct five-ary factor */
|
||||||
|
JacobianFactor(Key i1, const Matrix& A1, Key i2,
|
||||||
|
const Matrix& A2, Key i3, const Matrix& A3, Key i4, const Matrix& A4,
|
||||||
|
Key i5, const Matrix& A5, const Vector& b, const SharedDiagonal& model = SharedDiagonal());
|
||||||
|
|
||||||
|
/** Construct six-ary factor */
|
||||||
|
JacobianFactor(Key i1, const Matrix& A1, Key i2,
|
||||||
|
const Matrix& A2, Key i3, const Matrix& A3, Key i4, const Matrix& A4,
|
||||||
|
Key i5, const Matrix& A5, Key i6, const Matrix& A6,
|
||||||
|
const Vector& b, const SharedDiagonal& model = SharedDiagonal());
|
||||||
|
|
||||||
/** Construct an n-ary factor
|
/** Construct an n-ary factor
|
||||||
* @tparam TERMS A container whose value type is std::pair<Key, Matrix>, specifying the
|
* @tparam TERMS A container whose value type is std::pair<Key, Matrix>, specifying the
|
||||||
* collection of keys and matrices making up the factor. */
|
* collection of keys and matrices making up the factor. */
|
||||||
|
|
Loading…
Reference in New Issue