diff --git a/.cproject b/.cproject
index 5d8469baa..10b16f91c 100644
--- a/.cproject
+++ b/.cproject
@@ -5,13 +5,13 @@
-
-
+
+
@@ -60,13 +60,13 @@
-
-
+
+
@@ -116,13 +116,13 @@
-
-
+
+
@@ -484,341 +484,6 @@
-
- make
- -j5
- testCombinedImuFactor.run
- true
- true
- true
-
-
- make
- -j5
- testImuFactor.run
- true
- true
- true
-
-
- make
- -j5
- testAHRSFactor.run
- true
- true
- true
-
-
- make
- -j8
- testAttitudeFactor.run
- true
- true
- true
-
-
- make
- -j2
- all
- true
- true
- true
-
-
- make
- -j2
- testNonlinearConstraint.run
- true
- true
- true
-
-
- make
- -j2
- testLieConfig.run
- true
- true
- true
-
-
- make
- -j2
- testConstraintOptimizer.run
- true
- true
- true
-
-
- make
- -j2
- testGaussianFactor.run
- true
- true
- true
-
-
- make
- -j4
- testImuFactor.run
- true
- true
- true
-
-
- make
- -j2
- all
- true
- true
- true
-
-
- make
- -j2
- check
- true
- true
- true
-
-
- make
- -j2
- clean
- true
- true
- true
-
-
- make
- -j2
- check
- true
- true
- true
-
-
- make
- -j2
- clean
- true
- true
- true
-
-
- make
- -j2
- testBTree.run
- true
- true
- true
-
-
- make
- -j2
- testDSF.run
- true
- true
- true
-
-
- make
- -j2
- testDSFVector.run
- true
- true
- true
-
-
- make
- -j2
- testMatrix.run
- true
- true
- true
-
-
- make
- -j2
- testSPQRUtil.run
- true
- true
- true
-
-
- make
- -j2
- testVector.run
- true
- true
- true
-
-
- make
- -j2
- timeMatrix.run
- true
- true
- true
-
-
- make
- -j2
- all
- true
- true
- true
-
-
- make
- -j2
- all
- true
- true
- true
-
-
- make
- -j2
- clean
- true
- true
- true
-
-
- make
- -j5
- wrap
- true
- 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
- check
- true
- true
- true
-
-
- make
- -j2
- tests/testLieConfig.run
- true
- true
- true
-
-
- make
- -j4
- testSimilarity3.run
- true
- true
- true
-
-
- make
- -j5
- testInvDepthCamera3.run
- true
- true
- true
-
-
- make
- -j5
- testTriangulation.run
- true
- true
- true
-
-
- make
- -j4
- testEvent.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
-j5
@@ -867,183 +532,39 @@
true
true
-
- make
- -j5
- testCal3Bundler.run
- true
- true
- true
-
-
- make
- -j5
- testCal3DS2.run
- true
- true
- true
-
-
- make
- -j5
- testCalibratedCamera.run
- true
- true
- true
-
-
- make
- -j5
- testEssentialMatrix.run
- true
- true
- true
-
-
- make
- -j1 VERBOSE=1
- testHomography2.run
- true
- false
- true
-
-
- make
- -j5
- testPinholeCamera.run
- true
- true
- true
-
-
- make
- -j5
- testPoint2.run
- true
- true
- true
-
-
- make
- -j5
- testPoint3.run
- true
- true
- true
-
-
- make
- -j5
- testPose2.run
- true
- true
- true
-
-
- make
- -j5
- testPose3.run
- true
- true
- true
-
-
- make
- -j5
- testRot3M.run
- true
- true
- true
-
-
- make
- -j5
- testSphere2.run
- true
- true
- true
-
-
- make
- -j5
- testStereoCamera.run
- true
- true
- true
-
-
- make
- -j5
- testCal3Unified.run
- true
- true
- true
-
-
- make
- -j5
- testRot2.run
- true
- true
- true
-
-
- make
- -j5
- testRot3Q.run
- true
- true
- true
-
-
- make
- -j5
- testRot3.run
- true
- true
- true
-
-
+
make
-j4
- testSO3.run
+ testSimilarity3.run
true
true
true
-
+
+ make
+ -j5
+ testInvDepthCamera3.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testTriangulation.run
+ true
+ true
+ true
+
+
make
-j4
- testQuaternion.run
+ testEvent.run
true
true
true
-
- make
- -j4
- testOrientedPlane3.run
- true
- true
- true
-
-
- make
- -j4
- testPinholePose.run
- true
- true
- true
-
-
- make
- -j4
- testCyclic.run
- true
- true
- true
-
-
+
make
-j2
all
@@ -1051,7 +572,7 @@
true
true
-
+
make
-j2
clean
@@ -1059,23 +580,143 @@
true
true
-
+
+ make
+ -k
+ check
+ true
+ false
+ true
+
+
+ make
+
+ tests/testBayesTree.run
+ true
+ false
+ true
+
+
+ make
+
+ testBinaryBayesNet.run
+ true
+ false
+ true
+
+
make
-j2
- clean all
+ testFactorGraph.run
true
true
true
-
+
make
-j2
- install
+ testISAM.run
true
true
true
-
+
+ make
+ -j2
+ testJunctionTree.run
+ true
+ true
+ true
+
+
+ make
+ -j2
+ testKey.run
+ true
+ true
+ true
+
+
+ make
+ -j2
+ testOrdering.run
+ true
+ true
+ true
+
+
+ make
+
+ testSymbolicBayesNet.run
+ true
+ false
+ true
+
+
+ make
+
+ tests/testSymbolicFactor.run
+ true
+ false
+ true
+
+
+ make
+
+ testSymbolicFactorGraph.run
+ true
+ false
+ true
+
+
+ make
+ -j2
+ timeSymbolMaps.run
+ true
+ true
+ true
+
+
+ make
+
+ tests/testBayesTree
+ true
+ false
+ true
+
+
+ make
+ -j2
+ tests/testPose2.run
+ true
+ true
+ true
+
+
+ make
+ -j2
+ tests/testPose3.run
+ true
+ true
+ true
+
+
+ make
+ -j2
+ all
+ true
+ true
+ true
+
+
+ make
+ -j2
+ check
+ true
+ true
+ true
+
+
make
-j2
clean
@@ -1227,146 +868,154 @@
true
true
-
+
make
- -j2
- all
+ -j5
+ testGaussianFactorGraphUnordered.run
true
true
true
-
+
make
- -j2
- check
+ -j5
+ testGaussianBayesNetUnordered.run
true
true
true
-
+
make
- -j2
+ -j5
+ testGaussianConditional.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testGaussianDensity.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testGaussianJunctionTree.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testHessianFactor.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testJacobianFactor.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testKalmanFilter.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testNoiseModel.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testSampler.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testSerializationLinear.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testVectorValues.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testGaussianBayesTree.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testCombinedImuFactor.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testImuFactor.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testAHRSFactor.run
+ true
+ true
+ true
+
+
+ make
+ -j8
+ testAttitudeFactor.run
+ true
+ true
+ true
+
+
+ make
+ -j5
clean
true
true
true
-
+
make
- -j2
- testPlanarSLAM.run
- true
- true
- true
-
-
- make
- -j2
- testPose2Config.run
- true
- true
- true
-
-
- make
- -j2
- testPose2Factor.run
- true
- true
- true
-
-
- make
- -j2
- testPose2Prior.run
- true
- true
- true
-
-
- make
- -j2
- testPose2SLAM.run
- true
- true
- true
-
-
- make
- -j2
- testPose3Config.run
- true
- true
- true
-
-
- make
- -j2
- testPose3SLAM.run
- true
- true
- true
-
-
- make
-
- testSimulated2DOriented.run
- true
- false
- true
-
-
- make
- -j2
- testVSLAMConfig.run
- true
- true
- true
-
-
- make
- -j2
- testVSLAMFactor.run
- true
- true
- true
-
-
- make
- -j2
- testVSLAMGraph.run
- true
- true
- true
-
-
- make
- -j2
- testPose3Factor.run
- true
- true
- true
-
-
- make
-
- testSimulated2D.run
- true
- false
- true
-
-
- make
-
- testSimulated3D.run
- true
- false
- true
-
-
- make
- -j2
- tests/testGaussianISAM2
+ -j5
+ all
true
true
true
@@ -1461,111 +1110,477 @@
make
+
testErrors.run
true
false
true
-
+
make
- -j5
- testAntiFactor.run
+ -j2
+ check
true
true
true
-
+
make
- -j5
- testPriorFactor.run
+ -j2
+ tests/testGaussianJunctionTree.run
true
true
true
-
+
make
- -j5
- testDataset.run
+ -j2
+ tests/testGaussianFactor.run
true
true
true
-
+
make
- -j5
- testEssentialMatrixFactor.run
+ -j2
+ tests/testGaussianConditional.run
true
true
true
-
+
make
- -j5
- testGeneralSFMFactor_Cal3Bundler.run
+ -j2
+ tests/timeSLAMlike.run
true
true
true
-
+
make
- -j5
- testGeneralSFMFactor.run
+ -j2
+ check
true
true
true
-
+
make
- -j5
- testProjectionFactor.run
+ -j2
+ clean
true
true
true
-
+
make
- -j5
- testRotateFactor.run
+ -j2
+ testBTree.run
true
true
true
-
+
make
- -j5
- testPoseRotationPrior.run
+ -j2
+ testDSF.run
true
true
true
-
+
make
- -j5
- testImplicitSchurFactor.run
+ -j2
+ testDSFVector.run
true
true
true
-
+
+ make
+ -j2
+ testMatrix.run
+ true
+ true
+ true
+
+
+ make
+ -j2
+ testSPQRUtil.run
+ true
+ true
+ true
+
+
+ make
+ -j2
+ testVector.run
+ true
+ true
+ true
+
+
+ make
+ -j2
+ timeMatrix.run
+ true
+ true
+ true
+
+
+ make
+ -j2
+ all
+ true
+ true
+ true
+
+
+ make
+ -j2
+ check
+ true
+ true
+ true
+
+
+ make
+ -j2
+ testClusterTree.run
+ true
+ true
+ true
+
+
+ make
+ -j2
+ testJunctionTree.run
+ true
+ true
+ true
+
+
+ make
+ -j2
+ tests/testEliminationTree.run
+ true
+ true
+ true
+
+
+ make
+ -j2
+ tests/testSymbolicFactor.run
+ true
+ true
+ true
+
+
+ make
+ -j2
+ tests/testVariableSlots.run
+ true
+ true
+ true
+
+
+ make
+ -j2
+ tests/testConditional.run
+ true
+ true
+ true
+
+
+ make
+ -j2
+ tests/testSymbolicFactorGraph.run
+ true
+ true
+ true
+
+
+ make
+ -j2
+ all
+ true
+ true
+ true
+
+
+ make
+ -j2
+ testNonlinearConstraint.run
+ true
+ true
+ true
+
+
+ make
+ -j2
+ testLieConfig.run
+ true
+ true
+ true
+
+
+ make
+ -j2
+ testConstraintOptimizer.run
+ true
+ true
+ true
+
+
+ make
+ -j2
+ check
+ true
+ true
+ true
+
+
+ make
+ -j2
+ all
+ true
+ true
+ true
+
+
+ make
+ -j2
+ check
+ true
+ true
+ true
+
+
+ make
+ -j2
+ clean
+ true
+ true
+ true
+
+
+ make
+ -j2
+ testPlanarSLAM.run
+ true
+ true
+ true
+
+
+ make
+ -j2
+ testPose2Config.run
+ true
+ true
+ true
+
+
+ make
+ -j2
+ testPose2Factor.run
+ true
+ true
+ true
+
+
+ make
+ -j2
+ testPose2Prior.run
+ true
+ true
+ true
+
+
+ make
+ -j2
+ testPose2SLAM.run
+ true
+ true
+ true
+
+
+ make
+ -j2
+ testPose3Config.run
+ true
+ true
+ true
+
+
+ make
+ -j2
+ testPose3SLAM.run
+ true
+ true
+ true
+
+
+ make
+ testSimulated2DOriented.run
+ true
+ false
+ true
+
+
+ make
+ -j2
+ testVSLAMConfig.run
+ true
+ true
+ true
+
+
+ make
+ -j2
+ testVSLAMFactor.run
+ true
+ true
+ true
+
+
+ make
+ -j2
+ testVSLAMGraph.run
+ true
+ true
+ true
+
+
+ make
+ -j2
+ testPose3Factor.run
+ true
+ true
+ true
+
+
+ make
+ testSimulated2D.run
+ true
+ false
+ true
+
+
+ make
+ testSimulated3D.run
+ true
+ false
+ true
+
+
+ make
+ -j2
+ tests/testGaussianISAM2
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testBTree.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testDSF.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testDSFMap.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testDSFVector.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testFixedVector.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testEliminationTree.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testInference.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testKey.run
+ true
+ true
+ true
+
+
+ make
+ -j1
+ testSymbolicBayesTree.run
+ true
+ false
+ true
+
+
+ make
+ -j1
+ testSymbolicSequentialSolver.run
+ true
+ false
+ true
+
+
make
-j4
- testRangeFactor.run
+ testLabeledSymbol.run
true
true
true
-
+
make
- -j4
- testOrientedPlane3Factor.run
+ -j2
+ check
true
true
true
-
+
make
- -j4
- testSmartProjectionPoseFactor.run
+ -j2
+ tests/testLieConfig.run
true
true
true
@@ -1771,6 +1786,7 @@
cpack
+
-G DEB
true
false
@@ -1778,6 +1794,7 @@
cpack
+
-G RPM
true
false
@@ -1785,6 +1802,7 @@
cpack
+
-G TGZ
true
false
@@ -1792,6 +1810,7 @@
cpack
+
--config CPackSourceConfig.cmake
true
false
@@ -1973,7 +1992,15 @@
false
true
-
+
+ make
+ -j4
+ check.sam
+ true
+ true
+ true
+
+
make
-j2
check
@@ -1981,55 +2008,38 @@
true
true
-
+
make
-
- tests/testGaussianISAM2
+ -j2
+ clean
+ true
+ true
+ true
+
+
+ make
+ -j2
+ install
+ true
+ true
+ true
+
+
+ make
+ -j2
+ all
+ true
+ true
+ true
+
+
+ cmake
+ ..
true
false
true
-
- make
- -j2
- check
- true
- true
- true
-
-
- make
- -j2
- tests/testGaussianJunctionTree.run
- true
- true
- true
-
-
- make
- -j2
- tests/testGaussianFactor.run
- true
- true
- true
-
-
- make
- -j2
- tests/testGaussianConditional.run
- true
- true
- true
-
-
- make
- -j2
- tests/timeSLAMlike.run
- true
- true
- true
-
-
+
make
-j2
testGaussianFactor.run
@@ -2037,10 +2047,458 @@
true
true
-
+
make
-j5
- testParticleFactor.run
+ testCal3Bundler.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testCal3DS2.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testCalibratedCamera.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testEssentialMatrix.run
+ true
+ true
+ true
+
+
+ make
+ -j1 VERBOSE=1
+ testHomography2.run
+ true
+ false
+ true
+
+
+ make
+ -j5
+ testPinholeCamera.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testPoint2.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testPoint3.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testPose2.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testPose3.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testRot3M.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testSphere2.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testStereoCamera.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testCal3Unified.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testRot2.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testRot3Q.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testRot3.run
+ true
+ true
+ true
+
+
+ make
+ -j4
+ testSO3.run
+ true
+ true
+ true
+
+
+ make
+ -j4
+ testQuaternion.run
+ true
+ true
+ true
+
+
+ make
+ -j4
+ testOrientedPlane3.run
+ true
+ true
+ true
+
+
+ make
+ -j4
+ testPinholePose.run
+ true
+ true
+ true
+
+
+ make
+ -j4
+ testCyclic.run
+ true
+ true
+ true
+
+
+ make
+ -j4
+ testUnit3.run
+ true
+ true
+ true
+
+
+ make
+ -j4
+ testBearingRange.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
+ -j1
+ testDiscreteBayesTree.run
+ true
+ false
+ true
+
+
+ make
+ -j5
+ testDiscreteConditional.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testDiscreteFactor.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testDiscreteFactorGraph.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testDiscreteMarginals.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testIMUSystem.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testPoseRTV.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testVelocityConstraint.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testVelocityConstraint3.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
+ testWrap.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testSpirit.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ check.wrap
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testMethod.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testClass.run
+ true
+ true
+ true
+
+
+ make
+ -j4
+ testType.run
+ true
+ true
+ true
+
+
+ make
+ -j4
+ testArgument.run
+ true
+ true
+ true
+
+
+ make
+ -j4
+ testReturnValue.run
+ true
+ true
+ true
+
+
+ make
+ -j4
+ testTemplate.run
+ true
+ true
+ true
+
+
+ make
+ -j4
+ testGlobalFunction.run
true
true
true
@@ -2093,7 +2551,343 @@
true
true
-
+
+ make
+ -j2
+ vSFMexample.run
+ true
+ true
+ true
+
+
+ make
+ -j2
+ testVSLAMGraph
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testMatrix.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testVector.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testNumericalDerivative.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testVerticalBlockMatrix.run
+ true
+ true
+ true
+
+
+ make
+ -j4
+ testOptionalJacobian.run
+ true
+ true
+ true
+
+
+ make
+ -j4
+ testGroup.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
+ -j5
+ testManifold.run
+ true
+ true
+ true
+
+
+ make
+ -j4
+ testLie.run
+ true
+ true
+ true
+
+
+ make
+ -j4
+ testSerializationSLAM.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testParticleFactor.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
@@ -2101,7 +2895,7 @@
true
true
-
+
make
-j2
clean
@@ -2109,129 +2903,15 @@
true
true
-
- make
- -k
- check
- true
- false
- true
-
-
- make
- tests/testBayesTree.run
- true
- false
- true
-
-
- make
- testBinaryBayesNet.run
- true
- false
- true
-
-
+
make
-j2
- testFactorGraph.run
+ all
true
true
true
-
- make
- -j2
- testISAM.run
- true
- true
- true
-
-
- make
- -j2
- testJunctionTree.run
- true
- true
- true
-
-
- make
- -j2
- testKey.run
- true
- true
- true
-
-
- make
- -j2
- testOrdering.run
- true
- true
- true
-
-
- make
- testSymbolicBayesNet.run
- true
- false
- true
-
-
- make
- tests/testSymbolicFactor.run
- true
- false
- true
-
-
- make
- testSymbolicFactorGraph.run
- true
- false
- true
-
-
- make
- -j2
- timeSymbolMaps.run
- true
- true
- true
-
-
- make
- tests/testBayesTree
- true
- false
- true
-
-
- make
- -j2
- check
- true
- true
- true
-
-
- make
- -j2
- timeCalibratedCamera.run
- true
- true
- true
-
-
- make
- -j2
- timeRot3.run
- true
- true
- true
-
-
+
make
-j2
clean
@@ -2239,18 +2919,106 @@
true
true
-
+
make
- -j2
- tests/testPose2.run
+ -j5
+ testAntiFactor.run
true
true
true
-
+
make
- -j2
- tests/testPose3.run
+ -j5
+ testPriorFactor.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testDataset.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testEssentialMatrixFactor.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testGeneralSFMFactor_Cal3Bundler.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testGeneralSFMFactor.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testProjectionFactor.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testRotateFactor.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testPoseRotationPrior.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testImplicitSchurFactor.run
+ true
+ true
+ true
+
+
+ make
+ -j4
+ testOrientedPlane3Factor.run
+ true
+ true
+ true
+
+
+ make
+ -j4
+ testSmartProjectionPoseFactor.run
+ true
+ true
+ true
+
+
+ make
+ -j4
+ testInitializePose3.run
true
true
true
@@ -2455,6 +3223,213 @@
true
true
+
+ make
+ -j5
+ testLago.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testLinearContainerFactor.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testOrdering.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testValues.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ testWhiteNoiseFactor.run
+ true
+ true
+ true
+
+
+ make
+ -j4
+ testExpression.run
+ true
+ true
+ true
+
+
+ make
+ -j4
+ testAdaptAutoDiff.run
+ true
+ true
+ true
+
+
+ make
+ -j4
+ testCallRecord.run
+ true
+ true
+ true
+
+
+ make
+ -j4
+ testExpressionFactor.run
+ true
+ true
+ true
+
+
+ make
+ -j4
+ testExecutionTrace.run
+ true
+ true
+ true
+
+
+ make
+ -j4
+ testSerializationNonlinear.run
+ true
+ true
+ true
+
+
+ make
+ -j4
+ testImuFactor.run
+ true
+ true
+ true
+
+
+ make
+ -j2
+ check
+ true
+ true
+ true
+
+
+ make
+ tests/testGaussianISAM2
+ true
+ false
+ true
+
+
+ make
+ -j5
+ timeCalibratedCamera.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ timePinholeCamera.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ timeStereoCamera.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ timeLago.run
+ true
+ true
+ true
+
+
+ make
+ -j5
+ timePose3.run
+ true
+ true
+ true
+
+
+ make
+ -j4
+ timeAdaptAutoDiff.run
+ true
+ true
+ true
+
+
+ make
+ -j4
+ timeCameraExpression.run
+ true
+ true
+ true
+
+
+ make
+ -j4
+ timeOneCameraExpression.run
+ true
+ true
+ true
+
+
+ make
+ -j4
+ timeSFMExpressions.run
+ true
+ true
+ true
+
+
+ make
+ -j4
+ timeIncremental.run
+ true
+ true
+ true
+
+
+ make
+ -j4
+ timeSchurFactors.run
+ true
+ true
+ true
+
+
+ make
+ -j4
+ timeRot2.run
+ true
+ true
+ true
+
make
-j2
@@ -2551,927 +3526,34 @@
true
true
-
- make
- -j1
- testDiscreteBayesTree.run
- true
- false
- true
-
-
- make
- -j5
- testDiscreteConditional.run
- true
- true
- true
-
-
- make
- -j5
- testDiscreteFactor.run
- true
- true
- true
-
-
- make
- -j5
- testDiscreteFactorGraph.run
- true
- true
- true
-
-
- make
- -j5
- testDiscreteMarginals.run
- true
- true
- true
-
-
- make
- -j5
- testEliminationTree.run
- true
- true
- true
-
-
- make
- -j5
- testInference.run
- true
- true
- true
-
-
- make
- -j5
- testKey.run
- true
- true
- true
-
-
- make
- -j1
- testSymbolicBayesTree.run
- true
- false
- true
-
-
- make
- -j1
- testSymbolicSequentialSolver.run
- true
- false
- true
-
-
+
make
-j4
- testLabeledSymbol.run
+ testBearingFactor.run
true
true
true
-
- make
- -j2
- check
- true
- true
- true
-
-
- make
- -j2
- testClusterTree.run
- true
- true
- true
-
-
- make
- -j2
- testJunctionTree.run
- true
- true
- true
-
-
- make
- -j2
- tests/testEliminationTree.run
- true
- true
- true
-
-
- make
- -j2
- tests/testSymbolicFactor.run
- true
- true
- true
-
-
- make
- -j2
- tests/testVariableSlots.run
- true
- true
- true
-
-
- make
- -j2
- tests/testConditional.run
- true
- true
- true
-
-
- make
- -j2
- tests/testSymbolicFactorGraph.run
- true
- true
- true
-
-
- make
- -j5
- testLago.run
- true
- true
- true
-
-
- make
- -j5
- testLinearContainerFactor.run
- true
- true
- true
-
-
- make
- -j5
- testOrdering.run
- true
- true
- true
-
-
- make
- -j5
- testValues.run
- true
- true
- true
-
-
- make
- -j5
- testWhiteNoiseFactor.run
- true
- true
- true
-
-
+
make
-j4
- testExpression.run
+ testRangeFactor.run
true
true
true
-
+
make
-j4
- testAdaptAutoDiff.run
+ testBearingRangeFactor.run
true
true
true
-
- make
- -j4
- testCallRecord.run
- true
- true
- true
-
-
- make
- -j4
- testExpressionFactor.run
- true
- true
- true
-
-
- make
- -j4
- testExecutionTrace.run
- true
- true
- true
-
-
+
make
-j5
- testIMUSystem.run
- true
- true
- true
-
-
- make
- -j5
- testPoseRTV.run
- true
- true
- true
-
-
- make
- -j5
- testVelocityConstraint.run
- true
- true
- true
-
-
- make
- -j5
- testVelocityConstraint3.run
- true
- true
- true
-
-
- make
- -j5
- timeCalibratedCamera.run
- true
- true
- true
-
-
- make
- -j5
- timePinholeCamera.run
- true
- true
- true
-
-
- make
- -j5
- timeStereoCamera.run
- true
- true
- true
-
-
- make
- -j5
- timeLago.run
- true
- true
- true
-
-
- make
- -j5
- timePose3.run
- true
- true
- true
-
-
- make
- -j4
- timeAdaptAutoDiff.run
- true
- true
- true
-
-
- make
- -j4
- timeCameraExpression.run
- true
- true
- true
-
-
- make
- -j4
- timeOneCameraExpression.run
- true
- true
- true
-
-
- make
- -j4
- timeSFMExpressions.run
- true
- true
- true
-
-
- make
- -j4
- timeIncremental.run
- true
- true
- true
-
-
- make
- -j4
- timeSchurFactors.run
- true
- true
- true
-
-
- make
- -j5
- testBTree.run
- true
- true
- true
-
-
- make
- -j5
- testDSF.run
- true
- true
- true
-
-
- make
- -j5
- testDSFMap.run
- true
- true
- true
-
-
- make
- -j5
- testDSFVector.run
- true
- true
- true
-
-
- make
- -j5
- testFixedVector.run
- true
- true
- true
-
-
- make
- -j2
- all
- true
- true
- true
-
-
- make
- -j2
- clean
- true
- true
- true
-
-
- make
- -j5
- testGaussianFactorGraphUnordered.run
- true
- true
- true
-
-
- make
- -j5
- testGaussianBayesNetUnordered.run
- true
- true
- true
-
-
- make
- -j5
- testGaussianConditional.run
- true
- true
- true
-
-
- make
- -j5
- testGaussianDensity.run
- true
- true
- true
-
-
- make
- -j5
- testGaussianJunctionTree.run
- true
- true
- true
-
-
- make
- -j5
- testHessianFactor.run
- true
- true
- true
-
-
- make
- -j5
- testJacobianFactor.run
- true
- true
- true
-
-
- make
- -j5
- testKalmanFilter.run
- true
- true
- true
-
-
- make
- -j5
- testNoiseModel.run
- true
- true
- true
-
-
- make
- -j5
- testSampler.run
- true
- true
- true
-
-
- make
- -j5
- testSerializationLinear.run
- true
- true
- true
-
-
- make
- -j5
- testVectorValues.run
- true
- true
- true
-
-
- make
- -j5
- testGaussianBayesTree.run
- true
- true
- true
-
-
- make
- -j5
- testWrap.run
- true
- true
- true
-
-
- make
- -j5
- testSpirit.run
- true
- true
- true
-
-
- make
- -j5
- check.wrap
- true
- true
- true
-
-
- make
- -j5
- testMethod.run
- true
- true
- true
-
-
- make
- -j5
- testClass.run
- true
- true
- true
-
-
- make
- -j4
- testType.run
- true
- true
- true
-
-
- make
- -j4
- testArgument.run
- true
- true
- true
-
-
- make
- -j4
- testReturnValue.run
- true
- true
- true
-
-
- make
- -j4
- testTemplate.run
- true
- true
- true
-
-
- make
- -j4
- testGlobalFunction.run
- true
- true
- true
-
-
- make
- -j2
- all
- true
- true
- true
-
-
- make
- -j2
- clean
- true
- true
- true
-
-
- make
- -j5
- testMatrix.run
- true
- true
- true
-
-
- make
- -j5
- testVector.run
- true
- true
- true
-
-
- make
- -j5
- testNumericalDerivative.run
- true
- true
- true
-
-
- make
- -j5
- testVerticalBlockMatrix.run
- true
- true
- true
-
-
- make
- -j4
- testOptionalJacobian.run
- true
- true
- true
-
-
- make
- -j4
- testGroup.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
- -j5
- testManifold.run
- true
- true
- true
-
-
- make
- -j4
- testLie.run
- true
- true
- true
-
-
- make
- -j2
- vSFMexample.run
- true
- true
- true
-
-
- make
- -j5
- clean
- true
- true
- true
-
-
- make
- -j5
- all
- true
- true
- true
-
-
- make
- -j2
- check
- true
- true
- true
-
-
- make
- -j2
- testVSLAMGraph
+ wrap
true
true
true
diff --git a/examples/PlanarSLAMExample.cpp b/examples/PlanarSLAMExample.cpp
index 84f9be3a1..a716f9cd8 100644
--- a/examples/PlanarSLAMExample.cpp
+++ b/examples/PlanarSLAMExample.cpp
@@ -42,7 +42,7 @@
// Also, we will initialize the robot at the origin using a Prior factor.
#include
#include
-#include
+#include
// When the factors are created, we will add them to a Factor Graph. As the factors we are using
// are nonlinear factors, we will need a Nonlinear Factor Graph.
diff --git a/examples/RangeISAMExample_plaza2.cpp b/examples/RangeISAMExample_plaza2.cpp
index 04632e9e3..4d116c7ec 100644
--- a/examples/RangeISAMExample_plaza2.cpp
+++ b/examples/RangeISAMExample_plaza2.cpp
@@ -39,7 +39,7 @@
// have been provided with the library for solving robotics SLAM problems.
#include
#include
-#include
+#include
#include
// Standard headers, added last, so we know headers above work on their own
diff --git a/examples/SolverComparer.cpp b/examples/SolverComparer.cpp
index 068846884..2000b348b 100644
--- a/examples/SolverComparer.cpp
+++ b/examples/SolverComparer.cpp
@@ -32,7 +32,7 @@
*/
#include
-#include
+#include
#include
#include
#include
diff --git a/gtsam.h b/gtsam.h
index ebd554549..1ddae3f48 100644
--- a/gtsam.h
+++ b/gtsam.h
@@ -1,4 +1,5 @@
/**
+
* GTSAM Wrap Module Definition
*
* These are the current classes available through the matlab toolbox interface,
@@ -156,7 +157,7 @@ virtual class Value {
size_t dim() const;
};
-#include
+#include
class LieScalar {
// Standard constructors
LieScalar();
@@ -185,7 +186,7 @@ class LieScalar {
static Vector Logmap(const gtsam::LieScalar& p);
};
-#include
+#include
class LieVector {
// Standard constructors
LieVector();
@@ -217,7 +218,7 @@ class LieVector {
void serialize() const;
};
-#include
+#include
class LieMatrix {
// Standard constructors
LieMatrix();
@@ -2262,7 +2263,7 @@ virtual class NonlinearEquality : gtsam::NoiseModelFactor {
};
-#include
+#include
template
virtual class RangeFactor : gtsam::NoiseModelFactor {
RangeFactor(size_t key1, size_t key2, double measured, const gtsam::noiseModel::Base* noiseModel);
@@ -2272,20 +2273,16 @@ typedef gtsam::RangeFactor RangeFactorPosePoint2;
typedef gtsam::RangeFactor RangeFactorPosePoint3;
typedef gtsam::RangeFactor RangeFactorPose2;
typedef gtsam::RangeFactor RangeFactorPose3;
-
-// Commented out by Frank Dec 2014: not poses!
-// If needed, we need a RangeFactor that takes a camera, extracts the pose
-// Should be easy with Expressions
-//typedef gtsam::RangeFactor RangeFactorCalibratedCameraPoint;
-//typedef gtsam::RangeFactor RangeFactorSimpleCameraPoint;
-//typedef gtsam::RangeFactor RangeFactorCalibratedCamera;
-//typedef gtsam::RangeFactor RangeFactorSimpleCamera;
+typedef gtsam::RangeFactor RangeFactorCalibratedCameraPoint;
+typedef gtsam::RangeFactor RangeFactorSimpleCameraPoint;
+typedef gtsam::RangeFactor RangeFactorCalibratedCamera;
+typedef gtsam::RangeFactor RangeFactorSimpleCamera;
-#include
-template
+#include
+template
virtual class BearingFactor : gtsam::NoiseModelFactor {
- BearingFactor(size_t key1, size_t key2, const ROTATION& measured, const gtsam::noiseModel::Base* noiseModel);
+ BearingFactor(size_t key1, size_t key2, const BEARING& measured, const gtsam::noiseModel::Base* noiseModel);
// enabling serialization functionality
void serialize() const;
@@ -2293,19 +2290,18 @@ virtual class BearingFactor : gtsam::NoiseModelFactor {
typedef gtsam::BearingFactor BearingFactor2D;
-
-#include
-template
+#include
+template
virtual class BearingRangeFactor : gtsam::NoiseModelFactor {
- BearingRangeFactor(size_t poseKey, size_t pointKey, const ROTATION& measuredBearing, double measuredRange, const gtsam::noiseModel::Base* noiseModel);
-
- pair measured() const;
+ BearingRangeFactor(size_t poseKey, size_t pointKey,
+ const BEARING& measuredBearing, const RANGE& measuredRange,
+ const gtsam::noiseModel::Base* noiseModel);
// enabling serialization functionality
void serialize() const;
};
-typedef gtsam::BearingRangeFactor BearingRangeFactor2D;
+typedef gtsam::BearingRangeFactor BearingRangeFactor2D;
#include
diff --git a/gtsam/CMakeLists.txt b/gtsam/CMakeLists.txt
index e26d85ff8..cab5e8639 100644
--- a/gtsam/CMakeLists.txt
+++ b/gtsam/CMakeLists.txt
@@ -9,7 +9,10 @@ set (gtsam_subdirs
discrete
linear
nonlinear
+ sam
+ sfm
slam
+ smart
navigation
)
diff --git a/gtsam/base/CMakeLists.txt b/gtsam/base/CMakeLists.txt
index 66d3ec721..99984e7b3 100644
--- a/gtsam/base/CMakeLists.txt
+++ b/gtsam/base/CMakeLists.txt
@@ -5,5 +5,8 @@ install(FILES ${base_headers} DESTINATION include/gtsam/base)
file(GLOB base_headers_tree "treeTraversal/*.h")
install(FILES ${base_headers_tree} DESTINATION include/gtsam/base/treeTraversal)
+file(GLOB deprecated_headers "deprecated/*.h")
+install(FILES ${deprecated_headers} DESTINATION include/gtsam/base/deprecated)
+
# Build tests
add_subdirectory(tests)
diff --git a/gtsam/base/GenericValue.h b/gtsam/base/GenericValue.h
index e83a64ba9..17783c5b9 100644
--- a/gtsam/base/GenericValue.h
+++ b/gtsam/base/GenericValue.h
@@ -194,6 +194,11 @@ public:
};
+// traits
+template
+struct traits >
+ : public Testable > {};
+
// define Value::cast here since now GenericValue has been declared
template
const ValueType& Value::cast() const {
diff --git a/gtsam/base/LieMatrix.cpp b/gtsam/base/LieMatrix.cpp
deleted file mode 100644
index cf5b57536..000000000
--- a/gtsam/base/LieMatrix.cpp
+++ /dev/null
@@ -1,27 +0,0 @@
-/* ----------------------------------------------------------------------------
-
- * 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 LieMatrix.cpp
- * @brief A wrapper around Matrix providing Lie compatibility
- * @author Richard Roberts and Alex Cunningham
- */
-
-#include
-
-namespace gtsam {
-
-/* ************************************************************************* */
-void LieMatrix::print(const std::string& name) const {
- gtsam::print(matrix(), name);
-}
-
-}
diff --git a/gtsam/base/LieMatrix.h b/gtsam/base/LieMatrix.h
index e24f339e4..77edd5fd5 100644
--- a/gtsam/base/LieMatrix.h
+++ b/gtsam/base/LieMatrix.h
@@ -11,7 +11,7 @@
/**
* @file LieMatrix.h
- * @brief External deprecation warning, see LieMatrix_Deprecated.h for details
+ * @brief External deprecation warning, see deprecated/LieMatrix.h for details
* @author Paul Drews
*/
@@ -23,4 +23,4 @@
#warning "LieMatrix.h is deprecated. Please use Eigen::Matrix instead."
#endif
-#include "gtsam/base/LieMatrix_Deprecated.h"
+#include "gtsam/base/deprecated/LieMatrix.h"
diff --git a/gtsam/base/LieScalar.cpp b/gtsam/base/LieScalar.cpp
deleted file mode 100644
index 4c5a6a257..000000000
--- a/gtsam/base/LieScalar.cpp
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- * LieScalar.cpp
- *
- * Created on: Apr 12, 2013
- * Author: thduynguyen
- */
-
-
-
-
-#include
-
-namespace gtsam {
- void LieScalar::print(const std::string& name) const {
- std::cout << name << ": " << d_ << std::endl;
- }
-}
diff --git a/gtsam/base/LieScalar.h b/gtsam/base/LieScalar.h
index 650e2bb21..417570604 100644
--- a/gtsam/base/LieScalar.h
+++ b/gtsam/base/LieScalar.h
@@ -11,7 +11,7 @@
/**
* @file LieScalar.h
- * @brief External deprecation warning, see LieScalar_Deprecated.h for details
+ * @brief External deprecation warning, see deprecated/LieScalar.h for details
* @author Kai Ni
*/
@@ -23,4 +23,4 @@
#warning "LieScalar.h is deprecated. Please use double/float instead."
#endif
-#include
+#include
diff --git a/gtsam/base/LieVector.cpp b/gtsam/base/LieVector.cpp
deleted file mode 100644
index 3e4eeecf2..000000000
--- a/gtsam/base/LieVector.cpp
+++ /dev/null
@@ -1,40 +0,0 @@
-/* ----------------------------------------------------------------------------
-
- * 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 LieVector.cpp
- * @brief Implementations for LieVector functions
- * @author Alex Cunningham
- */
-
-#include
-#include
-
-using namespace std;
-
-namespace gtsam {
-
-/* ************************************************************************* */
-LieVector::LieVector(size_t m, const double* const data)
-: Vector(m)
-{
- for(size_t i = 0; i < m; i++)
- (*this)(i) = data[i];
-}
-
-/* ************************************************************************* */
-void LieVector::print(const std::string& name) const {
- gtsam::print(vector(), name);
-}
-
-// Does not compile because LieVector is not fixed size.
-// GTSAM_CONCEPT_LIE_INST(LieVector)
-} // \namespace gtsam
diff --git a/gtsam/base/LieVector.h b/gtsam/base/LieVector.h
index 813431775..310abcf02 100644
--- a/gtsam/base/LieVector.h
+++ b/gtsam/base/LieVector.h
@@ -11,7 +11,7 @@
/**
* @file LieVector.h
- * @brief Deprecation warning for LieVector_Deprecated.h, see LieVector_Deprecated.h for details.
+ * @brief Deprecation warning for LieVector, see deprecated/LieVector.h for details.
* @author Paul Drews
*/
@@ -23,4 +23,4 @@
#warning "LieVector.h is deprecated. Please use Eigen::Vector instead."
#endif
-#include
+#include
diff --git a/gtsam/base/Manifold.h b/gtsam/base/Manifold.h
index d7ea9ea4c..6746236be 100644
--- a/gtsam/base/Manifold.h
+++ b/gtsam/base/Manifold.h
@@ -187,8 +187,8 @@ public:
typedef Eigen::Matrix TangentVector;
typedef OptionalJacobian ChartJacobian;
- /// Default constructor yields identity
- ProductManifold():std::pair(traits::Identity(),traits::Identity()) {}
+ /// Default constructor needs default constructors to be defined
+ ProductManifold():std::pair(M1(),M2()) {}
// Construct from two original manifold values
ProductManifold(const M1& m1, const M2& m2):std::pair(m1,m2) {}
diff --git a/gtsam/base/OptionalJacobian.h b/gtsam/base/OptionalJacobian.h
index d0e2297ef..c0ac8cd7f 100644
--- a/gtsam/base/OptionalJacobian.h
+++ b/gtsam/base/OptionalJacobian.h
@@ -171,6 +171,16 @@ public:
// forward declare
template struct traits;
+/**
+ * @brief: meta-function to generate Jacobian
+ * @param T return type
+ * @param A argument type
+ */
+template
+struct MakeJacobian {
+ typedef Eigen::Matrix::dimension, traits::dimension> type;
+};
+
/**
* @brief: meta-function to generate JacobianTA optional reference
* Used mainly by Expressions
diff --git a/gtsam/base/LieMatrix_Deprecated.h b/gtsam/base/deprecated/LieMatrix.h
similarity index 97%
rename from gtsam/base/LieMatrix_Deprecated.h
rename to gtsam/base/deprecated/LieMatrix.h
index 15b4401f2..e26f45511 100644
--- a/gtsam/base/LieMatrix_Deprecated.h
+++ b/gtsam/base/deprecated/LieMatrix.h
@@ -60,8 +60,9 @@ struct LieMatrix : public Matrix {
/// @{
/** print @param s optional string naming the object */
- GTSAM_EXPORT void print(const std::string& name="") const;
-
+ GTSAM_EXPORT void print(const std::string& name = "") const {
+ gtsam::print(matrix(), name);
+ }
/** equality up to tolerance */
inline bool equals(const LieMatrix& expected, double tol=1e-5) const {
return gtsam::equal_with_abs_tol(matrix(), expected.matrix(), tol);
diff --git a/gtsam/base/LieScalar_Deprecated.h b/gtsam/base/deprecated/LieScalar.h
similarity index 92%
rename from gtsam/base/LieScalar_Deprecated.h
rename to gtsam/base/deprecated/LieScalar.h
index 6ffc76d37..f9c424e95 100644
--- a/gtsam/base/LieScalar_Deprecated.h
+++ b/gtsam/base/deprecated/LieScalar.h
@@ -48,8 +48,10 @@ namespace gtsam {
/// @name Testable
/// @{
- void print(const std::string& name="") const;
- bool equals(const LieScalar& expected, double tol=1e-5) const {
+ void print(const std::string& name = "") const {
+ std::cout << name << ": " << d_ << std::endl;
+ }
+ bool equals(const LieScalar& expected, double tol = 1e-5) const {
return fabs(expected.d_ - d_) <= tol;
}
/// @}
diff --git a/gtsam/base/LieVector_Deprecated.h b/gtsam/base/deprecated/LieVector.h
similarity index 92%
rename from gtsam/base/LieVector_Deprecated.h
rename to gtsam/base/deprecated/LieVector.h
index 67c42c748..4a85036e0 100644
--- a/gtsam/base/LieVector_Deprecated.h
+++ b/gtsam/base/deprecated/LieVector.h
@@ -18,6 +18,7 @@
#pragma once
#include
+#include
namespace gtsam {
@@ -50,11 +51,15 @@ struct LieVector : public Vector {
LieVector(double d) : Vector((Vector(1) << d).finished()) {}
/** constructor with size and initial data, row order ! */
- GTSAM_EXPORT LieVector(size_t m, const double* const data);
+ GTSAM_EXPORT LieVector(size_t m, const double* const data) : Vector(m) {
+ for (size_t i = 0; i < m; i++) (*this)(i) = data[i];
+ }
/// @name Testable
/// @{
- GTSAM_EXPORT void print(const std::string& name="") const;
+ GTSAM_EXPORT void print(const std::string& name="") const {
+ gtsam::print(vector(), name);
+ }
bool equals(const LieVector& expected, double tol=1e-5) const {
return gtsam::equal(vector(), expected.vector(), tol);
}
diff --git a/gtsam/base/serializationTestHelpers.h b/gtsam/base/serializationTestHelpers.h
index b6593bd9f..f408427d8 100644
--- a/gtsam/base/serializationTestHelpers.h
+++ b/gtsam/base/serializationTestHelpers.h
@@ -49,15 +49,15 @@ bool equality(const T& input = T()) {
return input==output;
}
-// This version requires equals
+// This version requires Testable
template
bool equalsObj(const T& input = T()) {
T output;
roundtrip(input,output);
- return input.equals(output);
+ return assert_equal(input, output);
}
-// De-referenced version for pointers
+// De-referenced version for pointers, requires equals method
template
bool equalsDereferenced(const T& input) {
T output;
@@ -84,15 +84,15 @@ bool equalityXML(const T& input = T()) {
return input==output;
}
-// This version requires equals
+// This version requires Testable
template
bool equalsXML(const T& input = T()) {
T output;
roundtripXML(input,output);
- return input.equals(output);
+ return assert_equal(input, output);
}
-// This version is for pointers
+// This version is for pointers, requires equals method
template
bool equalsDereferencedXML(const T& input = T()) {
T output;
@@ -119,15 +119,15 @@ bool equalityBinary(const T& input = T()) {
return input==output;
}
-// This version requires equals
+// This version requires Testable
template
bool equalsBinary(const T& input = T()) {
T output;
roundtripBinary(input,output);
- return input.equals(output);
+ return assert_equal(input, output);
}
-// This version is for pointers
+// This version is for pointers, requires equals method
template
bool equalsDereferencedBinary(const T& input = T()) {
T output;
diff --git a/gtsam/base/tests/testLieMatrix.cpp b/gtsam/base/tests/testLieMatrix.cpp
index 09caadabd..5e18e1495 100644
--- a/gtsam/base/tests/testLieMatrix.cpp
+++ b/gtsam/base/tests/testLieMatrix.cpp
@@ -15,8 +15,7 @@
*/
#include
-#include
-
+#include
#include
#include
diff --git a/gtsam/base/tests/testLieScalar.cpp b/gtsam/base/tests/testLieScalar.cpp
index 07e666fbe..bacb9dd1e 100644
--- a/gtsam/base/tests/testLieScalar.cpp
+++ b/gtsam/base/tests/testLieScalar.cpp
@@ -15,8 +15,7 @@
*/
#include
-#include
-
+#include
#include
#include
diff --git a/gtsam/base/tests/testLieVector.cpp b/gtsam/base/tests/testLieVector.cpp
index ed3afac8c..3c2885c18 100644
--- a/gtsam/base/tests/testLieVector.cpp
+++ b/gtsam/base/tests/testLieVector.cpp
@@ -15,8 +15,7 @@
*/
#include
-#include
-
+#include
#include
#include
diff --git a/gtsam/base/tests/testTestableAssertions.cpp b/gtsam/base/tests/testTestableAssertions.cpp
index 364834e2a..305aa7ca9 100644
--- a/gtsam/base/tests/testTestableAssertions.cpp
+++ b/gtsam/base/tests/testTestableAssertions.cpp
@@ -15,8 +15,7 @@
*/
#include
-#include
-
+#include
#include
using namespace gtsam;
diff --git a/gtsam/geometry/BearingRange.h b/gtsam/geometry/BearingRange.h
new file mode 100644
index 000000000..27fe2f197
--- /dev/null
+++ b/gtsam/geometry/BearingRange.h
@@ -0,0 +1,133 @@
+/* ----------------------------------------------------------------------------
+
+ * 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 BearingRange.h
+ * @date July, 2015
+ * @author Frank Dellaert
+ * @brief Bearing-Range product
+ */
+
+#pragma once
+
+#include
+#include
+#include
+#include
+
+namespace gtsam {
+
+// Forward declaration of Bearing functor which should be of A1*A2 -> return_type
+// For example Bearing(pose,point), defined in Pose3.h will return Unit3
+// At time of writing only Pose2 and Pose3 specialize this functor.
+template
+struct Bearing;
+
+// Forward declaration of Range functor which should be of A1*A2 -> return_type
+// For example Range(T1,T2), defined in Pose2.h will return double
+// At time of writing Pose2, Pose3, and several Camera variants specialize this for several types
+template
+struct Range;
+
+/**
+ * Bearing-Range product for a particular A1,A2 combination will use the functors above to create
+ * a similar functor of type A1*A2 -> pair
+ * For example BearingRange(pose,point) will return pair
+ * and BearingRange(pose,point) will return pair
+ */
+template
+struct BearingRange
+ : public ProductManifold::result_type,
+ typename Range::result_type> {
+ typedef typename Bearing::result_type B;
+ typedef typename Range::result_type R;
+ typedef ProductManifold Base;
+
+ BearingRange() {}
+ BearingRange(const ProductManifold& br) : Base(br) {}
+ BearingRange(const B& b, const R& r) : Base(b, r) {}
+
+ /// Prediction function that stacks measurements
+ static BearingRange Measure(
+ const A1& a1, const A2& a2,
+ OptionalJacobian::dimension> H1 = boost::none,
+ OptionalJacobian::dimension> H2 =
+ boost::none) {
+ typename MakeJacobian::type HB1;
+ typename MakeJacobian::type HB2;
+ typename MakeJacobian::type HR1;
+ typename MakeJacobian::type HR2;
+
+ B b = Bearing()(a1, a2, H1 ? &HB1 : 0, H2 ? &HB2 : 0);
+ R r = Range()(a1, a2, H1 ? &HR1 : 0, H2 ? &HR2 : 0);
+
+ if (H1) *H1 << HB1, HR1;
+ if (H2) *H2 << HB2, HR2;
+ return BearingRange(b, r);
+ }
+
+ void print(const std::string& str = "") const {
+ std::cout << str;
+ traits::Print(this->first, "bearing ");
+ traits::Print(this->second, "range ");
+ }
+ bool equals(const BearingRange& m2, double tol = 1e-8) const {
+ return traits::Equals(this->first, m2.first, tol) &&
+ traits::Equals(this->second, m2.second, tol);
+ }
+
+ private:
+ /// Serialization function
+ template
+ void serialize(ARCHIVE& ar, const unsigned int /*version*/) {
+ ar& boost::serialization::make_nvp("bearing", this->first);
+ ar& boost::serialization::make_nvp("range", this->second);
+ }
+
+ friend class boost::serialization::access;
+};
+
+// Declare this to be both Testable and a Manifold
+template
+struct traits >
+ : Testable >,
+ internal::ManifoldTraits > {};
+
+// Helper class for to implement Range traits for classes with a bearing method
+// For example, to specialize Bearing to Pose3 and Point3, using Pose3::bearing, it suffices to say
+// template <> struct Bearing : HasBearing {};
+// where the third argument is used to indicate the return type
+template
+struct HasBearing {
+ typedef RT result_type;
+ RT operator()(
+ const A1& a1, const A2& a2,
+ OptionalJacobian::dimension, traits::dimension> H1,
+ OptionalJacobian::dimension, traits::dimension> H2) {
+ return a1.bearing(a2, H1, H2);
+ }
+};
+
+// Similar helper class for to implement Range traits for classes with a range method
+// For classes with overloaded range methods, such as SimpleCamera, this can even be templated:
+// template struct Range : HasRange {};
+template
+struct HasRange {
+ typedef RT result_type;
+ RT operator()(
+ const A1& a1, const A2& a2,
+ OptionalJacobian::dimension, traits::dimension> H1,
+ OptionalJacobian::dimension, traits::dimension> H2) {
+ return a1.range(a2, H1, H2);
+ }
+};
+
+} // namespace gtsam
diff --git a/gtsam/geometry/CalibratedCamera.h b/gtsam/geometry/CalibratedCamera.h
index 4d605ef4e..b1e5917b2 100644
--- a/gtsam/geometry/CalibratedCamera.h
+++ b/gtsam/geometry/CalibratedCamera.h
@@ -18,6 +18,7 @@
#pragma once
+#include
#include
#include
#include
@@ -318,7 +319,7 @@ public:
}
/// @}
- /// @name Transformations and mesaurement functions
+ /// @name Transformations and measurement functions
/// @{
/**
@@ -384,14 +385,16 @@ private:
/// @}
};
-template<>
-struct traits : public internal::Manifold {
-};
+// manifold traits
+template <>
+struct traits : public internal::Manifold {};
-template<>
-struct traits : public internal::Manifold<
- CalibratedCamera> {
-};
+template <>
+struct traits : public internal::Manifold {};
-}
+// range traits, used in RangeFactor
+template
+struct Range : HasRange {};
+
+} // namespace gtsam
diff --git a/gtsam/geometry/PinholeCamera.h b/gtsam/geometry/PinholeCamera.h
index 12e9f023b..6177dec95 100644
--- a/gtsam/geometry/PinholeCamera.h
+++ b/gtsam/geometry/PinholeCamera.h
@@ -19,6 +19,7 @@
#pragma once
#include
+#include
namespace gtsam {
@@ -263,24 +264,22 @@ public:
template
double range(const PinholeCamera& camera,
OptionalJacobian<1, dimension> Dcamera = boost::none,
- boost::optional Dother = boost::none) const {
+ OptionalJacobian<1, 6 + CalibrationB::dimension> Dother = boost::none) const {
Matrix16 Dcamera_, Dother_;
double result = this->pose().range(camera.pose(), Dcamera ? &Dcamera_ : 0,
Dother ? &Dother_ : 0);
if (Dcamera) {
- Dcamera->resize(1, 6 + DimK);
*Dcamera << Dcamera_, Eigen::Matrix::Zero();
}
if (Dother) {
- Dother->resize(1, 6 + CalibrationB::dimension);
Dother->setZero();
- Dother->block<1, 6>(0, 0) = Dother_;
+ Dother->template block<1, 6>(0, 0) = Dother_;
}
return result;
}
/**
- * Calculate range to another camera
+ * Calculate range to a calibrated camera
* @param camera Other camera
* @return range (double)
*/
@@ -304,14 +303,18 @@ private:
};
-template
-struct traits > : public internal::Manifold<
- PinholeCamera > {
-};
+// manifold traits
-template
-struct traits > : public internal::Manifold<
- PinholeCamera > {
-};
+template
+struct traits >
+ : public internal::Manifold > {};
-} // \ gtsam
+template
+struct traits >
+ : public internal::Manifold > {};
+
+// range traits, used in RangeFactor
+template
+struct Range, T> : HasRange, T, double> {};
+
+} // \ gtsam
diff --git a/gtsam/geometry/Point3.h b/gtsam/geometry/Point3.h
index 883e5fb62..e8cf0be7b 100644
--- a/gtsam/geometry/Point3.h
+++ b/gtsam/geometry/Point3.h
@@ -22,6 +22,7 @@
#pragma once
#include
+#include
#include
#include
@@ -199,4 +200,19 @@ struct traits : public internal::VectorSpace {};
template<>
struct traits : public internal::VectorSpace {};
-}
+
+template
+struct Range;
+
+template <>
+struct Range {
+ typedef double result_type;
+ double operator()(const Point3& p, const Point3& q,
+ OptionalJacobian<1, 3> H1 = boost::none,
+ OptionalJacobian<1, 3> H2 = boost::none) {
+ return p.distance(q, H1, H2);
+ }
+};
+
+} // namespace gtsam
+
diff --git a/gtsam/geometry/Pose2.h b/gtsam/geometry/Pose2.h
index f3cb9e2a1..31dfb479f 100644
--- a/gtsam/geometry/Pose2.h
+++ b/gtsam/geometry/Pose2.h
@@ -20,9 +20,11 @@
#pragma once
+#include
#include
#include
#include
+#include
namespace gtsam {
@@ -289,11 +291,18 @@ inline Matrix wedge(const Vector& xi) {
typedef std::pair Point2Pair;
GTSAM_EXPORT boost::optional align(const std::vector& pairs);
-template<>
+template <>
struct traits : public internal::LieGroup {};
-template<>
+template <>
struct traits