19 #include <boost/bind.hpp> 34 using namespace boost;
35 using namespace gtsam;
63 Point2 local(2.0, 3.0), global(-1.0, 2.0);
67 Matrix actualDT, actualDL, actualDF;
68 tc.
evaluateError(global, trans, local, actualDF, actualDT, actualDL);
70 Matrix numericalDT, numericalDL, numericalDF;
71 numericalDF = numericalDerivative31<Vector,Point2,Pose2,Point2>(
73 global,
trans, local, 1
e-5);
74 numericalDT = numericalDerivative32<Vector,Point2,Pose2,Point2>(
76 global,
trans, local, 1
e-5);
77 numericalDL = numericalDerivative33<Vector,Point2,Pose2,Point2>(
79 global,
trans, local, 1
e-5);
99 Matrix actualDT, actualDL, actualDF;
100 tc.
evaluateError(global, trans, local, actualDF, actualDT, actualDL);
102 Matrix numericalDT, numericalDL, numericalDF;
103 numericalDF = numericalDerivative31<Vector,Point2,Pose2,Point2>(
105 global,
trans, local, 1
e-5);
106 numericalDT = numericalDerivative32<Vector,Point2,Pose2,Point2>(
108 global,
trans, local, 1
e-5);
109 numericalDL = numericalDerivative33<Vector,Point2,Pose2,Point2>(
111 global,
trans, local, 1
e-5);
122 Point2 local1(2.0, 2.0), local2(4.0, 5.0),
123 global1(-1.0, 5.0), global2(2.0, 3.0);
143 double error_gain = 1000.0;
151 init.insert(lA1, local1);
152 init.insert(lA2, local2);
153 init.insert(lB1, global1);
154 init.insert(lB2, global2);
155 init.insert(tA1, trans);
162 expected.
insert(lA1, local1);
163 expected.
insert(lA2, local2);
164 expected.
insert(lB1, global1);
165 expected.
insert(lB2, global2);
166 expected.
insert(tA1, transIdeal);
188 double error_gain = 1000.0;
195 init.insert(
lA1, local);
196 init.insert(lB1, global);
197 init.insert(tA1, trans);
224 double error_gain = 1000.0;
231 init.insert(lA1, local);
232 init.insert(lB1, global);
233 init.insert(tA1, trans);
virtual const Values & optimize()
gtsam::ReferenceFrameFactor< gtsam::Point2, gtsam::Pose2 > PointReferenceFrameFactor
Concept check for values that can be used in unit tests.
static int runAllTests(TestResult &result)
Factor Graph consisting of non-linear factors.
void insert(Key j, const Value &val)
BiCGSTAB< SparseMatrix< double > > solver
Some functions to compute numerical derivatives.
NonlinearFactorGraph graph
IsDerived< DERIVEDFACTOR > emplace_shared(Args &&...args)
Emplace a shared pointer to factor of given type.
const ValueType at(Key j) const
#define EXPECT(condition)
Eigen::Triplet< double > T
A nonlinear optimizer that uses the Levenberg-Marquardt trust-region scheme.
Array< double, 1, 3 > e(1./3., 0.5, 2.)
bool assert_equal(const Matrix &expected, const Matrix &actual, double tol)
GTSAM_EXPORT Point2 transformFrom(const Point2 &point, OptionalJacobian< 2, 3 > Dpose=boost::none, OptionalJacobian< 2, 2 > Dpoint=boost::none) const
TEST(ReferenceFrameFactor, equals)
detail::initimpl::constructor< Args... > init()
Binds an existing constructor taking arguments Args...
Vector evaluateError_(const PointReferenceFrameFactor &c, const Point2 &global, const Pose2 &trans, const Point2 &local)
GTSAM_EXPORT Pose2 inverse() const
inverse
Vector evaluateError(const Point &global, const Transform &trans, const Point &local, boost::optional< Matrix & > Dforeign=boost::none, boost::optional< Matrix & > Dtrans=boost::none, boost::optional< Matrix & > Dlocal=boost::none) const override
Eigen::Matrix< double, Eigen::Dynamic, 1 > Vector
static const Eigen::MatrixBase< Vector2 >::ConstantReturnType Z_2x1
std::uint64_t Key
Integer nonlinear key type.
gtsam::ReferenceFrameFactor< gtsam::Pose2, gtsam::Pose2 > PoseReferenceFrameFactor