diff --git a/.cproject b/.cproject
index 10b16f91c..799952207 100644
--- a/.cproject
+++ b/.cproject
@@ -1,186 +1,44 @@
-
-
+
+
-
-
+
+
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
-
+
+
-
-
-
-
-
-
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
@@ -223,6 +81,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -352,49 +256,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -482,3082 +343,5 @@
-
-
-
- make
- -j5
- SmartProjectionFactorExample_kitti_nonbatch.run
- true
- true
- true
-
-
- make
- -j5
- SmartProjectionFactorExample_kitti.run
- true
- true
- true
-
-
- make
- -j5
- SmartProjectionFactorTesting.run
- true
- true
- true
-
-
- make
- -j2
- check
- true
- true
- true
-
-
- make
- -j2
- tests/testSPQRUtil.run
- true
- true
- true
-
-
- make
- -j2
- clean
- 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
- clean
- true
- 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
- 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
- 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
- true
- true
- true
-
-
- make
- -j5
- testAHRS.run
- true
- true
- true
-
-
- make
- -j5
- testInvDepthFactor3.run
- true
- true
- true
-
-
- make
- -j5
- testMultiProjectionFactor.run
- true
- true
- true
-
-
- make
- -j5
- testPoseRotationPrior.run
- true
- true
- true
-
-
- make
- -j5
- testPoseTranslationPrior.run
- true
- true
- true
-
-
- make
- -j5
- testReferenceFrameFactor.run
- true
- true
- true
-
-
- make
- -j5
- testSmartProjectionFactor.run
- true
- true
- true
-
-
- make
- -j5
- testTSAMFactors.run
- true
- true
- true
-
-
- make
- -j5
- testInertialNavFactor_GlobalVelocity.run
- true
- true
- true
-
-
- make
- -j5
- testInvDepthFactorVariant3.run
- true
- true
- true
-
-
- make
- -j5
- testInvDepthFactorVariant1.run
- true
- true
- true
-
-
- make
- -j5
- testEquivInertialNavFactor_GlobalVel.run
- true
- true
- true
-
-
- make
- -j5
- testInvDepthFactorVariant2.run
- true
- true
- true
-
-
- make
- -j5
- testRelativeElevationFactor.run
- true
- true
- true
-
-
- make
- -j5
- testPoseBetweenFactor.run
- true
- true
- true
-
-
- make
- -j5
- testGaussMarkov1stOrderFactor.run
- true
- true
- true
-
-
- make
- -j4
- testSmartStereoProjectionPoseFactor.run
- true
- true
- true
-
-
- make
- -j4
- testTOAFactor.run
- 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
- 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
- -j5
- all
- true
- true
- true
-
-
- make
- -j2
- all
- true
- true
- true
-
-
- make
- -j2
- clean
- true
- true
- true
-
-
- make
- -j2
- check
- true
- true
- true
-
-
- make
- -j2
- testGaussianConditional.run
- true
- true
- true
-
-
- make
- -j2
- testGaussianFactor.run
- true
- true
- true
-
-
- make
- -j2
- timeGaussianFactor.run
- true
- true
- true
-
-
- make
- -j2
- timeVectorConfig.run
- true
- true
- true
-
-
- make
- -j2
- testVectorBTree.run
- true
- true
- true
-
-
- make
- -j2
- testVectorMap.run
- true
- true
- true
-
-
- make
- -j2
- testNoiseModel.run
- true
- true
- true
-
-
- make
- -j2
- testBayesNetPreconditioner.run
- true
- true
- true
-
-
- make
-
- testErrors.run
- 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
- 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
- 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
- testLabeledSymbol.run
- true
- true
- true
-
-
- make
- -j2
- check
- true
- true
- true
-
-
- make
- -j2
- tests/testLieConfig.run
- true
- true
- true
-
-
- make
- -j3
- install
- true
- false
- true
-
-
- make
- -j2
- clean
- true
- true
- true
-
-
- make
- -j1
- check
- true
- false
- true
-
-
- make
- -j5
- all
- true
- true
- true
-
-
- cmake
- ..
- true
- false
- true
-
-
- make
- -j5
- gtsam-shared
- true
- true
- true
-
-
- make
- -j5
- gtsam-static
- true
- true
- true
-
-
- make
- -j5
- timing
- true
- true
- true
-
-
- make
- -j5
- examples
- true
- true
- true
-
-
- make
- -j5
- VERBOSE=1 all
- true
- true
- true
-
-
- make
- -j5
- VERBOSE=1 check
- true
- true
- true
-
-
- make
- -j5
- check.base
- true
- true
- true
-
-
- make
- -j5
- timing.base
- true
- true
- true
-
-
- make
- -j2 VERBOSE=1
- check.geometry
- true
- false
- true
-
-
- make
- -j5
- timing.geometry
- true
- true
- true
-
-
- make
- -j2 VERBOSE=1
- check.inference
- true
- false
- true
-
-
- make
- -j5
- timing.inference
- true
- true
- true
-
-
- make
- -j2 VERBOSE=1
- check.linear
- true
- false
- true
-
-
- make
- -j5
- timing.linear
- true
- true
- true
-
-
- make
- -j2 VERBOSE=1
- check.nonlinear
- true
- false
- true
-
-
- make
- -j5
- timing.nonlinear
- true
- true
- true
-
-
- make
- -j2 VERBOSE=1
- check.slam
- true
- false
- true
-
-
- make
- -j5
- timing.slam
- true
- true
- true
-
-
- make
- -j5
- wrap_gtsam
- true
- true
- true
-
-
- make
- VERBOSE=1
- wrap_gtsam
- true
- false
- true
-
-
- cpack
-
- -G DEB
- true
- false
- true
-
-
- cpack
-
- -G RPM
- true
- false
- true
-
-
- cpack
-
- -G TGZ
- true
- false
- true
-
-
- cpack
-
- --config CPackSourceConfig.cmake
- true
- false
- true
-
-
- make
- -j5
- check.discrete
- true
- true
- true
-
-
- make
- -j5
- check.discrete_unstable
- true
- true
- true
-
-
- make
- -j5
- check.base_unstable
- true
- true
- true
-
-
- make
- -j5
- check.dynamics_unstable
- true
- true
- true
-
-
- make
- -j5
- check.slam_unstable
- true
- true
- true
-
-
- make
- -j5
- check.unstable
- true
- true
- true
-
-
- make
- -j5
- wrap_gtsam_build
- true
- true
- true
-
-
- make
- -j5
- wrap_gtsam_unstable_build
- true
- true
- true
-
-
- make
- -j5
- wrap_gtsam_unstable
- true
- true
- true
-
-
- make
- -j5
- wrap
- true
- true
- true
-
-
- make
- -j5
- wrap_gtsam_distclean
- true
- true
- true
-
-
- make
- -j5
- wrap_gtsam_unstable_distclean
- true
- true
- true
-
-
- make
- -j5
- doc
- true
- true
- true
-
-
- make
- -j5
- doc_clean
- true
- true
- true
-
-
- make
- -j5
- check
- true
- true
- true
-
-
- make
- -j5
- check.geometry_unstable
- true
- true
- true
-
-
- make
- -j5
- check.linear_unstable
- true
- true
- true
-
-
- make
- -j6 -j8
- gtsam_unstable-shared
- true
- true
- true
-
-
- make
- -j6 -j8
- gtsam_unstable-static
- true
- true
- true
-
-
- make
- -j6 -j8
- check.nonlinear_unstable
- true
- true
- true
-
-
- make
- -j5
- check.tests
- true
- true
- true
-
-
- make
- -j2 VERBOSE=1
- check.navigation
- true
- false
- true
-
-
- make
- -j4
- check.sam
- 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
- testGaussianFactor.run
- true
- 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
- 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
-
-
- make
- -j5
- schedulingExample.run
- true
- true
- true
-
-
- make
- -j5
- schedulingQuals12.run
- true
- true
- true
-
-
- make
- -j5
- schedulingQuals13.run
- true
- true
- true
-
-
- make
- -j5
- testCSP.run
- true
- true
- true
-
-
- make
- -j5
- testScheduler.run
- true
- true
- true
-
-
- make
- -j5
- testSudoku.run
- true
- 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
- true
- true
- true
-
-
- make
- -j2
- clean
- true
- true
- true
-
-
- make
- -j2
- all
- true
- true
- true
-
-
- make
- -j2
- clean
- true
- true
- true
-
-
- make
- -j5
- testAntiFactor.run
- true
- true
- true
-
-
- make
- -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
-
-
- 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
- -j5
- Pose2SLAMExample_lago.run
- true
- true
- true
-
-
- make
- -j5
- Pose2SLAMExample_g2o.run
- true
- true
- true
-
-
- make
- -j5
- SFMExample_SmartFactor.run
- true
- true
- true
-
-
- make
- -j4
- Pose2SLAMExampleExpressions.run
- true
- true
- true
-
-
- make
- -j4
- SFMExampleExpressions.run
- true
- true
- true
-
-
- make
- -j4
- SFMExampleExpressions_bal.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
- 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
- testRot3.run
- true
- true
- true
-
-
- make
- -j2
- testRot2.run
- true
- true
- true
-
-
- make
- -j2
- testPose3.run
- true
- true
- true
-
-
- make
- -j2
- timeRot3.run
- true
- true
- true
-
-
- make
- -j2
- testPose2.run
- true
- true
- true
-
-
- make
- -j2
- testCal3_S2.run
- true
- true
- true
-
-
- make
- -j2
- testSimpleCamera.run
- true
- true
- true
-
-
- make
- -j2
- testHomography2.run
- true
- true
- true
-
-
- make
- -j2
- testCalibratedCamera.run
- true
- true
- true
-
-
- make
- -j2
- check
- true
- true
- true
-
-
- make
- -j2
- clean
- true
- true
- true
-
-
- make
- -j2
- testPoint2.run
- true
- true
- true
-
-
- make
- -j4
- testBearingFactor.run
- true
- true
- true
-
-
- make
- -j4
- testRangeFactor.run
- true
- true
- true
-
-
- make
- -j4
- testBearingRangeFactor.run
- true
- true
- true
-
-
- make
- -j5
- wrap
- true
- true
- true
-
-
-
+
diff --git a/.settings/language.settings.xml b/.settings/language.settings.xml
new file mode 100644
index 000000000..c6559f58f
--- /dev/null
+++ b/.settings/language.settings.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/CMakeLists.txt b/CMakeLists.txt
index aa6082cb3..eedc42c9e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -14,6 +14,11 @@ set (GTSAM_VERSION_PATCH 0)
math (EXPR GTSAM_VERSION_NUMERIC "10000 * ${GTSAM_VERSION_MAJOR} + 100 * ${GTSAM_VERSION_MINOR} + ${GTSAM_VERSION_PATCH}")
set (GTSAM_VERSION_STRING "${GTSAM_VERSION_MAJOR}.${GTSAM_VERSION_MINOR}.${GTSAM_VERSION_PATCH}")
+set (CMAKE_PROJECT_VERSION ${GTSAM_VERSION_STRING})
+set (CMAKE_PROJECT_VERSION_MAJOR ${GTSAM_VERSION_MAJOR})
+set (CMAKE_PROJECT_VERSION_MINOR ${GTSAM_VERSION_MINOR})
+set (CMAKE_PROJECT_VERSION_PATCH ${GTSAM_VERSION_PATCH})
+
###############################################################################
# Gather information, perform checks, set defaults
@@ -113,6 +118,22 @@ if(GTSAM_INSTALL_MATLAB_TOOLBOX AND NOT BUILD_SHARED_LIBS)
endif()
if(GTSAM_BUILD_PYTHON)
+ # Get info about the Python3 interpreter
+ # https://cmake.org/cmake/help/latest/module/FindPython3.html#module:FindPython3
+ find_package(Python3 COMPONENTS Interpreter Development)
+
+ if(NOT ${Python3_FOUND})
+ message(FATAL_ERROR "Cannot find Python3 interpreter. Please install Python >= 3.6.")
+ endif()
+
+ if(${GTSAM_PYTHON_VERSION} STREQUAL "Default")
+ set(GTSAM_PYTHON_VERSION "${Python3_VERSION_MAJOR}.${Python3_VERSION_MINOR}"
+ CACHE
+ STRING
+ "The version of Python to build the wrappers against."
+ FORCE)
+ endif()
+
if(GTSAM_UNSTABLE_BUILD_PYTHON)
if (NOT GTSAM_BUILD_UNSTABLE)
message(WARNING "GTSAM_UNSTABLE_BUILD_PYTHON requires the unstable module to be enabled.")
@@ -529,9 +550,9 @@ print_build_options_for_target(gtsam)
print_config("Use System Eigen" "${GTSAM_USE_SYSTEM_EIGEN} (Using version: ${GTSAM_EIGEN_VERSION})")
if(GTSAM_USE_TBB)
- print_config("Use Intel TBB" "Yes")
+ print_config("Use Intel TBB" "Yes (Version: ${TBB_VERSION})")
elseif(TBB_FOUND)
- print_config("Use Intel TBB" "TBB found but GTSAM_WITH_TBB is disabled")
+ print_config("Use Intel TBB" "TBB (Version: ${TBB_VERSION}) found but GTSAM_WITH_TBB is disabled")
else()
print_config("Use Intel TBB" "TBB not found")
endif()
diff --git a/README.md b/README.md
index cc8af7248..60eff197a 100644
--- a/README.md
+++ b/README.md
@@ -62,7 +62,7 @@ GTSAM 4.1 added a new pybind wrapper, and **removed** the deprecated functionali
## Wrappers
-We provide support for [MATLAB](matlab/README.md) and [Python](cython/README.md) wrappers for GTSAM. Please refer to the linked documents for more details.
+We provide support for [MATLAB](matlab/README.md) and [Python](python/README.md) wrappers for GTSAM. Please refer to the linked documents for more details.
## The Preintegrated IMU Factor
diff --git a/cmake/FindNumPy.cmake b/cmake/FindNumPy.cmake
index 4f5743aa6..d55a760c6 100644
--- a/cmake/FindNumPy.cmake
+++ b/cmake/FindNumPy.cmake
@@ -40,17 +40,9 @@
# Finding NumPy involves calling the Python interpreter
if(NumPy_FIND_REQUIRED)
- if(GTSAM_PYTHON_VERSION STREQUAL "Default")
- find_package(PythonInterp REQUIRED)
- else()
- find_package(PythonInterp ${GTSAM_PYTHON_VERSION} EXACT REQUIRED)
- endif()
+ find_package(PythonInterp ${GTSAM_PYTHON_VERSION} EXACT REQUIRED)
else()
- if(GTSAM_PYTHON_VERSION STREQUAL "Default")
- find_package(PythonInterp)
- else()
- find_package(PythonInterp ${GTSAM_PYTHON_VERSION} EXACT)
- endif()
+ find_package(PythonInterp ${GTSAM_PYTHON_VERSION} EXACT)
endif()
if(NOT PYTHONINTERP_FOUND)
diff --git a/cmake/GtsamMatlabWrap.cmake b/cmake/GtsamMatlabWrap.cmake
index 111114a7b..4c44d2cb3 100644
--- a/cmake/GtsamMatlabWrap.cmake
+++ b/cmake/GtsamMatlabWrap.cmake
@@ -215,19 +215,15 @@ function(wrap_library_internal interfaceHeader linkLibraries extraIncludeDirs ex
# Set up generation of module source file
file(MAKE_DIRECTORY "${generated_files_path}")
- if(GTSAM_PYTHON_VERSION STREQUAL "Default")
- find_package(PythonInterp REQUIRED)
- find_package(PythonLibs REQUIRED)
- else()
- find_package(PythonInterp
- ${GTSAM_PYTHON_VERSION}
- EXACT
- REQUIRED)
- find_package(PythonLibs
- ${GTSAM_PYTHON_VERSION}
- EXACT
- REQUIRED)
- endif()
+ find_package(PythonInterp
+ ${GTSAM_PYTHON_VERSION}
+ EXACT
+ REQUIRED)
+ find_package(PythonLibs
+ ${GTSAM_PYTHON_VERSION}
+ EXACT
+ REQUIRED)
+
set(_ignore gtsam::Point2
gtsam::Point3)
diff --git a/cmake/GtsamPrinting.cmake b/cmake/GtsamPrinting.cmake
index 5757f5ee1..c68679667 100644
--- a/cmake/GtsamPrinting.cmake
+++ b/cmake/GtsamPrinting.cmake
@@ -46,16 +46,16 @@ endfunction()
# Prints all the relevant CMake build options for a given target:
function(print_build_options_for_target target_name_)
print_padded(GTSAM_COMPILE_FEATURES_PUBLIC)
- print_padded(GTSAM_COMPILE_OPTIONS_PRIVATE)
+ # print_padded(GTSAM_COMPILE_OPTIONS_PRIVATE)
print_padded(GTSAM_COMPILE_OPTIONS_PUBLIC)
- print_padded(GTSAM_COMPILE_DEFINITIONS_PRIVATE)
+ # print_padded(GTSAM_COMPILE_DEFINITIONS_PRIVATE)
print_padded(GTSAM_COMPILE_DEFINITIONS_PUBLIC)
foreach(build_type ${GTSAM_CMAKE_CONFIGURATION_TYPES})
string(TOUPPER "${build_type}" build_type_toupper)
- print_padded(GTSAM_COMPILE_OPTIONS_PRIVATE_${build_type_toupper})
+ # print_padded(GTSAM_COMPILE_OPTIONS_PRIVATE_${build_type_toupper})
print_padded(GTSAM_COMPILE_OPTIONS_PUBLIC_${build_type_toupper})
- print_padded(GTSAM_COMPILE_DEFINITIONS_PRIVATE_${build_type_toupper})
+ # print_padded(GTSAM_COMPILE_DEFINITIONS_PRIVATE_${build_type_toupper})
print_padded(GTSAM_COMPILE_DEFINITIONS_PUBLIC_${build_type_toupper})
endforeach()
endfunction()
diff --git a/gtsam/gtsam.i b/gtsam/gtsam.i
index 52f5901ee..085d06245 100644
--- a/gtsam/gtsam.i
+++ b/gtsam/gtsam.i
@@ -567,6 +567,7 @@ class Rot2 {
// Lie Group
static gtsam::Rot2 Expmap(Vector v);
static Vector Logmap(const gtsam::Rot2& p);
+ Vector logmap(const gtsam::Rot2& p);
// Group Action on Point2
gtsam::Point2 rotate(const gtsam::Point2& point) const;
@@ -727,6 +728,7 @@ class Rot3 {
// Standard Interface
static gtsam::Rot3 Expmap(Vector v);
static Vector Logmap(const gtsam::Rot3& p);
+ Vector logmap(const gtsam::Rot3& p);
Matrix matrix() const;
Matrix transpose() const;
gtsam::Point3 column(size_t index) const;
@@ -772,6 +774,7 @@ class Pose2 {
// Lie Group
static gtsam::Pose2 Expmap(Vector v);
static Vector Logmap(const gtsam::Pose2& p);
+ Vector logmap(const gtsam::Pose2& p);
static Matrix ExpmapDerivative(Vector v);
static Matrix LogmapDerivative(const gtsam::Pose2& v);
Matrix AdjointMap() const;
@@ -825,6 +828,7 @@ class Pose3 {
// Lie Group
static gtsam::Pose3 Expmap(Vector v);
static Vector Logmap(const gtsam::Pose3& pose);
+ Vector logmap(const gtsam::Pose3& pose);
Matrix AdjointMap() const;
Vector Adjoint(Vector xi) const;
static Matrix adjointMap_(Vector xi);
@@ -2847,6 +2851,7 @@ virtual class EssentialMatrixFactor : gtsam::NoiseModelFactor {
#include
class SfmTrack {
+ Point3 point3() const;
size_t number_measurements() const;
pair measurement(size_t idx) const;
pair siftIndex(size_t idx) const;
diff --git a/gtsam/slam/dataset.h b/gtsam/slam/dataset.h
index 91ceaa5fd..a8fddcfe4 100644
--- a/gtsam/slam/dataset.h
+++ b/gtsam/slam/dataset.h
@@ -233,6 +233,9 @@ struct SfmTrack {
SiftIndex siftIndex(size_t idx) const {
return siftIndices[idx];
}
+ Point3 point3() const {
+ return p;
+ }
};
/// Define the structure for the camera poses
diff --git a/python/README.md b/python/README.md
index b1a3a865f..6e2a30d2e 100644
--- a/python/README.md
+++ b/python/README.md
@@ -18,8 +18,10 @@ This is the Python wrapper around the GTSAM C++ library. We use our custom [wrap
## Install
-- Run cmake with the `GTSAM_BUILD_PYTHON` cmake flag enabled to configure building the wrapper. The wrapped module will be built and copied to the directory `/python`.
-
+- Run cmake with the `GTSAM_BUILD_PYTHON` cmake flag enabled to configure building the wrapper. The wrapped module will be built and copied to the directory `/python`. For example, if your local Python version is 3.6.10, then you should run:
+ ```bash
+ cmake .. -DGTSAM_BUILD_PYTHON=1 -DGTSAM_PYTHON_VERSION=3.6.10
+ ```
- Build GTSAM and the wrapper with `make` (or `ninja` if you use `-GNinja`).
- To install, simply run `make python-install` (`ninja python-install`).
diff --git a/python/gtsam/examples/README.md b/python/gtsam/examples/README.md
index e998e4dcd..e05a0c7e1 100644
--- a/python/gtsam/examples/README.md
+++ b/python/gtsam/examples/README.md
@@ -3,50 +3,62 @@
| C++ Example Name | Ported |
|-------------------------------------------------------|--------|
| CameraResectioning | |
+| CombinedImuFactorsExample | |
| CreateSFMExampleData | |
+| DiscreteBayesNetExample | |
| DiscreteBayesNet_FG | none of the required discrete functionality is exposed through Python |
| easyPoint2KalmanFilter | ExtendedKalmanFilter not yet exposed through Python |
| elaboratePoint2KalmanFilter | GaussianSequentialSolver not yet exposed through Python |
-| ImuFactorExample2 | X |
+| FisheyeExample | |
+| HMMExample | |
+| ImuFactorsExample2 | :heavy_check_mark: |
| ImuFactorsExample | |
+| IMUKittiExampleGPS | |
+| InverseKinematicsExampleExpressions.cpp | |
| ISAM2Example_SmartFactor | |
| ISAM2_SmartFactorStereo_IMU | |
| LocalizationExample | impossible? |
| METISOrderingExample | |
-| OdometryExample | X |
-| PlanarSLAMExample | X |
-| Pose2SLAMExample | X |
+| OdometryExample | :heavy_check_mark: |
+| PlanarSLAMExample | :heavy_check_mark: |
+| Pose2SLAMExample | :heavy_check_mark: |
| Pose2SLAMExampleExpressions | |
-| Pose2SLAMExample_g2o | X |
+| Pose2SLAMExample_g2o | :heavy_check_mark: |
| Pose2SLAMExample_graph | |
| Pose2SLAMExample_graphviz | |
| Pose2SLAMExample_lago | lago not yet exposed through Python |
| Pose2SLAMStressTest | |
| Pose2SLAMwSPCG | |
+| Pose3Localization | |
| Pose3SLAMExample_changeKeys | |
| Pose3SLAMExampleExpressions_BearingRangeWithTransform | |
-| Pose3SLAMExample_g2o | X |
-| Pose3SLAMExample_initializePose3Chordal | |
+| Pose3SLAMExample_g2o | :heavy_check_mark: |
+| Pose3SLAMExample_initializePose3Chordal | :heavy_check_mark: |
| Pose3SLAMExample_initializePose3Gradient | |
| RangeISAMExample_plaza2 | |
| SelfCalibrationExample | |
+| SFMdata | |
| SFMExample_bal_COLAMD_METIS | |
-| SFMExample_bal | |
-| SFMExample | X |
+| SFMExample_bal | |
+| SFMExample | :heavy_check_mark: |
| SFMExampleExpressions_bal | |
| SFMExampleExpressions | |
| SFMExample_SmartFactor | |
| SFMExample_SmartFactorPCG | |
-| SimpleRotation | X |
+| ShonanAveragingCLI | :heavy_check_mark: |
+| SimpleRotation | :heavy_check_mark: |
| SolverComparer | |
| StereoVOExample | |
| StereoVOExample_large | |
| TimeTBB | |
| UGM_chain | discrete functionality not yet exposed |
| UGM_small | discrete functionality not yet exposed |
-| VisualISAM2Example | X |
-| VisualISAMExample | X |
+| VisualISAM2Example | :heavy_check_mark: |
+| VisualISAMExample | :heavy_check_mark: |
Extra Examples (with no C++ equivalent)
+- DogLegOptimizerExample
+- GPSFactorExample
- PlanarManipulatorExample
-- SFMData
\ No newline at end of file
+- PreintegrationExample
+- SFMData