/* ---------------------------------------------------------------------------- * GTSAM Copyright 2010, Georgia Tech Research Corporation, * Atlanta, Georgia 30332-0415 * All Rights Reserved * Authors: Frank Dellaert, et al. (see THANKS for the full author list) * See LICENSE for the license information * -------------------------------------------------------------------------- */ /** * @file testRot3.cpp * @brief Unit tests for Rot3Q class * @author Richard Roberts */ #include #include #include #include #include #include #include #include #include #include #include #include using namespace gtsam; typedef TypedSymbol Key; typedef Values Rot3Values; typedef PriorFactor Prior; typedef BetweenFactor Between; typedef NonlinearFactorGraph Graph; /* ************************************************************************* */ TEST(Rot3, optimize) { // Optimize a circle Rot3Values truth; Rot3Values initial; Graph fg; fg.add(Prior(0, Rot3(), sharedSigma(3, 0.01))); for(int j=0; j<6; ++j) { truth.insert(j, Rot3::Rz(M_PI/3.0 * double(j))); initial.insert(j, Rot3::Rz(M_PI/3.0 * double(j) + 0.1 * double(j%2))); fg.add(Between(j, (j+1)%6, Rot3::Rz(M_PI/3.0), sharedSigma(3, 0.01))); } NonlinearOptimizationParameters params; Rot3Values final = optimize(fg, initial, params); EXPECT(assert_equal(truth, final, 1e-5)); } /* ************************************************************************* */ int main() { TestResult tr; return TestRegistry::runAllTests(tr); } /* ************************************************************************* */