diff --git a/.cproject b/.cproject
index 5d3fca7f6..6a33ea37d 100644
--- a/.cproject
+++ b/.cproject
@@ -542,14 +542,6 @@
true
true
-
- make
- -j5
- testPlanarSLAMExample_lago.run
- true
- true
- true
-
make
-j2
@@ -670,10 +662,10 @@
false
true
-
+
make
- -j2
- testGaussianFactor.run
+ -j5
+ testPlanarSLAMExample_lago.run
true
true
true
@@ -734,46 +726,6 @@
true
true
-
- make
- -j2
- all
- true
- true
- true
-
-
- make
- -j2
- check
- true
- true
- true
-
-
- make
- -j2
- clean
- true
- true
- true
-
-
- make
- -j5
- all
- true
- false
- true
-
-
- make
- -j5
- check
- true
- false
- true
-
make
-j2
@@ -790,134 +742,6 @@
true
true
-
- make
- -j2
- all
- true
- true
- true
-
-
- make
- -j2
- clean
- true
- true
- true
-
-
- make
- -j2
- all
- true
- true
- true
-
-
- make
- -j2
- clean
- true
- true
- true
-
-
- make
- -j2
- clean all
- true
- true
- true
-
-
- make
- -j2
- all
- true
- true
- true
-
-
- make
- -j2
- check
- true
- true
- true
-
-
- make
- -j2
- clean
- true
- true
- true
-
-
- make
- -j5
- testGeneralSFMFactor.run
- true
- true
- true
-
-
- make
- -j5
- testProjectionFactor.run
- true
- true
- true
-
-
- make
- -j5
- testGeneralSFMFactor_Cal3Bundler.run
- true
- true
- true
-
-
- make
- -j6 -j8
- testAntiFactor.run
- true
- true
- true
-
-
- make
- -j6 -j8
- testBetweenFactor.run
- true
- true
- true
-
-
- make
- -j5
- testDataset.run
- true
- true
- true
-
-
- make
- -j5
- testEssentialMatrixFactor.run
- true
- true
- true
-
-
- make
- -j5
- testRotateFactor.run
- true
- true
- true
-
make
-j5
@@ -958,6 +782,30 @@
true
true
+
+ make
+ -j2
+ all
+ true
+ true
+ true
+
+
+ make
+ -j2
+ check
+ true
+ true
+ true
+
+
+ make
+ -j2
+ clean
+ true
+ true
+ true
+
make
-j5
@@ -1006,38 +854,6 @@
true
true
-
- make
- -j2
- check
- true
- true
- true
-
-
- make
- -j2
- timeCalibratedCamera.run
- true
- true
- true
-
-
- make
- -j2
- timeRot3.run
- true
- true
- true
-
-
- make
- -j2
- clean
- true
- true
- true
-
make
-j5
@@ -1102,326 +918,6 @@
true
true
-
- make
- -j5
- testDiscreteFactor.run
- true
- true
- true
-
-
- make
- -j1
- testDiscreteBayesTree.run
- true
- false
- true
-
-
- make
- -j5
- testDiscreteFactorGraph.run
- true
- true
- true
-
-
- make
- -j5
- testDiscreteConditional.run
- true
- true
- true
-
-
- make
- -j5
- testDiscreteMarginals.run
- true
- true
- true
-
-
- make
- -j5
- testInference.run
- true
- true
- true
-
-
- make
- -j1
- testSymbolicSequentialSolver.run
- true
- false
- true
-
-
- make
- -j5
- testEliminationTree.run
- true
- true
- true
-
-
- make
- -j1
- testSymbolicBayesTree.run
- true
- false
- true
-
-
- make
- -j2
- vSFMexample.run
- true
- true
- true
-
-
- make
- -j5
- testInvDepthCamera3.run
- true
- true
- true
-
-
- make
- -j5
- testTriangulation.run
- true
- true
- true
-
-
- make
- -j2
- testVSLAMGraph
- true
- true
- true
-
-
- make
- -j5
- check.tests
- true
- true
- true
-
-
- make
- -j2
- timeGaussianFactorGraph.run
- true
- true
- true
-
-
- make
- -j5
- testMarginals.run
- true
- true
- true
-
-
- make
- -j5
- testGaussianISAM2.run
- true
- true
- true
-
-
- make
- -j5
- testSymbolicFactorGraphB.run
- true
- true
- true
-
-
- make
- -j2
- timeSequentialOnDataset.run
- true
- true
- true
-
-
- make
- -j5
- testGradientDescentOptimizer.run
- true
- true
- true
-
-
- make
- -j2
- testGaussianFactor.run
- true
- true
- true
-
-
- make
- -j2
- testNonlinearOptimizer.run
- true
- true
- true
-
-
- make
- -j2
- testGaussianBayesNet.run
- true
- true
- true
-
-
- make
- -j2
- testNonlinearISAM.run
- true
- true
- true
-
-
- make
- -j2
- testNonlinearEquality.run
- true
- true
- true
-
-
- make
- -j2
- testExtendedKalmanFilter.run
- true
- true
- true
-
-
- make
- -j5
- timing.tests
- true
- true
- true
-
-
- make
- -j5
- testNonlinearFactor.run
- true
- true
- true
-
-
- make
- -j5
- clean
- true
- true
- true
-
-
- make
- -j5
- testGaussianJunctionTreeB.run
- true
- true
- true
-
-
- make
-
- testGraph.run
- true
- false
- true
-
-
- make
-
- testJunctionTree.run
- true
- false
- true
-
-
- make
-
- testSymbolicBayesNetB.run
- true
- false
- true
-
-
- make
- -j5
- testGaussianISAM.run
- true
- true
- true
-
-
- make
- -j5
- testDoglegOptimizer.run
- true
- true
- true
-
-
- make
- -j5
- testNonlinearFactorGraph.run
- true
- true
- true
-
-
- make
- -j5
- testIterative.run
- true
- true
- true
-
-
- make
- -j5
- testSubgraphSolver.run
- true
- true
- true
-
-
- make
- -j5
- testGaussianFactorGraphB.run
- true
- true
- true
-
-
- make
- -j5
- testSummarization.run
- true
- true
- true
-
make
-j5
@@ -1574,6 +1070,14 @@
true
true
+
+ make
+ -j5
+ testParticleFactor.run
+ true
+ true
+ true
+
make
-j2
@@ -1654,22 +1158,6 @@
true
true
-
- make
- -j2
- testGaussianFactor.run
- true
- true
- true
-
-
- make
- -j5
- testParticleFactor.run
- true
- true
- true
-
make
-j2
@@ -1766,54 +1254,6 @@
true
true
-
- make
- -j2
- install
- true
- true
- true
-
-
- make
- -j2
- clean
- true
- true
- true
-
-
- make
- -j2
- all
- true
- true
- true
-
-
- make
- -j2
- clean
- true
- true
- true
-
-
- make
- -j2
- all
- true
- true
- true
-
-
- make
- -j2
- clean
- true
- true
- true
-
make
-j2
@@ -1822,130 +1262,18 @@
true
true
-
+
make
-j5
- testStereoCamera.run
+ testImuFactor.run
true
true
true
-
+
make
-j5
- testRot3M.run
- true
- true
- true
-
-
- make
- -j5
- testPoint3.run
- true
- true
- true
-
-
- make
- -j5
- testCalibratedCamera.run
- true
- true
- true
-
-
- make
- -j5
- timeStereoCamera.run
- true
- true
- true
-
-
- make
- -j1 VERBOSE=1
- testHomography2.run
- true
- false
- true
-
-
- make
- -j5
- testPoint2.run
- true
- true
- true
-
-
- make
- -j5
- testPose2.run
- true
- true
- true
-
-
- make
- -j5
- testPose3.run
- true
- true
- true
-
-
- make
- -j5
- timeCalibratedCamera.run
- true
- true
- true
-
-
- make
- -j5
- testPinholeCamera.run
- true
- true
- true
-
-
- make
- -j5
- timePinholeCamera.run
- true
- true
- true
-
-
- make
- -j5
- testCal3DS2.run
- true
- true
- true
-
-
- make
- -j5
- testCal3Bundler.run
- true
- true
- true
-
-
- make
- -j5
- testSphere2.run
- true
- true
- true
-
-
- make
- -j5
- testEssentialMatrix.run
+ testCombinedImuFactor.run
true
true
true
@@ -2091,38 +1419,6 @@
true
true
-
- make
- -j5
- testImuFactor.run
- true
- true
- true
-
-
- make
- -j5
- testCombinedImuFactor.run
- true
- true
- true
-
-
- make
- -j5
- testVector.run
- true
- true
- true
-
-
- make
- -j5
- testMatrix.run
- true
- true
- true
-
make
-j5
@@ -2211,181 +1507,6 @@
true
true
-
- make
- -j2
- SimpleRotation.run
- true
- true
- true
-
-
- make
- -j5
- CameraResectioning.run
- true
- true
- true
-
-
- make
- -j5
- PlanarSLAMExample.run
- true
- true
- true
-
-
- make
- -j2
- all
- true
- true
- true
-
-
- make
- -j2
- easyPoint2KalmanFilter.run
- true
- true
- true
-
-
- make
- -j2
- elaboratePoint2KalmanFilter.run
- true
- true
- true
-
-
- make
- -j5
- Pose2SLAMExample.run
- true
- true
- true
-
-
- make
- -j2
- Pose2SLAMwSPCG_easy.run
- true
- true
- true
-
-
- make
- -j5
- UGM_small.run
- true
- true
- true
-
-
- make
- -j5
- LocalizationExample.run
- true
- true
- true
-
-
- make
- -j5
- OdometryExample.run
- true
- true
- true
-
-
- make
- -j5
- RangeISAMExample_plaza2.run
- true
- true
- true
-
-
- make
- -j5
- SelfCalibrationExample.run
- true
- true
- true
-
-
- make
- -j5
- SFMExample.run
- true
- true
- true
-
-
- make
- -j5
- VisualISAMExample.run
- true
- true
- true
-
-
- make
- -j5
- VisualISAM2Example.run
- true
- true
- true
-
-
- make
- -j5
- Pose2SLAMExample_graphviz.run
- true
- true
- true
-
-
- make
- -j5
- Pose2SLAMExample_graph.run
- true
- true
- true
-
-
- make
- -j5
- SFMExample_bal.run
- true
- true
- true
-
-
- make
- -j4
- testImuFactor.run
- true
- true
- true
-
-
- make
- -j2
- check
- true
- true
- true
-
-
- make
- tests/testGaussianISAM2
- true
- false
- true
-
make
-j2
@@ -2801,6 +1922,924 @@
true
true
+
+ make
+ -j2
+ check
+ true
+ true
+ true
+
+
+ make
+ -j2
+ clean
+ true
+ true
+ true
+
+
+ make
+ -j2
+ install
+ true
+ true
+ true
+
+
+ make
+ -j2
+ all
+ true
+ true
+ true
+
+
+ cmake
+ ..
+ true
+ false
+ true
+
+
+ make
+ -j2
+ testGaussianFactor.run
+ true
+ true
+ true
+
+
+ make
+ -j2
+ all
+ true
+ true
+ true
+
+
+ make
+ -j2
+ check
+ true
+ true
+ true
+
+
+ make
+ -j2
+ clean
+ true
+ true
+ true
+
+
+ make
+ -j5
+ all
+ true
+ false
+ true
+
+
+ make
+ -j5
+ check
+ true
+ false
+ true
+
+
+ make
+ -j2
+ all
+ true
+ true
+ true
+
+
+ make
+ -j2
+ clean
+ true
+ true
+ true
+
+
+ make
+ -j2
+ all
+ true
+ true
+ true
+
+
+ make
+ -j2
+ clean
+ true
+ true
+ true
+
+
+ make
+ -j2
+ clean all
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testGeneralSFMFactor.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testProjectionFactor.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testGeneralSFMFactor_Cal3Bundler.run
+ true
+ true
+ true
+
+
+ make
+ -j6 -j8
+ testAntiFactor.run
+ true
+ true
+ true
+
+
+ make
+ -j6 -j8
+ testBetweenFactor.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testDataset.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testEssentialMatrixFactor.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testRotateFactor.run
+ true
+ true
+ true
+
+
+ make
+ -j2
+ check
+ true
+ true
+ true
+
+
+ make
+ -j2
+ timeCalibratedCamera.run
+ true
+ true
+ true
+
+
+ make
+ -j2
+ timeRot3.run
+ true
+ true
+ true
+
+
+ make
+ -j2
+ clean
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testDiscreteFactor.run
+ true
+ true
+ true
+
+
+ make
+ -j1
+ testDiscreteBayesTree.run
+ true
+ false
+ true
+
+
+ make
+ -j5
+ testDiscreteFactorGraph.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testDiscreteConditional.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testDiscreteMarginals.run
+ true
+ true
+ true
+
+
+ make
+ -j2
+ vSFMexample.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testInference.run
+ true
+ true
+ true
+
+
+ make
+ -j1
+ testSymbolicSequentialSolver.run
+ true
+ false
+ true
+
+
+ make
+ -j5
+ testEliminationTree.run
+ true
+ true
+ true
+
+
+ make
+ -j1
+ testSymbolicBayesTree.run
+ true
+ false
+ true
+
+
+ make
+ -j2
+ testVSLAMGraph
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testInvDepthCamera3.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testTriangulation.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ check.tests
+ true
+ true
+ true
+
+
+ make
+ -j2
+ timeGaussianFactorGraph.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testMarginals.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testGaussianISAM2.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testSymbolicFactorGraphB.run
+ true
+ true
+ true
+
+
+ make
+ -j2
+ timeSequentialOnDataset.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testGradientDescentOptimizer.run
+ true
+ true
+ true
+
+
+ make
+ -j2
+ testGaussianFactor.run
+ true
+ true
+ true
+
+
+ make
+ -j2
+ testNonlinearOptimizer.run
+ true
+ true
+ true
+
+
+ make
+ -j2
+ testGaussianBayesNet.run
+ true
+ true
+ true
+
+
+ make
+ -j2
+ testNonlinearISAM.run
+ true
+ true
+ true
+
+
+ make
+ -j2
+ testNonlinearEquality.run
+ true
+ true
+ true
+
+
+ make
+ -j2
+ testExtendedKalmanFilter.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ timing.tests
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testNonlinearFactor.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ clean
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testGaussianJunctionTreeB.run
+ true
+ true
+ true
+
+
+ make
+
+ testGraph.run
+ true
+ false
+ true
+
+
+ make
+
+ testJunctionTree.run
+ true
+ false
+ true
+
+
+ make
+
+ testSymbolicBayesNetB.run
+ true
+ false
+ true
+
+
+ make
+ -j5
+ testGaussianISAM.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testDoglegOptimizer.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testNonlinearFactorGraph.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testIterative.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testSubgraphSolver.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testGaussianFactorGraphB.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testSummarization.run
+ true
+ true
+ true
+
+
+ make
+ -j2
+ testGaussianFactor.run
+ true
+ true
+ true
+
+
+ make
+ -j2
+ install
+ true
+ true
+ true
+
+
+ make
+ -j2
+ clean
+ true
+ true
+ true
+
+
+ make
+ -j2
+ all
+ true
+ true
+ true
+
+
+ make
+ -j2
+ clean
+ true
+ true
+ true
+
+
+ make
+ -j2
+ all
+ true
+ true
+ true
+
+
+ make
+ -j2
+ clean
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testStereoCamera.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testRot3M.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testPoint3.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testCalibratedCamera.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ timeStereoCamera.run
+ true
+ true
+ true
+
+
+ make
+ -j1 VERBOSE=1
+ testHomography2.run
+ true
+ false
+ true
+
+
+ make
+ -j5
+ testPoint2.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testPose2.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testPose3.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ timeCalibratedCamera.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testPinholeCamera.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ timePinholeCamera.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testCal3DS2.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testCal3Bundler.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testSphere2.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testEssentialMatrix.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testVector.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testMatrix.run
+ true
+ true
+ true
+
+
+ make
+ -j2
+ SimpleRotation.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ CameraResectioning.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ PlanarSLAMExample.run
+ true
+ true
+ true
+
+
+ make
+ -j2
+ all
+ true
+ true
+ true
+
+
+ make
+ -j2
+ easyPoint2KalmanFilter.run
+ true
+ true
+ true
+
+
+ make
+ -j2
+ elaboratePoint2KalmanFilter.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ Pose2SLAMExample.run
+ true
+ true
+ true
+
+
+ make
+ -j2
+ Pose2SLAMwSPCG_easy.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ UGM_small.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ LocalizationExample.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ OdometryExample.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ RangeISAMExample_plaza2.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ SelfCalibrationExample.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ SFMExample.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ VisualISAMExample.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ VisualISAM2Example.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ Pose2SLAMExample_graphviz.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ Pose2SLAMExample_graph.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ SFMExample_bal.run
+ true
+ true
+ true
+
+
+ make
+ -j4
+ testImuFactor.run
+ true
+ true
+ true
+
+
+ make
+ -j2
+ check
+ true
+ true
+ true
+
+
+ make
+ tests/testGaussianISAM2
+ true
+ false
+ true
+
make
-j2
@@ -2897,45 +2936,6 @@
true
true
-
- make
- -j2
- check
- true
- true
- true
-
-
- make
- -j2
- clean
- true
- true
- true
-
-
- make
- -j2
- install
- true
- true
- true
-
-
- make
- -j2
- all
- true
- true
- true
-
-
- cmake
- ..
- true
- false
- true
-
make
-j5
diff --git a/examples/tests/testPlanarSLAMExample_lago.cpp b/examples/tests/testPlanarSLAMExample_lago.cpp
index 5ae112d3d..2eb657369 100644
--- a/examples/tests/testPlanarSLAMExample_lago.cpp
+++ b/examples/tests/testPlanarSLAMExample_lago.cpp
@@ -49,7 +49,7 @@ using namespace std;
using namespace gtsam;
using namespace boost::assign;
-Symbol x0('x', 0), x1('x', 1), x2('x', 2), x3('x',3);
+Symbol x0('x', 0), x1('x', 1), x2('x', 2), x3('x', 3);
static SharedNoiseModel model(noiseModel::Isotropic::Sigma(3, 0.1));
static const double PI = boost::math::constants::pi();
@@ -72,7 +72,8 @@ static const double PI = boost::math::constants::pi();
#include
Values initializeLago(const NonlinearFactorGraph& graph) {
// Find a minimum spanning tree
- PredecessorMap tree = findMinimumSpanningTree >(graph);
+ PredecessorMap tree = findMinimumSpanningTree >(graph);
// Order measurements: ordered spanning path first, loop closure later
@@ -89,9 +90,7 @@ Values initializeLago(const NonlinearFactorGraph& graph) {
return estimateLago;
}
-
-/* *************************************************************************** */
-TEST( Lago, smallGraph_GTmeasurements ) {
+namespace simple {
// We consider a small graph:
// symbolic FG
// x2 0 1
@@ -103,29 +102,65 @@ TEST( Lago, smallGraph_GTmeasurements ) {
// x0
//
- Pose2 pose0 = Pose2( 0.000000, 0.000000, 0.000000);
- Pose2 pose1 = Pose2( 1.000000, 1.000000, 1.570796);
- Pose2 pose2 = Pose2( 0.000000, 2.000000, 3.141593);
- Pose2 pose3 = Pose2(-1.000000, 1.000000, 4.712389);
+Pose2 pose0 = Pose2(0.000000, 0.000000, 0.000000);
+Pose2 pose1 = Pose2(1.000000, 1.000000, 1.570796);
+Pose2 pose2 = Pose2(0.000000, 2.000000, 3.141593);
+Pose2 pose3 = Pose2(-1.000000, 1.000000, 4.712389);
- NonlinearFactorGraph graph;
- graph.add( BetweenFactor(x0, x1, pose0.between(pose1), model));
- graph.add( BetweenFactor(x1, x2, pose1.between(pose2), model));
- graph.add( BetweenFactor(x2, x3, pose2.between(pose3), model));
- graph.add( BetweenFactor(x2, x0, pose2.between(pose0), model));
- graph.add( BetweenFactor(x0, x3, pose0.between(pose3), model));
-
- // graph.print("graph");
-
- Values initialGuessLago = initializeLago(graph);
-
- DOUBLES_EQUAL(0.0, (initialGuessLago.at(x0)).theta(), 1e-6);
- DOUBLES_EQUAL(0.5*PI, (initialGuessLago.at(x1)).theta(), 1e-6);
- DOUBLES_EQUAL(PI, (initialGuessLago.at(x2)).theta(), 1e-6);
- DOUBLES_EQUAL(1.5*PI, (initialGuessLago.at(x3)).theta(), 1e-6);
+NonlinearFactorGraph graph() {
+ NonlinearFactorGraph g;
+ g.add(BetweenFactor(x0, x1, pose0.between(pose1), model));
+ g.add(BetweenFactor(x1, x2, pose1.between(pose2), model));
+ g.add(BetweenFactor(x2, x3, pose2.between(pose3), model));
+ g.add(BetweenFactor(x2, x0, pose2.between(pose0), model));
+ g.add(BetweenFactor(x0, x3, pose0.between(pose3), model));
+ return g;
+}
}
+map misteryFunction(const PredecessorMap& tree, const NonlinearFactorGraph&){
+
+}
+
+/* *************************************************************************** */
+TEST( Lago, sumOverLoops ) {
+ NonlinearFactorGraph g = simple::graph();
+ PredecessorMap tree = findMinimumSpanningTree >(g);
+
+ // check the tree structure
+ EXPECT_LONGS_EQUAL(tree[x0], x0);
+ EXPECT_LONGS_EQUAL(tree[x1], x0);
+ EXPECT_LONGS_EQUAL(tree[x2], x0);
+ EXPECT_LONGS_EQUAL(tree[x3], x0);
+
+ g.print("");
+
+ map expected;
+ expected[x0]= 0;
+ expected[x1]= 1.570796; // edge x0->x1 (consistent with edge (x0,x1))
+ expected[x2]= -3.141593; // edge x0->x2 (traversed backwards wrt edge (x2,x0))
+ expected[x3]= 4.712389; // edge x0->x3 (consistent with edge (x0,x3))
+
+ map actual;
+ actual = misteryFunction(tree, g);
+}
+
+/* *************************************************************************** */
+//TEST( Lago, smallGraph_GTmeasurements ) {
+//
+// Values initialGuessLago = initializeLago(simple::graph());
+//
+// DOUBLES_EQUAL(0.0, (initialGuessLago.at(x0)).theta(), 1e-6);
+// DOUBLES_EQUAL(0.5 * PI, (initialGuessLago.at(x1)).theta(), 1e-6);
+// DOUBLES_EQUAL(PI, (initialGuessLago.at(x2)).theta(), 1e-6);
+// DOUBLES_EQUAL(1.5 * PI, (initialGuessLago.at(x3)).theta(), 1e-6);
+//}
+
/* ************************************************************************* */
- int main() { TestResult tr; return TestRegistry::runAllTests(tr);}
+int main() {
+ TestResult tr;
+ return TestRegistry::runAllTests(tr);
+}
/* ************************************************************************* */