37 using namespace std::placeholders;
38 using namespace gtsam;
56 expectedH = numericalDerivative11<Point3, Unit3>(
point3_,
s);
68 Rot3 R = Rot3::Yaw(0.5);
125 std::function<double(
const Unit3&,
const Unit3&)>
f =
126 std::bind(&
Unit3::dot, std::placeholders::_1, std::placeholders::_2,
156 expected = numericalDerivative11<Vector2,Unit3>(
162 expected = numericalDerivative11<Vector2,Unit3>(
163 std::bind(&
Unit3::error, &
p, std::placeholders::_1,
nullptr), r);
183 expected = numericalDerivative21<Vector2, Unit3, Unit3>(
184 std::bind(&Unit3::errorVector, std::placeholders::_1,
185 std::placeholders::_2,
nullptr,
nullptr),
187 p.errorVector(
q, actual, {});
191 expected = numericalDerivative21<Vector2, Unit3, Unit3>(
192 std::bind(&Unit3::errorVector, std::placeholders::_1,
193 std::placeholders::_2,
nullptr,
nullptr),
195 p.errorVector(r, actual, {});
199 expected = numericalDerivative22<Vector2, Unit3, Unit3>(
200 std::bind(&Unit3::errorVector, std::placeholders::_1,
201 std::placeholders::_2,
nullptr,
nullptr),
203 p.errorVector(
q, {}, actual);
207 expected = numericalDerivative22<Vector2, Unit3, Unit3>(
208 std::bind(&Unit3::errorVector, std::placeholders::_1,
209 std::placeholders::_2,
nullptr,
nullptr),
211 p.errorVector(r, {}, actual);
227 expected = numericalGradient<Unit3>(
229 p.distance(
q, actual);
233 expected = numericalGradient<Unit3>(
235 p.distance(r, actual);
243 Vector actual =
p.localCoordinates(
p);
296 Unit3 p(0, 1, 0),
q(0 - twist, -1 + twist, 0);
302 Unit3 p(0, 1, 0),
q(0 + twist, -1 - twist, 0);
312 Matrix32
B =
p.basis(
H);
314 B_vec <<
B.col(0),
B.col(1);
322 expected << 0.0, -0.994169047, 0.97618706, -0.0233922129, 0.216930458, 0.105264958;
325 Matrix62 expectedH = numericalDerivative11<Vector6, Unit3>(
326 std::bind(
BasisTest, std::placeholders::_1,
nullptr),
p);
347 std::mt19937
rng(42);
348 for (
int i = 0;
i < num_tests;
i++) {
354 Matrix62 expectedH = numericalDerivative11<Vector6, Unit3>(
355 std::bind(
BasisTest, std::placeholders::_1,
nullptr),
p);
411 std::mt19937
rng(42);
413 Point3 expectedMean(0,0,0), actualMean(0,0,0);
414 for (
size_t i = 0;
i < 100;
i++)
415 actualMean = actualMean + Unit3::Random(
rng).point3();
416 actualMean = actualMean / 100;
423 std::mt19937
rng(42);
424 size_t numIterations = 10000;
426 for (
size_t i = 0;
i < numIterations;
i++) {
428 const Unit3 s1 = Unit3::Random(
rng);
429 const Unit3 s2 = Unit3::Random(
rng);
446 Matrix expectedH = numericalDerivative11<Unit3, Point3>(
447 std::bind(Unit3::FromPoint3, std::placeholders::_1,
nullptr),
point);
453 std::vector<Unit3>
data;
462 for (
size_t i = 0;
i <
data.size();
i++) {
468 for (
size_t i = 0;
i <
data.size() - 1;
i++) {
475 for (
size_t i = 0;
i <
data.size();
i++) {
482 for (
size_t i = 0;
i <
data.size();
i++) {
487 for (
size_t i = 0;
i <
data.size() - 1;
i++) {
502 #if GTSAM_ENABLE_BOOST_SERIALIZATION
503 TEST(actualH, Serialization) {
505 EXPECT(serializationTestHelpers::equalsObj(
p));
506 EXPECT(serializationTestHelpers::equalsXML(
p));
507 EXPECT(serializationTestHelpers::equalsBinary(
p));
514 srand(
time(
nullptr));