True factor
parent
68c9da8c4e
commit
e6bfcada40
|
@ -45,12 +45,19 @@ struct TripletError {
|
||||||
};
|
};
|
||||||
|
|
||||||
template <typename F>
|
template <typename F>
|
||||||
struct TransferFactor {
|
class TransferFactor : public NoiseModelFactorN<F, F> {
|
||||||
Point2 p0, p1, p2;
|
Point2 p0, p1, p2;
|
||||||
|
|
||||||
|
public:
|
||||||
|
// Constructor
|
||||||
|
TransferFactor(Key key1, Key key2, const Point2& p0, const Point2& p1,
|
||||||
|
const Point2& p2, const SharedNoiseModel& model = nullptr)
|
||||||
|
: NoiseModelFactorN<F, F>(model, key1, key2), p0(p0), p1(p1), p2(p2) {}
|
||||||
|
|
||||||
/// vector of errors returns 2D vector
|
/// vector of errors returns 2D vector
|
||||||
Vector evaluateError(const F& F12, const F& F20, //
|
Vector evaluateError(const F& F12, const F& F20, //
|
||||||
Matrix* H12, Matrix* H20) const {
|
OptionalMatrixType H12 = nullptr,
|
||||||
|
OptionalMatrixType H20 = nullptr) const override {
|
||||||
std::function<Vector2(F, F)> fn = [&](const F& F12, const F& F20) {
|
std::function<Vector2(F, F)> fn = [&](const F& F12, const F& F20) {
|
||||||
Vector2 error;
|
Vector2 error;
|
||||||
error << //
|
error << //
|
||||||
|
|
|
@ -80,7 +80,7 @@ TEST(TransferFactor, Jacobians) {
|
||||||
std::cout << H20 << std::endl;
|
std::cout << H20 << std::endl;
|
||||||
|
|
||||||
// Create a TransferFactor
|
// Create a TransferFactor
|
||||||
TransferFactor<SimpleFundamentalMatrix> factor{p[0], p[1], p[2]};
|
TransferFactor<SimpleFundamentalMatrix> factor{0, 1, p[0], p[1], p[2]};
|
||||||
Matrix H0, H1;
|
Matrix H0, H1;
|
||||||
Vector e2 = factor.evaluateError(triplet.F12, triplet.F20, &H0, &H1);
|
Vector e2 = factor.evaluateError(triplet.F12, triplet.F20, &H0, &H1);
|
||||||
std::cout << "Error: " << e2 << std::endl;
|
std::cout << "Error: " << e2 << std::endl;
|
||||||
|
@ -89,9 +89,9 @@ TEST(TransferFactor, Jacobians) {
|
||||||
|
|
||||||
// Check Jacobians
|
// Check Jacobians
|
||||||
Values values;
|
Values values;
|
||||||
values.insert(1, triplet.F12);
|
values.insert(0, triplet.F12);
|
||||||
values.insert(2, triplet.F20);
|
values.insert(1, triplet.F20);
|
||||||
// EXPECT_CORRECT_FACTOR_JACOBIANS(factor, values, 1e-5, 1e-7);
|
EXPECT_CORRECT_FACTOR_JACOBIANS(factor, values, 1e-5, 1e-7);
|
||||||
}
|
}
|
||||||
|
|
||||||
//*************************************************************************
|
//*************************************************************************
|
||||||
|
|
Loading…
Reference in New Issue