diff --git a/gtsam/DESCR b/gtsam/DESCR deleted file mode 100644 index 02e603edf1c9aa514e995ed8564ea23acbbde3f7..0000000000000000000000000000000000000000 --- a/gtsam/DESCR +++ /dev/null @@ -1 +0,0 @@ -Georgia Tech Smoothing And Mapping Library diff --git a/gtsam/Makefile b/gtsam/Makefile deleted file mode 100644 index 83ffcbadf233dde8930b3513870e0417074a2bfb..0000000000000000000000000000000000000000 --- a/gtsam/Makefile +++ /dev/null @@ -1,51 +0,0 @@ -# robotpkg Makefile for: wip/gtsam -# Created: Ellon Paiva Mendes <emendes@laas.fr>, 5 Nov. 2014 -# - -DISTNAME= gtsam-3.1.0 -EXTRACT_SUFX= .tgz -VERSION= 3.1.0 -PKGREVISION= 6 -CATEGORIES= wip -MASTER_SITES= https://research.cc.gatech.edu/borg/sites/edu.borg/files/downloads/ - -MAINTAINER= gtsam@lists.gatech.edu -COMMENT= "Library that implement smoothing and mapping (SAM) in robotics and vision using factor graphs and Bayes networks" -LICENSE= modified-bsd - -MAKE_JOBS_SAFE= yes -CMAKE_ARG_PATH= .. -CONFIGURE_DIRS= _build - -USE_QMAKE= no - -CMAKE_ARGS+= \ - '-DCMAKE_BUILD_TYPE=Release'\ - '-DGTSAM_BUILD_EXAMPLES_ALWAYS=OFF' - -PKG_SUPPORTED_OPTIONS+= toolbox -PKG_OPTION_DESCR.toolbox= Build and install the matlab toolbox (Needs MATLAB_ROOT path set in robotpkg.conf) -define PKG_OPTION_SET.toolbox - CMAKE_ARGS+= '-DGTSAM_INSTALL_MATLAB_TOOLBOX=ON' - CMAKE_ARGS+= '-Dmex_command=${MATLAB_ROOT}/bin/mex' - DEPEND_ABI.gcc= gcc<=4.7 - include ../../mk/sysdep/gcc.mk -endef -define PKG_OPTION_UNSET.toolbox - CMAKE_ARGS+= '-DGTSAM_INSTALL_MATLAB_TOOLBOX=OFF' -endef - -DEPEND_ABI.boost-libs= boost-libs>=1.43 -DEPEND_ABI.boost-headers= boost-headers>=1.43 -include ../../devel/boost-headers/depend.mk -include ../../devel/boost-libs/depend.mk - -DEPEND_ABI.cmake= cmake>=2.6 -include ../../mk/sysdep/cmake.mk - -include ../../mk/language/c.mk -include ../../mk/language/c++.mk -include ../../mk/robotpkg.mk - -pre-configure: - ${RUN}${MKDIR} ${WRKSRC}/_build \ No newline at end of file diff --git a/gtsam/PLIST b/gtsam/PLIST deleted file mode 100644 index 85adb89886fa567a03b66d5b49b9f2aaf1aaa593..0000000000000000000000000000000000000000 --- a/gtsam/PLIST +++ /dev/null @@ -1,1032 +0,0 @@ -@comment Wed May 6 15:57:27 CEST 2015 -bin/wrap -include/CppUnitLite/Failure.h -include/CppUnitLite/Test.h -include/CppUnitLite/TestHarness.h -include/CppUnitLite/TestRegistry.h -include/CppUnitLite/TestResult.h -include/GeographicLib/Accumulator.hpp -include/GeographicLib/AlbersEqualArea.hpp -include/GeographicLib/AzimuthalEquidistant.hpp -include/GeographicLib/CassiniSoldner.hpp -include/GeographicLib/CircularEngine.hpp -include/GeographicLib/Config.h -include/GeographicLib/Constants.hpp -include/GeographicLib/DMS.hpp -include/GeographicLib/Ellipsoid.hpp -include/GeographicLib/EllipticFunction.hpp -include/GeographicLib/GeoCoords.hpp -include/GeographicLib/Geocentric.hpp -include/GeographicLib/Geodesic.hpp -include/GeographicLib/GeodesicExact.hpp -include/GeographicLib/GeodesicLine.hpp -include/GeographicLib/GeodesicLineExact.hpp -include/GeographicLib/Geohash.hpp -include/GeographicLib/Geoid.hpp -include/GeographicLib/Gnomonic.hpp -include/GeographicLib/GravityCircle.hpp -include/GeographicLib/GravityModel.hpp -include/GeographicLib/LambertConformalConic.hpp -include/GeographicLib/LocalCartesian.hpp -include/GeographicLib/MGRS.hpp -include/GeographicLib/MagneticCircle.hpp -include/GeographicLib/MagneticModel.hpp -include/GeographicLib/Math.hpp -include/GeographicLib/NormalGravity.hpp -include/GeographicLib/OSGB.hpp -include/GeographicLib/PolarStereographic.hpp -include/GeographicLib/PolygonArea.hpp -include/GeographicLib/SphericalEngine.hpp -include/GeographicLib/SphericalHarmonic.hpp -include/GeographicLib/SphericalHarmonic1.hpp -include/GeographicLib/SphericalHarmonic2.hpp -include/GeographicLib/TransverseMercator.hpp -include/GeographicLib/TransverseMercatorExact.hpp -include/GeographicLib/UTMUPS.hpp -include/GeographicLib/Utility.hpp -include/gtsam/3rdparty/CCOLAMD/ccolamd.h -include/gtsam/3rdparty/Eigen/Eigen/Array -include/gtsam/3rdparty/Eigen/Eigen/Cholesky -include/gtsam/3rdparty/Eigen/Eigen/CholmodSupport -include/gtsam/3rdparty/Eigen/Eigen/Core -include/gtsam/3rdparty/Eigen/Eigen/Dense -include/gtsam/3rdparty/Eigen/Eigen/Eigen -include/gtsam/3rdparty/Eigen/Eigen/Eigen2Support -include/gtsam/3rdparty/Eigen/Eigen/Eigenvalues -include/gtsam/3rdparty/Eigen/Eigen/Geometry -include/gtsam/3rdparty/Eigen/Eigen/Householder -include/gtsam/3rdparty/Eigen/Eigen/IterativeLinearSolvers -include/gtsam/3rdparty/Eigen/Eigen/Jacobi -include/gtsam/3rdparty/Eigen/Eigen/LU -include/gtsam/3rdparty/Eigen/Eigen/LeastSquares -include/gtsam/3rdparty/Eigen/Eigen/MetisSupport -include/gtsam/3rdparty/Eigen/Eigen/OrderingMethods -include/gtsam/3rdparty/Eigen/Eigen/PaStiXSupport -include/gtsam/3rdparty/Eigen/Eigen/PardisoSupport -include/gtsam/3rdparty/Eigen/Eigen/QR -include/gtsam/3rdparty/Eigen/Eigen/QtAlignedMalloc -include/gtsam/3rdparty/Eigen/Eigen/SPQRSupport -include/gtsam/3rdparty/Eigen/Eigen/SVD -include/gtsam/3rdparty/Eigen/Eigen/Sparse -include/gtsam/3rdparty/Eigen/Eigen/SparseCholesky -include/gtsam/3rdparty/Eigen/Eigen/SparseCore -include/gtsam/3rdparty/Eigen/Eigen/SparseLU -include/gtsam/3rdparty/Eigen/Eigen/SparseQR -include/gtsam/3rdparty/Eigen/Eigen/StdDeque -include/gtsam/3rdparty/Eigen/Eigen/StdList -include/gtsam/3rdparty/Eigen/Eigen/StdVector -include/gtsam/3rdparty/Eigen/Eigen/SuperLUSupport -include/gtsam/3rdparty/Eigen/Eigen/UmfPackSupport -include/gtsam/3rdparty/Eigen/Eigen/src/Cholesky/LDLT.h -include/gtsam/3rdparty/Eigen/Eigen/src/Cholesky/LLT.h -include/gtsam/3rdparty/Eigen/Eigen/src/Cholesky/LLT_MKL.h -include/gtsam/3rdparty/Eigen/Eigen/src/CholmodSupport/CholmodSupport.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/Array.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/ArrayBase.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/ArrayWrapper.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/Assign.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/Assign_MKL.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/BandMatrix.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/Block.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/BooleanRedux.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/CommaInitializer.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/CoreIterators.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/CwiseBinaryOp.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/CwiseNullaryOp.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/CwiseUnaryOp.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/CwiseUnaryView.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/DenseBase.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/DenseCoeffsBase.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/DenseStorage.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/Diagonal.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/DiagonalMatrix.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/DiagonalProduct.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/Dot.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/EigenBase.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/Flagged.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/ForceAlignedAccess.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/Functors.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/Fuzzy.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/GeneralProduct.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/GenericPacketMath.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/GlobalFunctions.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/IO.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/Map.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/MapBase.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/MathFunctions.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/Matrix.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/MatrixBase.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/NestByValue.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/NoAlias.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/NumTraits.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/PermutationMatrix.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/PlainObjectBase.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/ProductBase.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/Random.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/Redux.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/Ref.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/Replicate.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/ReturnByValue.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/Reverse.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/Select.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/SelfAdjointView.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/SelfCwiseBinaryOp.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/SolveTriangular.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/StableNorm.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/Stride.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/Swap.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/Transpose.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/Transpositions.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/TriangularMatrix.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/VectorBlock.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/VectorwiseOp.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/Visitor.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/arch/AltiVec/Complex.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/arch/AltiVec/PacketMath.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/arch/Default/Settings.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/arch/NEON/Complex.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/arch/NEON/PacketMath.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/arch/SSE/Complex.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/arch/SSE/MathFunctions.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/arch/SSE/PacketMath.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/products/CoeffBasedProduct.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/products/GeneralBlockPanelKernel.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/products/GeneralMatrixMatrix.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/products/GeneralMatrixMatrixTriangular_MKL.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/products/GeneralMatrixMatrix_MKL.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/products/GeneralMatrixVector.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/products/GeneralMatrixVector_MKL.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/products/Parallelizer.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/products/SelfadjointMatrixMatrix_MKL.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/products/SelfadjointMatrixVector.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/products/SelfadjointMatrixVector_MKL.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/products/SelfadjointProduct.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/products/SelfadjointRank2Update.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/products/TriangularMatrixMatrix.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/products/TriangularMatrixMatrix_MKL.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/products/TriangularMatrixVector.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/products/TriangularMatrixVector_MKL.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/products/TriangularSolverMatrix.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/products/TriangularSolverMatrix_MKL.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/products/TriangularSolverVector.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/util/BlasUtil.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/util/Constants.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/util/DisableStupidWarnings.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/util/ForwardDeclarations.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/util/MKL_support.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/util/Macros.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/util/Memory.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/util/Meta.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/util/NonMPL2.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/util/ReenableStupidWarnings.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/util/StaticAssert.h -include/gtsam/3rdparty/Eigen/Eigen/src/Core/util/XprHelper.h -include/gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/Block.h -include/gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/Cwise.h -include/gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/CwiseOperators.h -include/gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/Geometry/AlignedBox.h -include/gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/Geometry/All.h -include/gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/Geometry/AngleAxis.h -include/gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/Geometry/Hyperplane.h -include/gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/Geometry/ParametrizedLine.h -include/gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/Geometry/Quaternion.h -include/gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/Geometry/Rotation2D.h -include/gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/Geometry/RotationBase.h -include/gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/Geometry/Scaling.h -include/gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/Geometry/Transform.h -include/gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/Geometry/Translation.h -include/gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/LU.h -include/gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/Lazy.h -include/gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/LeastSquares.h -include/gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/Macros.h -include/gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/MathFunctions.h -include/gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/Memory.h -include/gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/Meta.h -include/gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/Minor.h -include/gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/QR.h -include/gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/SVD.h -include/gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/TriangularSolver.h -include/gtsam/3rdparty/Eigen/Eigen/src/Eigen2Support/VectorBlock.h -include/gtsam/3rdparty/Eigen/Eigen/src/Eigenvalues/ComplexEigenSolver.h -include/gtsam/3rdparty/Eigen/Eigen/src/Eigenvalues/ComplexSchur.h -include/gtsam/3rdparty/Eigen/Eigen/src/Eigenvalues/ComplexSchur_MKL.h -include/gtsam/3rdparty/Eigen/Eigen/src/Eigenvalues/EigenSolver.h -include/gtsam/3rdparty/Eigen/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h -include/gtsam/3rdparty/Eigen/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h -include/gtsam/3rdparty/Eigen/Eigen/src/Eigenvalues/HessenbergDecomposition.h -include/gtsam/3rdparty/Eigen/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h -include/gtsam/3rdparty/Eigen/Eigen/src/Eigenvalues/RealQZ.h -include/gtsam/3rdparty/Eigen/Eigen/src/Eigenvalues/RealSchur.h -include/gtsam/3rdparty/Eigen/Eigen/src/Eigenvalues/RealSchur_MKL.h -include/gtsam/3rdparty/Eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h -include/gtsam/3rdparty/Eigen/Eigen/src/Eigenvalues/SelfAdjointEigenSolver_MKL.h -include/gtsam/3rdparty/Eigen/Eigen/src/Eigenvalues/Tridiagonalization.h -include/gtsam/3rdparty/Eigen/Eigen/src/Geometry/AlignedBox.h -include/gtsam/3rdparty/Eigen/Eigen/src/Geometry/AngleAxis.h -include/gtsam/3rdparty/Eigen/Eigen/src/Geometry/EulerAngles.h -include/gtsam/3rdparty/Eigen/Eigen/src/Geometry/Homogeneous.h -include/gtsam/3rdparty/Eigen/Eigen/src/Geometry/Hyperplane.h -include/gtsam/3rdparty/Eigen/Eigen/src/Geometry/OrthoMethods.h -include/gtsam/3rdparty/Eigen/Eigen/src/Geometry/ParametrizedLine.h -include/gtsam/3rdparty/Eigen/Eigen/src/Geometry/Quaternion.h -include/gtsam/3rdparty/Eigen/Eigen/src/Geometry/Rotation2D.h -include/gtsam/3rdparty/Eigen/Eigen/src/Geometry/RotationBase.h -include/gtsam/3rdparty/Eigen/Eigen/src/Geometry/Scaling.h -include/gtsam/3rdparty/Eigen/Eigen/src/Geometry/Transform.h -include/gtsam/3rdparty/Eigen/Eigen/src/Geometry/Translation.h -include/gtsam/3rdparty/Eigen/Eigen/src/Geometry/Umeyama.h -include/gtsam/3rdparty/Eigen/Eigen/src/Geometry/arch/Geometry_SSE.h -include/gtsam/3rdparty/Eigen/Eigen/src/Householder/BlockHouseholder.h -include/gtsam/3rdparty/Eigen/Eigen/src/Householder/Householder.h -include/gtsam/3rdparty/Eigen/Eigen/src/Householder/HouseholderSequence.h -include/gtsam/3rdparty/Eigen/Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h -include/gtsam/3rdparty/Eigen/Eigen/src/IterativeLinearSolvers/BiCGSTAB.h -include/gtsam/3rdparty/Eigen/Eigen/src/IterativeLinearSolvers/ConjugateGradient.h -include/gtsam/3rdparty/Eigen/Eigen/src/IterativeLinearSolvers/IncompleteLUT.h -include/gtsam/3rdparty/Eigen/Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h -include/gtsam/3rdparty/Eigen/Eigen/src/Jacobi/Jacobi.h -include/gtsam/3rdparty/Eigen/Eigen/src/LU/Determinant.h -include/gtsam/3rdparty/Eigen/Eigen/src/LU/FullPivLU.h -include/gtsam/3rdparty/Eigen/Eigen/src/LU/Inverse.h -include/gtsam/3rdparty/Eigen/Eigen/src/LU/PartialPivLU.h -include/gtsam/3rdparty/Eigen/Eigen/src/LU/PartialPivLU_MKL.h -include/gtsam/3rdparty/Eigen/Eigen/src/LU/arch/Inverse_SSE.h -include/gtsam/3rdparty/Eigen/Eigen/src/MetisSupport/MetisSupport.h -include/gtsam/3rdparty/Eigen/Eigen/src/OrderingMethods/Amd.h -include/gtsam/3rdparty/Eigen/Eigen/src/OrderingMethods/Eigen_Colamd.h -include/gtsam/3rdparty/Eigen/Eigen/src/OrderingMethods/Ordering.h -include/gtsam/3rdparty/Eigen/Eigen/src/PaStiXSupport/PaStiXSupport.h -include/gtsam/3rdparty/Eigen/Eigen/src/PardisoSupport/PardisoSupport.h -include/gtsam/3rdparty/Eigen/Eigen/src/QR/ColPivHouseholderQR.h -include/gtsam/3rdparty/Eigen/Eigen/src/QR/ColPivHouseholderQR_MKL.h -include/gtsam/3rdparty/Eigen/Eigen/src/QR/FullPivHouseholderQR.h -include/gtsam/3rdparty/Eigen/Eigen/src/QR/HouseholderQR.h -include/gtsam/3rdparty/Eigen/Eigen/src/QR/HouseholderQR_MKL.h -include/gtsam/3rdparty/Eigen/Eigen/src/SPQRSupport/SuiteSparseQRSupport.h -include/gtsam/3rdparty/Eigen/Eigen/src/SVD/JacobiSVD.h -include/gtsam/3rdparty/Eigen/Eigen/src/SVD/JacobiSVD_MKL.h -include/gtsam/3rdparty/Eigen/Eigen/src/SVD/UpperBidiagonalization.h -include/gtsam/3rdparty/Eigen/Eigen/src/SparseCholesky/SimplicialCholesky.h -include/gtsam/3rdparty/Eigen/Eigen/src/SparseCholesky/SimplicialCholesky_impl.h -include/gtsam/3rdparty/Eigen/Eigen/src/SparseCore/AmbiVector.h -include/gtsam/3rdparty/Eigen/Eigen/src/SparseCore/CompressedStorage.h -include/gtsam/3rdparty/Eigen/Eigen/src/SparseCore/ConservativeSparseSparseProduct.h -include/gtsam/3rdparty/Eigen/Eigen/src/SparseCore/MappedSparseMatrix.h -include/gtsam/3rdparty/Eigen/Eigen/src/SparseCore/SparseBlock.h -include/gtsam/3rdparty/Eigen/Eigen/src/SparseCore/SparseColEtree.h -include/gtsam/3rdparty/Eigen/Eigen/src/SparseCore/SparseCwiseBinaryOp.h -include/gtsam/3rdparty/Eigen/Eigen/src/SparseCore/SparseCwiseUnaryOp.h -include/gtsam/3rdparty/Eigen/Eigen/src/SparseCore/SparseDenseProduct.h -include/gtsam/3rdparty/Eigen/Eigen/src/SparseCore/SparseDiagonalProduct.h -include/gtsam/3rdparty/Eigen/Eigen/src/SparseCore/SparseDot.h -include/gtsam/3rdparty/Eigen/Eigen/src/SparseCore/SparseFuzzy.h -include/gtsam/3rdparty/Eigen/Eigen/src/SparseCore/SparseMatrix.h -include/gtsam/3rdparty/Eigen/Eigen/src/SparseCore/SparseMatrixBase.h -include/gtsam/3rdparty/Eigen/Eigen/src/SparseCore/SparsePermutation.h -include/gtsam/3rdparty/Eigen/Eigen/src/SparseCore/SparseProduct.h -include/gtsam/3rdparty/Eigen/Eigen/src/SparseCore/SparseRedux.h -include/gtsam/3rdparty/Eigen/Eigen/src/SparseCore/SparseSelfAdjointView.h -include/gtsam/3rdparty/Eigen/Eigen/src/SparseCore/SparseSparseProductWithPruning.h -include/gtsam/3rdparty/Eigen/Eigen/src/SparseCore/SparseTranspose.h -include/gtsam/3rdparty/Eigen/Eigen/src/SparseCore/SparseTriangularView.h -include/gtsam/3rdparty/Eigen/Eigen/src/SparseCore/SparseUtil.h -include/gtsam/3rdparty/Eigen/Eigen/src/SparseCore/SparseVector.h -include/gtsam/3rdparty/Eigen/Eigen/src/SparseCore/SparseView.h -include/gtsam/3rdparty/Eigen/Eigen/src/SparseCore/TriangularSolver.h -include/gtsam/3rdparty/Eigen/Eigen/src/SparseLU/SparseLU.h -include/gtsam/3rdparty/Eigen/Eigen/src/SparseLU/SparseLUImpl.h -include/gtsam/3rdparty/Eigen/Eigen/src/SparseLU/SparseLU_Memory.h -include/gtsam/3rdparty/Eigen/Eigen/src/SparseLU/SparseLU_Structs.h -include/gtsam/3rdparty/Eigen/Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h -include/gtsam/3rdparty/Eigen/Eigen/src/SparseLU/SparseLU_Utils.h -include/gtsam/3rdparty/Eigen/Eigen/src/SparseLU/SparseLU_column_bmod.h -include/gtsam/3rdparty/Eigen/Eigen/src/SparseLU/SparseLU_column_dfs.h -include/gtsam/3rdparty/Eigen/Eigen/src/SparseLU/SparseLU_copy_to_ucol.h -include/gtsam/3rdparty/Eigen/Eigen/src/SparseLU/SparseLU_gemm_kernel.h -include/gtsam/3rdparty/Eigen/Eigen/src/SparseLU/SparseLU_heap_relax_snode.h -include/gtsam/3rdparty/Eigen/Eigen/src/SparseLU/SparseLU_kernel_bmod.h -include/gtsam/3rdparty/Eigen/Eigen/src/SparseLU/SparseLU_panel_bmod.h -include/gtsam/3rdparty/Eigen/Eigen/src/SparseLU/SparseLU_panel_dfs.h -include/gtsam/3rdparty/Eigen/Eigen/src/SparseLU/SparseLU_pivotL.h -include/gtsam/3rdparty/Eigen/Eigen/src/SparseLU/SparseLU_pruneL.h -include/gtsam/3rdparty/Eigen/Eigen/src/SparseLU/SparseLU_relax_snode.h -include/gtsam/3rdparty/Eigen/Eigen/src/SparseQR/SparseQR.h -include/gtsam/3rdparty/Eigen/Eigen/src/StlSupport/StdDeque.h -include/gtsam/3rdparty/Eigen/Eigen/src/StlSupport/StdList.h -include/gtsam/3rdparty/Eigen/Eigen/src/StlSupport/StdVector.h -include/gtsam/3rdparty/Eigen/Eigen/src/StlSupport/details.h -include/gtsam/3rdparty/Eigen/Eigen/src/SuperLUSupport/SuperLUSupport.h -include/gtsam/3rdparty/Eigen/Eigen/src/UmfPackSupport/UmfPackSupport.h -include/gtsam/3rdparty/Eigen/Eigen/src/misc/Image.h -include/gtsam/3rdparty/Eigen/Eigen/src/misc/Kernel.h -include/gtsam/3rdparty/Eigen/Eigen/src/misc/Solve.h -include/gtsam/3rdparty/Eigen/Eigen/src/misc/SparseSolve.h -include/gtsam/3rdparty/Eigen/Eigen/src/misc/blas.h -include/gtsam/3rdparty/Eigen/Eigen/src/plugins/ArrayCwiseBinaryOps.h -include/gtsam/3rdparty/Eigen/Eigen/src/plugins/ArrayCwiseUnaryOps.h -include/gtsam/3rdparty/Eigen/Eigen/src/plugins/BlockMethods.h -include/gtsam/3rdparty/Eigen/Eigen/src/plugins/CommonCwiseBinaryOps.h -include/gtsam/3rdparty/Eigen/Eigen/src/plugins/CommonCwiseUnaryOps.h -include/gtsam/3rdparty/Eigen/Eigen/src/plugins/MatrixCwiseBinaryOps.h -include/gtsam/3rdparty/Eigen/Eigen/src/plugins/MatrixCwiseUnaryOps.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/AutoDiff/AutoDiffJacobian.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/AutoDiff/AutoDiffScalar.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/AutoDiff/AutoDiffVector.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/BVH/BVAlgorithms.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/BVH/KdBVH.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/Eigenvalues/ArpackSelfAdjointEigenSolver.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/FFT/ei_fftw_impl.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/FFT/ei_kissfft_impl.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/IterativeSolvers/ConstrainedConjGrad.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/IterativeSolvers/DGMRES.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/IterativeSolvers/GMRES.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/IterativeSolvers/IncompleteCholesky.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/IterativeSolvers/IncompleteLU.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/IterativeSolvers/IterationController.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/IterativeSolvers/MINRES.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/IterativeSolvers/Scaling.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/KroneckerProduct/KroneckerTensorProduct.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/LevenbergMarquardt/LMcovar.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/LevenbergMarquardt/LMonestep.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/LevenbergMarquardt/LMpar.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/LevenbergMarquardt/LMqrsolv.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/LevenbergMarquardt/LevenbergMarquardt.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/MatrixFunctions/MatrixExponential.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/MatrixFunctions/MatrixFunction.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/MatrixFunctions/MatrixFunctionAtomic.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/MatrixFunctions/MatrixLogarithm.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/MatrixFunctions/MatrixPower.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/MatrixFunctions/MatrixSquareRoot.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/MatrixFunctions/StemFunction.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/MoreVectorization/MathFunctions.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/NonLinearOptimization/HybridNonLinearSolver.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/NonLinearOptimization/LevenbergMarquardt.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/NonLinearOptimization/chkder.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/NonLinearOptimization/covar.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/NonLinearOptimization/dogleg.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/NonLinearOptimization/fdjac1.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/NonLinearOptimization/lmpar.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/NonLinearOptimization/qrsolv.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/NonLinearOptimization/r1mpyq.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/NonLinearOptimization/r1updt.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/NonLinearOptimization/rwupdt.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/NumericalDiff/NumericalDiff.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/Polynomials/Companion.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/Polynomials/PolynomialSolver.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/Polynomials/PolynomialUtils.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/SVD/BDCSVD.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/SVD/JacobiSVD.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/SVD/SVDBase.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/Skyline/SkylineInplaceLU.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/Skyline/SkylineMatrix.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/Skyline/SkylineMatrixBase.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/Skyline/SkylineProduct.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/Skyline/SkylineStorage.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/Skyline/SkylineUtil.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/SparseExtra/BlockOfDynamicSparseMatrix.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/SparseExtra/DynamicSparseMatrix.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/SparseExtra/MarketIO.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/SparseExtra/MatrixMarketIterator.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/SparseExtra/RandomSetter.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/Splines/Spline.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/Splines/SplineFitting.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/src/Splines/SplineFwd.h -include/gtsam/3rdparty/Eigen/unsupported/Eigen/AdolcForward -include/gtsam/3rdparty/Eigen/unsupported/Eigen/AlignedVector3 -include/gtsam/3rdparty/Eigen/unsupported/Eigen/ArpackSupport -include/gtsam/3rdparty/Eigen/unsupported/Eigen/AutoDiff -include/gtsam/3rdparty/Eigen/unsupported/Eigen/BVH -include/gtsam/3rdparty/Eigen/unsupported/Eigen/FFT -include/gtsam/3rdparty/Eigen/unsupported/Eigen/IterativeSolvers -include/gtsam/3rdparty/Eigen/unsupported/Eigen/KroneckerProduct -include/gtsam/3rdparty/Eigen/unsupported/Eigen/LevenbergMarquardt -include/gtsam/3rdparty/Eigen/unsupported/Eigen/MPRealSupport -include/gtsam/3rdparty/Eigen/unsupported/Eigen/MatrixFunctions -include/gtsam/3rdparty/Eigen/unsupported/Eigen/MoreVectorization -include/gtsam/3rdparty/Eigen/unsupported/Eigen/NonLinearOptimization -include/gtsam/3rdparty/Eigen/unsupported/Eigen/NumericalDiff -include/gtsam/3rdparty/Eigen/unsupported/Eigen/OpenGLSupport -include/gtsam/3rdparty/Eigen/unsupported/Eigen/Polynomials -include/gtsam/3rdparty/Eigen/unsupported/Eigen/SVD -include/gtsam/3rdparty/Eigen/unsupported/Eigen/Skyline -include/gtsam/3rdparty/Eigen/unsupported/Eigen/SparseExtra -include/gtsam/3rdparty/Eigen/unsupported/Eigen/Splines -include/gtsam/3rdparty/UFconfig/UFconfig.h -include/gtsam/3rdparty/gtsam_eigen_includes.h -include/gtsam/base/ConcurrentMap.h -include/gtsam/base/DSFVector.h -include/gtsam/base/DerivedValue.h -include/gtsam/base/FastDefaultAllocator.h -include/gtsam/base/FastList.h -include/gtsam/base/FastMap.h -include/gtsam/base/FastSet.h -include/gtsam/base/FastVector.h -include/gtsam/base/Group.h -include/gtsam/base/Lie-inl.h -include/gtsam/base/Lie.h -include/gtsam/base/LieMatrix.h -include/gtsam/base/LieScalar.h -include/gtsam/base/LieVector.h -include/gtsam/base/Manifold.h -include/gtsam/base/Matrix.h -include/gtsam/base/SymmetricBlockMatrix.h -include/gtsam/base/SymmetricBlockMatrixBlockExpr.h -include/gtsam/base/Testable.h -include/gtsam/base/TestableAssertions.h -include/gtsam/base/Value.h -include/gtsam/base/Vector.h -include/gtsam/base/VerticalBlockMatrix.h -include/gtsam/base/cholesky.h -include/gtsam/base/debug.h -include/gtsam/base/lieProxies.h -include/gtsam/base/numericalDerivative.h -include/gtsam/base/serialization.h -include/gtsam/base/serializationTestHelpers.h -include/gtsam/base/timing.h -include/gtsam/base/treeTraversal-inst.h -include/gtsam/base/treeTraversal/parallelTraversalTasks.h -include/gtsam/base/treeTraversal/statistics.h -include/gtsam/base/types.h -include/gtsam/config.h -include/gtsam/discrete/AlgebraicDecisionTree.h -include/gtsam/discrete/Assignment.h -include/gtsam/discrete/DecisionTree-inl.h -include/gtsam/discrete/DecisionTree.h -include/gtsam/discrete/DecisionTreeFactor.h -include/gtsam/discrete/DiscreteBayesNet.h -include/gtsam/discrete/DiscreteBayesTree.h -include/gtsam/discrete/DiscreteConditional.h -include/gtsam/discrete/DiscreteEliminationTree.h -include/gtsam/discrete/DiscreteFactor.h -include/gtsam/discrete/DiscreteFactorGraph.h -include/gtsam/discrete/DiscreteJunctionTree.h -include/gtsam/discrete/DiscreteKey.h -include/gtsam/discrete/DiscreteMarginals.h -include/gtsam/discrete/Potentials.h -include/gtsam/discrete/Signature.h -include/gtsam/dllexport.h -include/gtsam/geometry/Cal3Bundler.h -include/gtsam/geometry/Cal3DS2.h -include/gtsam/geometry/Cal3Unified.h -include/gtsam/geometry/Cal3_S2.h -include/gtsam/geometry/Cal3_S2Stereo.h -include/gtsam/geometry/CalibratedCamera.h -include/gtsam/geometry/EssentialMatrix.h -include/gtsam/geometry/ParallaxAnglePoint2.h -include/gtsam/geometry/ParallaxAnglePoint3.h -include/gtsam/geometry/PinholeCamera.h -include/gtsam/geometry/Point2.h -include/gtsam/geometry/Point3.h -include/gtsam/geometry/Pose2.h -include/gtsam/geometry/Pose3.h -include/gtsam/geometry/Rot2.h -include/gtsam/geometry/Rot3.h -include/gtsam/geometry/SimpleCamera.h -include/gtsam/geometry/StereoCamera.h -include/gtsam/geometry/StereoPoint2.h -include/gtsam/geometry/TriangulationFactor.h -include/gtsam/geometry/Unit3.h -include/gtsam/geometry/concepts.h -include/gtsam/geometry/triangulation.h -include/gtsam/global_includes.h -include/gtsam/inference/BayesNet-inst.h -include/gtsam/inference/BayesNet.h -include/gtsam/inference/BayesTree-inst.h -include/gtsam/inference/BayesTree.h -include/gtsam/inference/BayesTreeCliqueBase-inst.h -include/gtsam/inference/BayesTreeCliqueBase.h -include/gtsam/inference/ClusterTree-inst.h -include/gtsam/inference/ClusterTree.h -include/gtsam/inference/Conditional-inst.h -include/gtsam/inference/Conditional.h -include/gtsam/inference/EliminateableFactorGraph-inst.h -include/gtsam/inference/EliminateableFactorGraph.h -include/gtsam/inference/EliminationTree-inst.h -include/gtsam/inference/EliminationTree.h -include/gtsam/inference/Factor.h -include/gtsam/inference/FactorGraph-inst.h -include/gtsam/inference/FactorGraph.h -include/gtsam/inference/ISAM-inst.h -include/gtsam/inference/ISAM.h -include/gtsam/inference/JunctionTree-inst.h -include/gtsam/inference/JunctionTree.h -include/gtsam/inference/Key.h -include/gtsam/inference/LabeledSymbol.h -include/gtsam/inference/Ordering.h -include/gtsam/inference/Symbol.h -include/gtsam/inference/VariableIndex-inl.h -include/gtsam/inference/VariableIndex.h -include/gtsam/inference/VariableSlots.h -include/gtsam/inference/graph-inl.h -include/gtsam/inference/graph.h -include/gtsam/inference/inference-inst.h -include/gtsam/inference/inferenceExceptions.h -include/gtsam/linear/ConjugateGradientSolver.h -include/gtsam/linear/Errors.h -include/gtsam/linear/GaussianBayesNet.h -include/gtsam/linear/GaussianBayesTree-inl.h -include/gtsam/linear/GaussianBayesTree.h -include/gtsam/linear/GaussianConditional-inl.h -include/gtsam/linear/GaussianConditional.h -include/gtsam/linear/GaussianDensity.h -include/gtsam/linear/GaussianEliminationTree.h -include/gtsam/linear/GaussianFactor.h -include/gtsam/linear/GaussianFactorGraph.h -include/gtsam/linear/GaussianISAM.h -include/gtsam/linear/GaussianJunctionTree.h -include/gtsam/linear/HessianFactor-inl.h -include/gtsam/linear/HessianFactor.h -include/gtsam/linear/IterativeSolver.h -include/gtsam/linear/JacobianFactor-inl.h -include/gtsam/linear/JacobianFactor.h -include/gtsam/linear/KalmanFilter.h -include/gtsam/linear/NoiseModel.h -include/gtsam/linear/Sampler.h -include/gtsam/linear/SubgraphPreconditioner.h -include/gtsam/linear/SubgraphSolver.h -include/gtsam/linear/VectorValues.h -include/gtsam/linear/iterative-inl.h -include/gtsam/linear/iterative.h -include/gtsam/linear/linearAlgorithms-inst.h -include/gtsam/linear/linearExceptions.h -include/gtsam/navigation/AttitudeFactor.h -include/gtsam/navigation/CombinedImuFactor.h -include/gtsam/navigation/GPSFactor.h -include/gtsam/navigation/ImuBias.h -include/gtsam/navigation/ImuFactor.h -include/gtsam/navigation/MagFactor.h -include/gtsam/nonlinear/DoglegOptimizer.h -include/gtsam/nonlinear/DoglegOptimizerImpl.h -include/gtsam/nonlinear/ExtendedKalmanFilter-inl.h -include/gtsam/nonlinear/ExtendedKalmanFilter.h -include/gtsam/nonlinear/GaussNewtonOptimizer.h -include/gtsam/nonlinear/ISAM2-impl.h -include/gtsam/nonlinear/ISAM2-inl.h -include/gtsam/nonlinear/ISAM2.h -include/gtsam/nonlinear/LevenbergMarquardtOptimizer.h -include/gtsam/nonlinear/LinearContainerFactor.h -include/gtsam/nonlinear/Marginals.h -include/gtsam/nonlinear/NonlinearConjugateGradientOptimizer.h -include/gtsam/nonlinear/NonlinearEquality.h -include/gtsam/nonlinear/NonlinearFactor.h -include/gtsam/nonlinear/NonlinearFactorGraph.h -include/gtsam/nonlinear/NonlinearISAM.h -include/gtsam/nonlinear/NonlinearOptimizer.h -include/gtsam/nonlinear/NonlinearOptimizerParams.h -include/gtsam/nonlinear/Symbol.h -include/gtsam/nonlinear/Values-inl.h -include/gtsam/nonlinear/Values.h -include/gtsam/nonlinear/WhiteNoiseFactor.h -include/gtsam/nonlinear/nonlinearExceptions.h -include/gtsam/slam/AntiFactor.h -include/gtsam/slam/BearingFactor.h -include/gtsam/slam/BearingRangeFactor.h -include/gtsam/slam/BetweenFactor.h -include/gtsam/slam/BoundingConstraint.h -include/gtsam/slam/EssentialMatrixConstraint.h -include/gtsam/slam/EssentialMatrixFactor.h -include/gtsam/slam/GeneralSFMFactor.h -include/gtsam/slam/ImplicitSchurFactor.h -include/gtsam/slam/JacobianFactorQ.h -include/gtsam/slam/JacobianFactorQR.h -include/gtsam/slam/JacobianFactorSVD.h -include/gtsam/slam/JacobianSchurFactor.h -include/gtsam/slam/ParallaxAngleProjectionFactor.h -include/gtsam/slam/PoseRotationPrior.h -include/gtsam/slam/PoseTranslationPrior.h -include/gtsam/slam/PriorFactor.h -include/gtsam/slam/ProjectionFactor.h -include/gtsam/slam/RangeFactor.h -include/gtsam/slam/ReferenceFrameFactor.h -include/gtsam/slam/RegularHessianFactor.h -include/gtsam/slam/RotateFactor.h -include/gtsam/slam/SmartFactorBase.h -include/gtsam/slam/SmartProjectionFactor.h -include/gtsam/slam/SmartProjectionPoseFactor.h -include/gtsam/slam/StereoFactor.h -include/gtsam/slam/dataset.h -include/gtsam/slam/lago.h -include/gtsam/symbolic/SymbolicBayesNet.h -include/gtsam/symbolic/SymbolicBayesTree.h -include/gtsam/symbolic/SymbolicConditional.h -include/gtsam/symbolic/SymbolicEliminationTree.h -include/gtsam/symbolic/SymbolicFactor-inst.h -include/gtsam/symbolic/SymbolicFactor.h -include/gtsam/symbolic/SymbolicFactorGraph.h -include/gtsam/symbolic/SymbolicISAM.h -include/gtsam/symbolic/SymbolicJunctionTree.h -include/wrap/matlab.h -lib/cmake/GTSAM/GTSAM-exports-release.cmake -lib/cmake/GTSAM/GTSAM-exports.cmake -lib/cmake/GTSAM/GTSAMConfig.cmake -lib/cmake/GTSAM/gtsam_extra.cmake -lib/cmake/GTSAMCMakeTools/Config.cmake.in -lib/cmake/GTSAMCMakeTools/GTSAMCMakeToolsConfig.cmake -lib/cmake/GTSAMCMakeTools/GtsamBuildTypes.cmake -lib/cmake/GTSAMCMakeTools/GtsamMakeConfigFile.cmake -lib/cmake/GTSAMCMakeTools/GtsamMatlabWrap.cmake -lib/cmake/GTSAMCMakeTools/GtsamPythonWrap.cmake -lib/cmake/GTSAMCMakeTools/GtsamTesting.cmake -lib/cmake/GTSAMCMakeTools/GtsamTestingObsolete.cmake -lib/cmake/GTSAMCMakeTools/README.html -lib/cmake/GTSAMCMakeTools/dllexport.h.in -lib/libCppUnitLite.a -lib/libGeographic.so -lib/libGeographic.so.10 -lib/libGeographic.so.10.1.2 -lib/libgtsam.so -lib/libgtsam.so.3 -lib/libgtsam.so.${PKGVERSION} -lib/python/site-packages/geographiclib/__init__.py -lib/python/site-packages/geographiclib/accumulator.py -lib/python/site-packages/geographiclib/constants.py -lib/python/site-packages/geographiclib/geodesic.py -lib/python/site-packages/geographiclib/geodesiccapability.py -lib/python/site-packages/geographiclib/geodesicline.py -lib/python/site-packages/geographiclib/geomath.py -lib/python/site-packages/geographiclib/polygonarea.py -libexec/GeographicLib/matlab/cassini_fwd.m -libexec/GeographicLib/matlab/cassini_inv.m -libexec/GeographicLib/matlab/defaultellipsoid.m -libexec/GeographicLib/matlab/ecc2flat.m -libexec/GeographicLib/matlab/eqdazim_fwd.m -libexec/GeographicLib/matlab/eqdazim_inv.m -libexec/GeographicLib/matlab/flat2ecc.m -libexec/GeographicLib/matlab/geocentricforward.cpp -libexec/GeographicLib/matlab/geocentricforward.m -libexec/GeographicLib/matlab/geocentricreverse.cpp -libexec/GeographicLib/matlab/geocentricreverse.m -libexec/GeographicLib/matlab/geodarea.m -libexec/GeographicLib/matlab/geoddistance.m -libexec/GeographicLib/matlab/geoddoc.m -libexec/GeographicLib/matlab/geodesicdirect.cpp -libexec/GeographicLib/matlab/geodesicdirect.m -libexec/GeographicLib/matlab/geodesicinverse.cpp -libexec/GeographicLib/matlab/geodesicinverse.m -libexec/GeographicLib/matlab/geodesicline.cpp -libexec/GeographicLib/matlab/geodesicline.m -libexec/GeographicLib/matlab/geodproj.m -libexec/GeographicLib/matlab/geodreckon.m -libexec/GeographicLib/matlab/geographiclibinterface.m -libexec/GeographicLib/matlab/geoidheight.cpp -libexec/GeographicLib/matlab/geoidheight.m -libexec/GeographicLib/matlab/gnomonic_fwd.m -libexec/GeographicLib/matlab/gnomonic_inv.m -libexec/GeographicLib/matlab/localcartesianforward.cpp -libexec/GeographicLib/matlab/localcartesianforward.m -libexec/GeographicLib/matlab/localcartesianreverse.cpp -libexec/GeographicLib/matlab/localcartesianreverse.m -libexec/GeographicLib/matlab/mgrsforward.cpp -libexec/GeographicLib/matlab/mgrsforward.m -libexec/GeographicLib/matlab/mgrsreverse.cpp -libexec/GeographicLib/matlab/mgrsreverse.m -libexec/GeographicLib/matlab/polygonarea.cpp -libexec/GeographicLib/matlab/polygonarea.m -libexec/GeographicLib/matlab/private/A1m1f.m -libexec/GeographicLib/matlab/private/A2m1f.m -libexec/GeographicLib/matlab/private/A3coeff.m -libexec/GeographicLib/matlab/private/A3f.m -libexec/GeographicLib/matlab/private/AngDiff.m -libexec/GeographicLib/matlab/private/AngNormalize.m -libexec/GeographicLib/matlab/private/AngNormalize2.m -libexec/GeographicLib/matlab/private/AngRound.m -libexec/GeographicLib/matlab/private/C1f.m -libexec/GeographicLib/matlab/private/C1pf.m -libexec/GeographicLib/matlab/private/C2f.m -libexec/GeographicLib/matlab/private/C3coeff.m -libexec/GeographicLib/matlab/private/C3f.m -libexec/GeographicLib/matlab/private/C4coeff.m -libexec/GeographicLib/matlab/private/C4f.m -libexec/GeographicLib/matlab/private/SinCosNorm.m -libexec/GeographicLib/matlab/private/SinCosSeries.m -libexec/GeographicLib/matlab/private/atanhee.m -libexec/GeographicLib/matlab/private/cbrt.m -libexec/GeographicLib/matlab/private/cvmgt.m -libexec/GeographicLib/matlab/private/sumx.m -libexec/GeographicLib/matlab/private/swap.m -libexec/GeographicLib/matlab/tranmerc_fwd.m -libexec/GeographicLib/matlab/tranmerc_inv.m -libexec/GeographicLib/matlab/utm_fwd.m -libexec/GeographicLib/matlab/utm_inv.m -libexec/GeographicLib/matlab/utmupsforward.cpp -libexec/GeographicLib/matlab/utmupsforward.m -libexec/GeographicLib/matlab/utmupsreverse.cpp -libexec/GeographicLib/matlab/utmupsreverse.m -share/cmake/GeographicLib/geographiclib-config-version.cmake -share/cmake/GeographicLib/geographiclib-config.cmake -share/cmake/GeographicLib/geographiclib-depends-release.cmake -share/cmake/GeographicLib/geographiclib-depends.cmake -share/doc/GeographicLib/html/LICENSE.txt -share/doc/GeographicLib/html/index.html -share/doc/GeographicLib/html/utilities.html -share/doc/GeographicLib/scripts/GeographicLib/DMS.js -share/doc/GeographicLib/scripts/GeographicLib/Geodesic.js -share/doc/GeographicLib/scripts/GeographicLib/GeodesicLine.js -share/doc/GeographicLib/scripts/GeographicLib/Interface.js -share/doc/GeographicLib/scripts/GeographicLib/Math.js -share/doc/GeographicLib/scripts/GeographicLib/PolygonArea.js -share/doc/GeographicLib/scripts/geod-calc.html -share/doc/GeographicLib/scripts/geod-google-instructions.html -share/doc/GeographicLib/scripts/geod-google.html -${PLIST.toolbox}gtsam_toolbox/+gtsam/+imuBias/ConstantBias.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/+noiseModel/+mEstimator/Base.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/+noiseModel/+mEstimator/Fair.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/+noiseModel/+mEstimator/Huber.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/+noiseModel/+mEstimator/Null.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/+noiseModel/+mEstimator/Tukey.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/+noiseModel/Base.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/+noiseModel/Constrained.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/+noiseModel/Diagonal.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/+noiseModel/Gaussian.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/+noiseModel/Isotropic.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/+noiseModel/Robust.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/+noiseModel/Unit.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/+utilities/allPose3s.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/+utilities/createKeyList.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/+utilities/createKeySet.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/+utilities/createKeyVector.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/+utilities/extractPoint2.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/+utilities/extractPoint3.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/+utilities/extractPose2.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/+utilities/extractPose3.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/+utilities/insertBackprojections.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/+utilities/insertProjectionFactors.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/+utilities/localToWorld.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/+utilities/perturbPoint2.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/+utilities/perturbPoint3.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/+utilities/perturbPose2.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/+utilities/reprojectionErrors.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/BearingFactor2D.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/BearingRangeFactor2D.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/BetweenFactorConstantBias.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/BetweenFactorLieMatrix.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/BetweenFactorLieScalar.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/BetweenFactorLieVector.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/BetweenFactorPoint2.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/BetweenFactorPoint3.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/BetweenFactorPose2.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/BetweenFactorPose3.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/BetweenFactorRot2.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/BetweenFactorRot3.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/CHECK.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/Cal3DS2.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/Cal3_S2.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/Cal3_S2Stereo.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/CalibratedCamera.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/CombinedImuFactor.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/CombinedImuFactorPreintegratedMeasurements.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/ConjugateGradientParameters.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/Contents.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/DoglegOptimizer.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/DoglegParams.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/EQUALITY.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/EXPECT.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/Errors.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/EssentialMatrix.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/EssentialMatrixFactor.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/GaussNewtonOptimizer.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/GaussNewtonParams.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/GaussianBayesNet.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/GaussianBayesTree.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/GaussianConditional.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/GaussianDensity.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/GaussianFactor.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/GaussianFactorGraph.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/GaussianISAM.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/GeneralSFMFactor2Cal3_S2.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/GeneralSFMFactorCal3DS2.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/GeneralSFMFactorCal3_S2.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/GenericProjectionFactorCal3DS2.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/GenericProjectionFactorCal3_S2.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/GenericStereoFactor3D.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/HessianFactor.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/ISAM2.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/ISAM2Clique.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/ISAM2DoglegParams.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/ISAM2GaussNewtonParams.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/ISAM2Params.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/ISAM2Result.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/ISAM2ThresholdMap.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/ISAM2ThresholdMapValue.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/ImuFactor.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/ImuFactorPreintegratedMeasurements.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/IterativeOptimizationParameters.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/JacobianFactor.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/JointMarginal.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/KalmanFilter.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/KeyGroupMap.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/KeyList.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/KeySet.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/KeyVector.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/LabeledSymbol.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/LevenbergMarquardtOptimizer.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/LevenbergMarquardtParams.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/LieMatrix.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/LieScalar.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/LieVector.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/LinearContainerFactor.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/Marginals.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/NoiseModelFactor.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/NonlinearEqualityCal3_S2.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/NonlinearEqualityCalibratedCamera.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/NonlinearEqualityConstantBias.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/NonlinearEqualityLieMatrix.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/NonlinearEqualityLieScalar.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/NonlinearEqualityLieVector.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/NonlinearEqualityPoint2.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/NonlinearEqualityPoint3.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/NonlinearEqualityPose2.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/NonlinearEqualityPose3.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/NonlinearEqualityRot2.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/NonlinearEqualityRot3.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/NonlinearEqualitySimpleCamera.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/NonlinearEqualityStereoPoint2.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/NonlinearFactor.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/NonlinearFactorGraph.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/NonlinearISAM.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/NonlinearOptimizer.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/NonlinearOptimizerParams.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/Ordering.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/PAPoint3OnlyAnchorsProjectionFactorCal3DS2.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/PAPoint3OnlyAnchorsProjectionFactorCal3_S2.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/PAPoint3ProjectionFactorCal3DS2.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/PAPoint3ProjectionFactorCal3_S2.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/PAPoint2SingleAnchorProjectionFactorCal3DS2.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/PAPoint2SingleAnchorProjectionFactorCal3_S2.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/PAPoint3SingleAnchorProjectionFactorCal3DS2.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/PAPoint3SingleAnchorProjectionFactorCal3_S2.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/ParallaxAnglePoint2.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/ParallaxAnglePoint3.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/PinholeCameraCal3DS2.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/Point2.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/Point3.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/Pose2.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/Pose3.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/PoseRotationPrior2D.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/PoseRotationPrior3D.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/PoseTranslationPrior2D.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/PoseTranslationPrior3D.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/PriorFactorCal3_S2.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/PriorFactorCalibratedCamera.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/PriorFactorConstantBias.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/PriorFactorLieMatrix.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/PriorFactorLieScalar.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/PriorFactorLieVector.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/PriorFactorPoint2.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/PriorFactorPoint3.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/PriorFactorPose2.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/PriorFactorPose3.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/PriorFactorRot2.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/PriorFactorRot3.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/PriorFactorSimpleCamera.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/PriorFactorStereoPoint2.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/RangeFactorCalibratedCamera.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/RangeFactorCalibratedCameraPoint.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/RangeFactorPose2.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/RangeFactorPose3.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/RangeFactorPosePoint2.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/RangeFactorPosePoint3.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/RangeFactorSimpleCamera.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/RangeFactorSimpleCameraPoint.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/Rot2.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/Rot3.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/Sampler.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/SimpleCamera.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/StereoCamera.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/StereoPoint2.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/SubgraphSolver.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/SubgraphSolverParameters.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/SymbolicBayesNet.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/SymbolicBayesTree.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/SymbolicConditional.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/SymbolicFactor.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/SymbolicFactorGraph.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/Unit3.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/Value.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/Values.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/VariableIndex.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/VectorValues.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/VisualISAMGenerateData.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/VisualISAMInitialize.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/VisualISAMPlot.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/VisualISAMStep.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/checkConvergence.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/circlePose2.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/circlePose3.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/covarianceEllipse.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/covarianceEllipse3D.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/findExampleDataFile.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/linear_independent.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/load2D.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/load2D_robust.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/load3D.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/mrsymbol.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/mrsymbolChr.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/mrsymbolIndex.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/mrsymbolLabel.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/plot2DPoints.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/plot2DTrajectory.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/plot3DPoints.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/plot3DTrajectory.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/plotBayesNet.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/plotBayesTree.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/plotCamera.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/plotPoint2.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/plotPoint3.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/plotPose2.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/plotPose3.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/printKeyList.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/printKeySet.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/printKeyVector.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/readG2o.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/save2D.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/symbol.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/symbolChr.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/symbolIndex.m -${PLIST.toolbox}gtsam_toolbox/+gtsam/writeG2o.m -${PLIST.toolbox}gtsam_toolbox/README-gtsam-toolbox.txt -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/Data/5pointExample1.txt -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/Data/5pointExample2.txt -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/Data/KittiEquivBiasedImu.txt -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/Data/KittiEquivBiasedImu_metadata.txt -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/Data/KittiGps_converted.txt -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/Data/Plaza1_.mat -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/Data/Plaza1_DR.txt -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/Data/Plaza1_TD.txt -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/Data/Plaza2_.mat -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/Data/Plaza2_DR.txt -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/Data/Plaza2_TD.txt -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/Data/VO_calibration.txt -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/Data/VO_camera_poses_large.txt -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/Data/VO_stereo_factors_large.txt -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/Data/dubrovnik-1-1-pre.txt -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/Data/dubrovnik-3-7-18-pre.txt -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/Data/dubrovnik-3-7-pre-rewritten.txt -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/Data/dubrovnik-3-7-pre.txt -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/Data/example.graph -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/Data/noisyToyGraph.txt -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/Data/optimizedNoisyToyGraph.txt -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/Data/orientationsNoisyToyGraph.txt -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/Data/pose2example-rewritten.txt -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/Data/pose2example.txt -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/Data/sphere2500.txt -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/Data/sphere2500_groundtruth.txt -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/Data/sphere_smallnoise.graph -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/Data/victoria_park.txt -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/Data/w100.graph -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/Data/w10000.graph -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/Data/w20000.txt -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/IMUKittiExampleGPS.m -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/LocalizationExample.m -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/MonocularVOExample.m -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/OdometryExample.m -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/PlanarSLAMExample.m -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/PlanarSLAMExample_graph.m -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/PlanarSLAMExample_sampling.m -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/Pose2SLAMExample.m -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/Pose2SLAMExample_advanced.m -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/Pose2SLAMExample_circle.m -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/Pose2SLAMExample_graph.m -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/Pose2SLAMwSPCG.m -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/Pose3SLAMExample.m -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/Pose3SLAMExample_graph.m -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/RangeISAMExample_plaza.m -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/RangeSLAMExample_plaza.m -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/SBAExample.m -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/SFMExample.m -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/StereoVOExample.m -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/StereoVOExample_large.m -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/VisualISAMDemo.m -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/VisualISAMExample.m -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/VisualISAM_gui.fig -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/VisualISAM_gui.m -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/deg2utm.m -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/gtsamExamples.fig -${PLIST.toolbox}gtsam_toolbox/gtsam_examples/gtsamExamples.m -${PLIST.toolbox}gtsam_toolbox/gtsam_tests/testJacobianFactor.m -${PLIST.toolbox}gtsam_toolbox/gtsam_tests/testKalmanFilter.m -${PLIST.toolbox}gtsam_toolbox/gtsam_tests/testLocalizationExample.m -${PLIST.toolbox}gtsam_toolbox/gtsam_tests/testOdometryExample.m -${PLIST.toolbox}gtsam_toolbox/gtsam_tests/testPlanarSLAMExample.m -${PLIST.toolbox}gtsam_toolbox/gtsam_tests/testPose2SLAMExample.m -${PLIST.toolbox}gtsam_toolbox/gtsam_tests/testPose3SLAMExample.m -${PLIST.toolbox}gtsam_toolbox/gtsam_tests/testSFMExample.m -${PLIST.toolbox}gtsam_toolbox/gtsam_tests/testSerialization.m -${PLIST.toolbox}gtsam_toolbox/gtsam_tests/testStereoVOExample.m -${PLIST.toolbox}gtsam_toolbox/gtsam_tests/testThinBayesTree.m -${PLIST.toolbox}gtsam_toolbox/gtsam_tests/testThinTree.m -${PLIST.toolbox}gtsam_toolbox/gtsam_tests/testThinTreeBayesNet.m -${PLIST.toolbox}gtsam_toolbox/gtsam_tests/testUtilities.m -${PLIST.toolbox}gtsam_toolbox/gtsam_tests/testVisualISAMExample.m -${PLIST.toolbox}gtsam_toolbox/gtsam_tests/test_gtsam.m -${PLIST.toolbox}gtsam_toolbox/gtsam_tests/thinBayesTree.m -${PLIST.toolbox}gtsam_toolbox/gtsam_tests/thinTree.m -${PLIST.toolbox}gtsam_toolbox/gtsam_tests/thinTreeBayesNet.m -${PLIST.toolbox}gtsam_toolbox/gtsam_wrapper.mexa64 -${PLIST.toolbox}gtsam_toolbox/unstable_examples/ConcurrentFilteringAndSmoothingExample.m -${PLIST.toolbox}gtsam_toolbox/unstable_examples/IMUKittiExampleAdvanced.m -${PLIST.toolbox}gtsam_toolbox/unstable_examples/IMUKittiExampleVO.m -${PLIST.toolbox}gtsam_toolbox/unstable_examples/SmartRangeFactorExample.m -${PLIST.toolbox}gtsam_toolbox/unstable_examples/testTSAMFactors.m diff --git a/gtsam/depend.mk b/gtsam/depend.mk deleted file mode 100644 index e600a52759183f9b6b4e5322630d58adb207ef3a..0000000000000000000000000000000000000000 --- a/gtsam/depend.mk +++ /dev/null @@ -1,26 +0,0 @@ -# robotpkg depend.mk for: wip/gtsam -# Created: Ellon Paiva Mendes on Wed, 12 Nov 2014 -# - -DEPEND_DEPTH:= ${DEPEND_DEPTH}+ -gtsam_DEPEND_MK:= ${gtsam_DEPEND_MK}+ - -ifeq (+,$(DEPEND_DEPTH)) -DEPEND_PKG+= gtsam -endif - -ifeq (+,$(gtsam_DEPEND_MK)) # ----------------------------------------------- - -PREFER.gtsam?= robotpkg - -DEPEND_USE+= gtsam -DEPEND_ABI.gtsam?= gtsam>=3.1.0 -DEPEND_DIR.gtsam?= ../../wip/gtsam - -SYSTEM_SEARCH.gtsam=\ - include/jafar/rtslam/rtslamException.hpp \ - lib/libgtsam.so - -endif # gtsam_DEPEND_MK ---------------------------------------------------- - -DEPEND_DEPTH:= ${DEPEND_DEPTH:+=} diff --git a/gtsam/distinfo b/gtsam/distinfo deleted file mode 100644 index ed47fd866887d26d9ef09e1859808d185640afc0..0000000000000000000000000000000000000000 --- a/gtsam/distinfo +++ /dev/null @@ -1,11 +0,0 @@ -SHA1 (gtsam-3.1.0.tgz) = faba7b25d6dc4f03c0d2b5486cae6294cde49301 -RMD160 (gtsam-3.1.0.tgz) = ae8c978e16966d66c332bb0183bd71ef840244ac -Size (gtsam-3.1.0.tgz) = 18228078 bytes -SHA1 (patch-aa) = 1390af9ce452d0585d13ebcab7f13ecf7fc8b4fc -SHA1 (patch-ab) = b0324c3061b99d060732f0911860c2fda146d50c -SHA1 (patch-ac) = 5cd8ee856125dfbcd7705b981a5bead62ac6a4ff -SHA1 (patch-ad) = 61eacf5a77082c37bd557f0846a284e0a26afad4 -SHA1 (patch-ae) = 2c19ba0c0571c2584f39a8d97d1b636fdf2453f6 -SHA1 (patch-af) = f5d8abc7a653ba16a4349fb91a39a36553447760 -SHA1 (patch-ag) = 4897db95620e525193410034fea5accbe55ca43c -SHA1 (patch-ah) = 7d2853cf39d4834ff5a3eca5cc8dcf17c5f148af diff --git a/gtsam/patches/patch-aa b/gtsam/patches/patch-aa deleted file mode 100644 index 6fe483a2f83ee446d224225bab31d7a98236b2bb..0000000000000000000000000000000000000000 --- a/gtsam/patches/patch-aa +++ /dev/null @@ -1,11 +0,0 @@ ---- gtsam/slam/SmartFactorBase.h 2014-06-01 21:22:39.000000000 +0200 -+++ gtsam/slam/SmartFactorBase.h 2014-10-03 15:30:49.756247706 +0200 -@@ -572,7 +572,7 @@ - - FastMap<Key,size_t> KeySlotMap; - for (size_t slot=0; slot < allKeys.size(); slot++) -- KeySlotMap.insert(std::make_pair<Key,size_t>(allKeys[slot],slot)); -+ KeySlotMap.insert(std::make_pair(allKeys[slot],slot)); - - // a single point is observed in numKeys cameras - size_t numKeys = this->keys_.size(); // cameras observing current point diff --git a/gtsam/patches/patch-ab b/gtsam/patches/patch-ab deleted file mode 100644 index 8464cdf15bdfa3614fbcad8938714b0d69d95ab6..0000000000000000000000000000000000000000 --- a/gtsam/patches/patch-ab +++ /dev/null @@ -1,17 +0,0 @@ ---- gtsam/slam/SmartProjectionPoseFactor.h 2015-02-27 20:50:39.981678671 +0100 -+++ gtsam/slam/SmartProjectionPoseFactor.h 2015-02-27 20:41:07.244188256 +0100 -@@ -157,9 +157,14 @@ - size_t i=0; - BOOST_FOREACH(const Key& k, this->keys_) { - Pose3 pose = values.at<Pose3>(k); -+ if(this->body_P_sensor_) { -+ typename Base::Camera camera(pose.compose(*this->body_P_sensor_), *K_all_[i++]); -+ cameras.push_back(camera); -+ } else { - typename Base::Camera camera(pose, *K_all_[i++]); - cameras.push_back(camera); - } -+ } - return cameras; - } - diff --git a/gtsam/patches/patch-ac b/gtsam/patches/patch-ac deleted file mode 100644 index a14ecfd38847a99654ad15e64c0dd8e847f5239f..0000000000000000000000000000000000000000 --- a/gtsam/patches/patch-ac +++ /dev/null @@ -1,2140 +0,0 @@ ---- gtsam/geometry/ParallaxAnglePoint2.cpp 1970-01-01 01:00:00.000000000 +0100 -+++ gtsam/geometry/ParallaxAnglePoint2.cpp 2015-05-06 13:52:06.399469742 +0200 -@@ -0,0 +1,66 @@ -+/* ---------------------------------------------------------------------------- -+ -+ * 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 ParallaxAnglePoint.cpp -+ * @brief Parallax Angle Point without depth -+ * @author Ellon P. Mendes -+ */ -+ -+#include "ParallaxAnglePoint2.h" -+ -+using namespace std; -+ -+namespace gtsam { -+ -+/* ************************************************************************* */ -+void ParallaxAnglePoint2::print(const string& s) const { -+ cout << s << *this << endl; -+} -+ -+/* ************************************************************************* */ -+bool ParallaxAnglePoint2::equals(const ParallaxAnglePoint2 & q, double tol) const { -+ return (fabs(yaw_ - q.yaw()) < tol && -+ fabs(pitch_ - q.pitch()) < tol); -+} -+ -+/* ************************************************************************* */ -+ParallaxAnglePoint2 ParallaxAnglePoint2::operator+(const ParallaxAnglePoint2& q) const { -+ return ParallaxAnglePoint2(yaw_ + q.yaw_, pitch_ + q.pitch_); -+} -+ -+/* ************************************************************************* */ -+ParallaxAnglePoint2 ParallaxAnglePoint2::operator-(const ParallaxAnglePoint2& q) const { -+ return ParallaxAnglePoint2(yaw_ - q.yaw_, pitch_ - q.pitch_); -+} -+ -+/* ************************************************************************* */ -+Vector3 ParallaxAnglePoint2::directionVector(boost::optional<gtsam::Matrix&> H) const -+{ -+ double sy = sin(yaw_), cy = cos(yaw_), sp = sin(pitch_), cp = cos(pitch_); -+ if(H) -+ { -+ H->resize(3,2); -+ *H << -sy*cp, -cy*sp, -+ cy*cp, -sy*sp, -+ 0 , cp ; -+ } -+ return (Vector(3) << cy*cp, sy*cp, sp); -+} -+ -+/* ************************************************************************* */ -+ostream &operator<<(ostream &os, const ParallaxAnglePoint2& p) { -+ os << '(' << p.yaw() << ", " << p.pitch() << ')'; -+ return os; -+} -+ -+/* ************************************************************************* */ -+} // namespace gtsam ---- gtsam/geometry/ParallaxAnglePoint2.h 1970-01-01 01:00:00.000000000 +0100 -+++ gtsam/geometry/ParallaxAnglePoint2.h 2015-05-05 21:36:19.405210807 +0200 -@@ -0,0 +1,144 @@ -+/* ---------------------------------------------------------------------------- -+ -+ * 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 ParallaxAnglePoint2.h -+ * @brief Parallax Angle Point without depth -+ * @author Ellon P. Mendes -+ */ -+ -+// \callgraph -+ -+#pragma once -+ -+#include <gtsam/base/Matrix.h> -+#include <gtsam/base/DerivedValue.h> -+#include <gtsam/base/Lie.h> -+ -+#include <boost/serialization/nvp.hpp> -+ -+#include <cmath> -+ -+namespace gtsam { -+ -+ /** -+ * A Non-Depth Parallax Point -+ * @addtogroup slam -+ * \nosubgrouping -+ */ -+ class GTSAM_EXPORT ParallaxAnglePoint2 : public DerivedValue<ParallaxAnglePoint2> { -+ public: -+ /// dimension of the variable - used to autodetect sizes -+ static const size_t dimension = 2; -+ -+ private: -+ double yaw_; ///< Angle around z-axis, in rad. -+ double pitch_; ///< Angle around y-axis, in rad. -+ -+ public: -+ -+ /// @name Standard Constructors -+ /// @{ -+ -+ /// Default constructor creates a ParallaxAnglePoint2 oriented on x-axis. -+ ParallaxAnglePoint2(): yaw_(0), pitch_(0) {} -+ -+ /// Construct from x, y, and z coordinates -+ ParallaxAnglePoint2(double yaw, double pitch): yaw_(yaw), pitch_(pitch) {} -+ -+ /// @} -+ /// @name Advanced Constructors -+ /// @{ -+ -+ /// Construct from 2-element vector -+ ParallaxAnglePoint2(const Vector& v) { -+ if(v.size() != 2) -+ throw std::invalid_argument("ParallaxAnglePoint2 constructor from Vector requires that the Vector have dimension 2"); -+ yaw_ = v(0); -+ pitch_ = v(1); -+ } -+ -+ /// @} -+ /// @name Testable -+ /// @{ -+ -+ /** print with optional string */ -+ void print(const std::string& s = "") const; -+ -+ /** equals with an tolerance */ -+ bool equals(const ParallaxAnglePoint2& p, double tol = 1e-9) const; -+ -+ /// @} -+ /// @name Manifold -+ /// @{ -+ -+ /// dimension of the variable - used to autodetect sizes -+ inline static size_t Dim() { return dimension; } -+ -+ /// return dimensionality of tangent space, DOF = 3 -+ inline size_t dim() const { return dimension; } -+ -+ /// Updates a with tangent space delta -+ inline ParallaxAnglePoint2 retract(const Vector& v) const { return ParallaxAnglePoint2(*this + v); } -+ -+ /// Returns inverse retraction -+ inline Vector2 localCoordinates(const ParallaxAnglePoint2& q) const { return (q - *this).vector(); } -+ -+ /// @} -+ /// @name Standard Interface -+ /// @{ -+ -+ /// assignment -+ // ParallaxAnglePoint2 operator = (const ParallaxAnglePoint2& q) const; -+ -+ ///add two points -+ ParallaxAnglePoint2 operator + (const ParallaxAnglePoint2& q) const; -+ -+ ///subtract two points -+ ParallaxAnglePoint2 operator - (const ParallaxAnglePoint2& q) const; -+ -+ /** return vectorized form (column-wise)*/ -+ Vector2 vector() const { return Vector2(yaw_,pitch_); } -+ -+ /// get x -+ inline double yaw() const {return yaw_;} -+ -+ /// get y -+ inline double pitch() const {return pitch_;} -+ -+ /// @} -+ -+ Vector3 directionVector(boost::optional<gtsam::Matrix&> H = boost::none) const; -+ -+ /// Output stream operator -+ GTSAM_EXPORT friend std::ostream &operator<<(std::ostream &os, const ParallaxAnglePoint2& p); -+ -+ private: -+ -+ /// @name Advanced Interface -+ /// @{ -+ -+ /** Serialization function */ -+ friend class boost::serialization::access; -+ template<class ARCHIVE> -+ void serialize(ARCHIVE & ar, const unsigned int version) -+ { -+ ar & boost::serialization::make_nvp("ParallaxAnglePoint2", -+ boost::serialization::base_object<Value>(*this)); -+ ar & BOOST_SERIALIZATION_NVP(yaw_); -+ ar & BOOST_SERIALIZATION_NVP(pitch_); -+ } -+ -+ /// @} -+ -+ }; -+ -+} ---- gtsam/geometry/ParallaxAnglePoint3.cpp 1970-01-01 01:00:00.000000000 +0100 -+++ gtsam/geometry/ParallaxAnglePoint3.cpp 2015-05-06 14:40:46.138648761 +0200 -@@ -0,0 +1,223 @@ -+/* ---------------------------------------------------------------------------- -+ -+ * 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 ParallaxAnglePoint3.cpp -+ * @brief 3D Parallax Angle Point -+ * @author Ellon P. Mendes -+ */ -+ -+#include "ParallaxAnglePoint3.h" -+ -+using namespace std; -+ -+// Prototypes of local functions -+double angleBetweenUnitVectors( -+ const gtsam::Vector3 & v1, const gtsam::Vector3 & v2, -+ boost::optional<gtsam::Matrix&> Dv1 = boost::none, -+ boost::optional<gtsam::Matrix&> Dv2 = boost::none); -+ -+double norm(gtsam::Vector3 v, boost::optional<gtsam::Matrix&> Dv = boost::none); -+ -+namespace gtsam { -+/* ************************************************************************* */ -+void ParallaxAnglePoint3::print(const string& s) const { -+ cout << s << *this << endl; -+} -+ -+/* ************************************************************************* */ -+bool ParallaxAnglePoint3::equals(const ParallaxAnglePoint3 & q, double tol) const { -+ return (fabs(yaw_ - q.yaw() ) < tol && -+ fabs(pitch_ - q.pitch() ) < tol && -+ fabs(parallax_ - q.parallax()) < tol); -+} -+ -+/* ************************************************************************* */ -+ParallaxAnglePoint3 ParallaxAnglePoint3::operator+(const ParallaxAnglePoint3& q) const { -+ return ParallaxAnglePoint3(yaw_ + q.yaw_, -+ pitch_ + q.pitch_, -+ parallax_ + q.parallax_); -+} -+ -+/* ************************************************************************* */ -+ParallaxAnglePoint3 ParallaxAnglePoint3::operator-(const ParallaxAnglePoint3& q) const { -+ return ParallaxAnglePoint3(yaw_ - q.yaw_, -+ pitch_ - q.pitch_, -+ parallax_ - q.parallax_); -+} -+ -+/* ************************************************************************* */ -+ostream &operator<<(ostream &os, const ParallaxAnglePoint3& p) { -+ os << '(' << p.yaw() << ", " << p.pitch() << ", " << p.parallax() << ')'; -+ return os; -+} -+ -+/* ************************************************************************* */ -+Vector3 ParallaxAnglePoint3::directionVectorFromMainAnchor( -+ boost::optional<gtsam::Matrix&> H) const -+{ -+ double sy = sin(yaw_), cy = cos(yaw_), sp = sin(pitch_), cp = cos(pitch_); -+ if(H) -+ { -+ H->resize(3,3); -+ *H << -sy*cp, -cy*sp, 0, -+ cy*cp, -sy*sp, 0, -+ 0 , cp , 0; -+ } -+ return (Vector(3) << cy*cp, sy*cp, sp); -+} -+ -+/* ************************************************************************* */ -+Vector3 ParallaxAnglePoint3::directionVectorFromAssoAnchor( -+ const Point3 & mainAnchor, const Point3 & assoAnchor, -+ boost::optional<gtsam::Matrix&> Dpoint, -+ boost::optional<gtsam::Matrix&> Dmain , -+ boost::optional<gtsam::Matrix&> Dasso ) const -+{ -+ if (!Dasso) -+ { -+ return directionVectorFromOtheAnchor( mainAnchor, assoAnchor, assoAnchor, Dpoint, Dmain ); -+ } -+ -+ Matrix Dothe; -+ Vector3 directVec = directionVectorFromOtheAnchor( -+ mainAnchor, assoAnchor, assoAnchor, -+ Dpoint, Dmain, Dasso, Dothe); -+ -+ *Dasso += Dothe; -+ -+ return directVec; -+ -+} -+ -+/* ************************************************************************* */ -+Vector3 ParallaxAnglePoint3::directionVectorFromOtheAnchor( -+ const Point3 & mainAnchor, const Point3 & assoAnchor, const Point3 & otheAnchor, -+ boost::optional<gtsam::Matrix&> Dpoint, -+ boost::optional<gtsam::Matrix&> Dmain , -+ boost::optional<gtsam::Matrix&> Dasso , -+ boost::optional<gtsam::Matrix&> Dothe ) const -+{ -+ -+ if (!Dpoint && !Dmain && !Dasso && !Dothe) -+ { -+ // Get vector from main anchor to associated anchor -+ Point3 main_T_asso(assoAnchor - mainAnchor); -+ -+ // Get a normalized version of it -+ Vector3 main_T_asso_normd(main_T_asso.normalize().vector()); -+ -+ // Get the lenght of the vector -+ double norm_mTa = main_T_asso.norm(); -+ -+ // Get direction vector from main anchor to point -+ // NOTE: It's already normalized -+ Vector3 dirvec_mTp(directionVectorFromMainAnchor()); -+ -+ // Get the angle between these vectors -+ double phi = angleBetweenUnitVectors(dirvec_mTp, main_T_asso_normd); -+ -+ // Get vector from main anchor to other anchor -+ Vector3 main_T_other((otheAnchor - mainAnchor).vector()); -+ -+ return sin(parallax_ + phi) * norm_mTa * dirvec_mTp - sin(parallax_) * main_T_other; -+ } -+ -+ // Same computation with jacobians -+ -+ // Get vector from main anchor to associated anchor -+ Matrix MTA_assoAnchor, MTA_mainAnchor; -+ Point3 main_T_asso(assoAnchor.sub(mainAnchor, MTA_assoAnchor, MTA_mainAnchor)); -+ -+ // Get a normalized version of it -+ Matrix MTANORMD_mta; -+ Vector3 main_T_asso_normd(main_T_asso.normalize(MTANORMD_mta).vector()); -+ -+ // Get the lenght of the vector -+ Matrix NORMMTA_mta; -+ double norm_mTa = norm(main_T_asso.vector(), NORMMTA_mta); -+ -+ // Get direction vector from main anchor to point -+ // NOTE: It's already normalized -+ Matrix DIRVECMTP_point; -+ Vector3 dirvec_mTp(directionVectorFromMainAnchor(DIRVECMTP_point)); -+ -+ // Get the angle between these vectors -+ Matrix PHI_dirvecmtp, PHI_mtanormd; -+ double phi = angleBetweenUnitVectors(dirvec_mTp, main_T_asso_normd, PHI_dirvecmtp, PHI_mtanormd); -+ -+ // Get vector from main anchor to other anchor -+ Matrix MTO_otheanchor, MTO_mainanchor; -+ Vector3 main_T_othe(otheAnchor.sub(mainAnchor, MTO_otheanchor, MTO_mainanchor).vector()); -+ -+ // Chain of partial derivates -+ // main anchor -+ if(Dmain) -+ { -+ *Dmain = dirvec_mTp * ( cos(parallax_ + phi) * norm_mTa * PHI_mtanormd * MTANORMD_mta * MTA_mainAnchor -+ + sin(parallax_ + phi) * NORMMTA_mta * MTA_mainAnchor ) -+ - sin(parallax_) * MTO_mainanchor; -+ } -+ // associated anchor -+ if(Dasso) -+ { -+ *Dasso = dirvec_mTp * ( cos(parallax_ + phi) * norm_mTa * PHI_mtanormd * MTANORMD_mta * MTA_assoAnchor -+ + sin(parallax_ + phi) * NORMMTA_mta * MTA_assoAnchor ); -+ } -+ // other anchor -+ if(Dothe) -+ { -+ *Dothe = - sin(parallax_) * MTO_otheanchor; -+ } -+ // parallax point -+ if(Dpoint) -+ { -+ Dpoint->resize(3,3); -+ Dpoint->block(0,0,3,2) = (dirvec_mTp * (cos(parallax_ + phi)*PHI_dirvecmtp*DIRVECMTP_point.block(0,0,3,2)) + sin(parallax_ + phi)*DIRVECMTP_point.block(0,0,3,2)) * norm_mTa; -+ Dpoint->block(0,2,3,1) = norm_mTa * dirvec_mTp * cos(parallax_ + phi) - main_T_othe * cos(parallax_); -+ } -+ -+ return sin(parallax_ + phi) * norm_mTa * dirvec_mTp - sin(parallax_) * main_T_othe; -+ -+} -+ -+} -+ -+// Local Functions -+double angleBetweenUnitVectors( -+ const gtsam::Vector3 & v1, const gtsam::Vector3 & v2, -+ boost::optional<gtsam::Matrix&> Dv1, -+ boost::optional<gtsam::Matrix&> Dv2) -+{ -+ double dot_prod = v1.dot(v2); -+ if(Dv1) -+ { -+ Dv1->resize(1,3); -+ *Dv1 = -(1/sqrt(1-(dot_prod*dot_prod))) * v2.transpose(); -+ } -+ if(Dv2) -+ { -+ Dv2->resize(1,3); -+ *Dv2 = -(1/sqrt(1-(dot_prod*dot_prod))) * v1.transpose(); -+ } -+ return acos(dot_prod); -+} -+ -+double norm(gtsam::Vector3 v, boost::optional<gtsam::Matrix&> Dv) -+{ -+ double n = v.norm(); -+ if(Dv) -+ { -+ Dv->resize(1,3); -+ *Dv << v(0)/n, v(1)/n, v(2)/n; -+ } -+ return n; -+} ---- gtsam/geometry/ParallaxAnglePoint3.h 1970-01-01 01:00:00.000000000 +0100 -+++ gtsam/geometry/ParallaxAnglePoint3.h 2015-05-06 15:02:42.114738787 +0200 -@@ -0,0 +1,165 @@ -+/* ---------------------------------------------------------------------------- -+ -+ * 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 ParallaxAnglePoint3.h -+ * @brief 3D Parallax Angle Point -+ * @author Ellon P. Mendes -+ */ -+ -+// \callgraph -+ -+#pragma once -+ -+#include <gtsam/base/Matrix.h> -+#include <gtsam/base/DerivedValue.h> -+#include <gtsam/base/Lie.h> -+ -+#include <gtsam/geometry/Point3.h> -+ -+#include <boost/serialization/nvp.hpp> -+ -+#include <cmath> -+ -+namespace gtsam { -+ -+ /** -+ * A 3D Parallax Point -+ * @addtogroup slam -+ * \nosubgrouping -+ */ -+ class GTSAM_EXPORT ParallaxAnglePoint3 : public DerivedValue<ParallaxAnglePoint3> { -+ public: -+ /// dimension of the variable - used to autodetect sizes -+ static const size_t dimension = 3; -+ -+ private: -+ double yaw_; ///< Angle around z-axis, in rad. -+ double pitch_; ///< Angle around y-axis, in rad. -+ double parallax_; ///< Angle between main anchor to feature vector and associated anchor to feature, in rad. -+ -+ public: -+ -+ /// @name Standard Constructors -+ /// @{ -+ -+ /// Default constructor creates a ParallaxAnglePoint3 oriented on x-axis, and with coincident anchors. -+ ParallaxAnglePoint3(): yaw_(0), pitch_(0), parallax_(0) {} -+ -+ /// Construct from yaw, pitch, and parallax coordinates -+ ParallaxAnglePoint3(double yaw, double pitch, double parallax): yaw_(yaw), pitch_(pitch), parallax_(parallax) {} -+ -+ /// @} -+ /// @name Advanced Constructors -+ /// @{ -+ -+ /// Construct from 2-element vector -+ ParallaxAnglePoint3(const Vector& v) { -+ if(v.size() != 3) -+ throw std::invalid_argument("ParallaxAnglePoint3 constructor from Vector requires that the Vector have dimension 3"); -+ yaw_ = v(0); -+ pitch_ = v(1); -+ parallax_ = v(2); -+ } -+ -+ /// @} -+ /// @name Testable -+ /// @{ -+ -+ /** print with optional string */ -+ void print(const std::string& s = "") const; -+ -+ /** equals with an tolerance */ -+ bool equals(const ParallaxAnglePoint3& p, double tol = 1e-9) const; -+ -+ /// @} -+ /// @name Manifold -+ /// @{ -+ -+ /// dimension of the variable - used to autodetect sizes -+ inline static size_t Dim() { return dimension; } -+ -+ /// return dimensionality of tangent space, DOF = 3 -+ inline size_t dim() const { return dimension; } -+ -+ /// Updates a with tangent space delta -+ inline ParallaxAnglePoint3 retract(const Vector& v) const { return ParallaxAnglePoint3(*this + v); } -+ -+ /// Returns inverse retraction -+ inline Vector3 localCoordinates(const ParallaxAnglePoint3& q) const { return (q - *this).vector(); } -+ -+ /// @} -+ /// @name Standard Interface -+ /// @{ -+ -+ /// assignment -+ // ParallaxAnglePoint3 operator = (const ParallaxAnglePoint3& q) const; -+ -+ ///add two points -+ ParallaxAnglePoint3 operator + (const ParallaxAnglePoint3& q) const; -+ -+ ///subtract two points -+ ParallaxAnglePoint3 operator - (const ParallaxAnglePoint3& q) const; -+ -+ /** return vectorized form (column-wise)*/ -+ Vector3 vector() const { return Vector3(yaw_,pitch_,parallax_); } -+ -+ /// get yaw -+ inline double yaw() const {return yaw_;} -+ -+ /// get pitch -+ inline double pitch() const {return pitch_;} -+ -+ /// get parallax -+ inline double parallax() const {return parallax_;} -+ -+ /// @} -+ -+ Vector3 directionVectorFromMainAnchor(boost::optional<gtsam::Matrix&> H = boost::none) const; -+ -+ Vector3 directionVectorFromAssoAnchor( -+ const Point3 & mainAnchor, const Point3 & assoAnchor, -+ boost::optional<gtsam::Matrix&> Dpoint = boost::none, -+ boost::optional<gtsam::Matrix&> Dmain = boost::none, -+ boost::optional<gtsam::Matrix&> Dasso = boost::none) const; -+ -+ Vector3 directionVectorFromOtheAnchor( -+ const Point3 & mainAnchor, const Point3 & assoAnchor, const Point3 & otheAnchor, -+ boost::optional<gtsam::Matrix&> Dpoint = boost::none, -+ boost::optional<gtsam::Matrix&> Dmain = boost::none, -+ boost::optional<gtsam::Matrix&> Dasso = boost::none, -+ boost::optional<gtsam::Matrix&> Dothe = boost::none) const; -+ -+ /// Output stream operator -+ GTSAM_EXPORT friend std::ostream &operator<<(std::ostream &os, const ParallaxAnglePoint3& p); -+ -+ private: -+ -+ /// @name Advanced Interface -+ /// @{ -+ -+ /** Serialization function */ -+ friend class boost::serialization::access; -+ template<class ARCHIVE> -+ void serialize(ARCHIVE & ar, const unsigned int version) -+ { -+ ar & boost::serialization::make_nvp("ParallaxAnglePoint3", -+ boost::serialization::base_object<Value>(*this)); -+ ar & BOOST_SERIALIZATION_NVP(yaw_); -+ ar & BOOST_SERIALIZATION_NVP(pitch_); -+ ar & BOOST_SERIALIZATION_NVP(parallax_); -+ } -+ -+ /// @} -+ -+ }; -+ -+} ---- gtsam/geometry/tests/testParallaxAnglePoint2.cpp 1970-01-01 01:00:00.000000000 +0100 -+++ gtsam/geometry/tests/testParallaxAnglePoint2.cpp 2015-05-06 14:27:39.561152730 +0200 -@@ -0,0 +1,220 @@ -+/* ---------------------------------------------------------------------------- -+ -+ * 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 testParallaxAnglePoint2.cpp -+ * @brief Unit tests for ParallaxAnglePoint2 class -+ * @author Ellon P. Mendes -+ **/ -+ -+#include <gtsam/geometry/ParallaxAnglePoint2.h> -+#include <gtsam/base/Testable.h> -+#include <gtsam/base/numericalDerivative.h> -+#include <gtsam/base/lieProxies.h> -+#include <CppUnitLite/TestHarness.h> -+ -+using namespace std; -+using namespace gtsam; -+ -+GTSAM_CONCEPT_TESTABLE_INST(ParallaxAnglePoint2) -+GTSAM_CONCEPT_MANIFOLD_INST(ParallaxAnglePoint2) -+ -+/* ************************************************************************* */ -+TEST(ParallaxAnglePoint2, constructor) { -+ ParallaxAnglePoint2 p1(1, 2), p2 = p1; -+ EXPECT(assert_equal(p1, p2)); -+} -+ -+/* ************************************************************************* */ -+// TEST(ParallaxAnglePoint2, Lie) { -+// Point2 p1(1, 2), p2(4, 5); -+// Matrix H1, H2; -+ -+// EXPECT(assert_equal(Point2(5,7), p1.compose(p2, H1, H2))); -+// EXPECT(assert_equal(eye(2), H1)); -+// EXPECT(assert_equal(eye(2), H2)); -+ -+// EXPECT(assert_equal(Point2(3,3), p1.between(p2, H1, H2))); -+// EXPECT(assert_equal(-eye(2), H1)); -+// EXPECT(assert_equal(eye(2), H2)); -+ -+// EXPECT(assert_equal(Point2(5,7), p1.retract((Vector(2) << 4., 5.)))); -+// EXPECT(assert_equal((Vector(2) << 3.,3.), p1.localCoordinates(p2))); -+// } -+ -+/* ************************************************************************* */ -+TEST( ParallaxAnglePoint2, expmap) { -+ Vector d(2); -+ d(0) = 1; -+ d(1) = -1; -+ ParallaxAnglePoint2 a(4, 5), b = a.retract(d), c(5, 4); -+ EXPECT(assert_equal(b,c)); -+} -+ -+/* ************************************************************************* */ -+TEST( ParallaxAnglePoint2, arithmetic) { -+ // EXPECT(assert_equal( ParallaxAnglePoint2(-5,-6), -ParallaxAnglePoint2(5,6) )); -+ EXPECT(assert_equal( ParallaxAnglePoint2(5,6), ParallaxAnglePoint2(4,5)+ParallaxAnglePoint2(1,1))); -+ EXPECT(assert_equal( ParallaxAnglePoint2(3,4), ParallaxAnglePoint2(4,5)-ParallaxAnglePoint2(1,1) )); -+ // EXPECT(assert_equal( ParallaxAnglePoint2(8,6), ParallaxAnglePoint2(4,3)*2)); -+ // EXPECT(assert_equal( ParallaxAnglePoint2(4,6), 2*ParallaxAnglePoint2(2,3))); -+ // EXPECT(assert_equal( ParallaxAnglePoint2(2,3), ParallaxAnglePoint2(4,6)/2)); -+} -+ -+// namespace { -+// /* ************************************************************************* */ -+// // some shared test values -+// ParallaxAnglePoint2 x1, x2(1, 1), x3(1, 1); -+// ParallaxAnglePoint2 l1(1, 0), l2(1, 1), l3(2, 2), l4(1, 3); -+ -+// /* ************************************************************************* */ -+// // LieVector norm_proxy(const ParallaxAnglePoint2& point) { -+// // return LieVector(point.norm()); -+// // } -+// } -+// TEST( ParallaxAnglePoint2, norm ) { -+// Point2 p0(cos(5.0), sin(5.0)); -+// DOUBLES_EQUAL(1, p0.norm(), 1e-6); -+// Point2 p1(4, 5), p2(1, 1); -+// DOUBLES_EQUAL( 5, p1.distance(p2), 1e-6); -+// DOUBLES_EQUAL( 5, (p2-p1).norm(), 1e-6); -+ -+// Matrix expectedH, actualH; -+// double actual; -+ -+// // exception, for (0,0) derivative is [Inf,Inf] but we return [1,1] -+// actual = x1.norm(actualH); -+// EXPECT_DOUBLES_EQUAL(0, actual, 1e-9); -+// expectedH = (Matrix(1, 2) << 1.0, 1.0); -+// EXPECT(assert_equal(expectedH,actualH)); -+ -+// actual = x2.norm(actualH); -+// EXPECT_DOUBLES_EQUAL(sqrt(2.0), actual, 1e-9); -+// expectedH = numericalDerivative11(norm_proxy, x2); -+// EXPECT(assert_equal(expectedH,actualH)); -+// } -+ -+/* ************************************************************************* */ -+// namespace { -+// LieVector distance_proxy(const Point2& location, const Point2& point) { -+// return LieVector(location.distance(point)); -+// } -+// } -+// TEST( Point2, distance ) { -+// Matrix expectedH1, actualH1, expectedH2, actualH2; -+ -+// // establish distance is indeed zero -+// EXPECT_DOUBLES_EQUAL(1, x1.distance(l1), 1e-9); -+ -+// // establish distance is indeed 45 degrees -+// EXPECT_DOUBLES_EQUAL(sqrt(2.0), x1.distance(l2), 1e-9); -+ -+// // Another pair -+// double actual23 = x2.distance(l3, actualH1, actualH2); -+// EXPECT_DOUBLES_EQUAL(sqrt(2.0), actual23, 1e-9); -+ -+// // Check numerical derivatives -+// expectedH1 = numericalDerivative21(distance_proxy, x2, l3); -+// expectedH2 = numericalDerivative22(distance_proxy, x2, l3); -+// EXPECT(assert_equal(expectedH1,actualH1)); -+// EXPECT(assert_equal(expectedH2,actualH2)); -+ -+// // Another test -+// double actual34 = x3.distance(l4, actualH1, actualH2); -+// EXPECT_DOUBLES_EQUAL(2, actual34, 1e-9); -+ -+// // Check numerical derivatives -+// expectedH1 = numericalDerivative21(distance_proxy, x3, l4); -+// expectedH2 = numericalDerivative22(distance_proxy, x3, l4); -+// EXPECT(assert_equal(expectedH1,actualH1)); -+// EXPECT(assert_equal(expectedH2,actualH2)); -+// } -+ -+/* ************************************************************************* */ -+// TEST( Point2, circleCircleIntersection) { -+ -+// double offset = 0.994987; -+// // Test intersections of circle moving from inside to outside -+ -+// list<Point2> inside = Point2::CircleCircleIntersection(Point2(0,0),5,Point2(0,0),1); -+// EXPECT_LONGS_EQUAL(0,inside.size()); -+ -+// list<Point2> touching1 = Point2::CircleCircleIntersection(Point2(0,0),5,Point2(4,0),1); -+// EXPECT_LONGS_EQUAL(1,touching1.size()); -+// EXPECT(assert_equal(Point2(5,0), touching1.front())); -+ -+// list<Point2> common = Point2::CircleCircleIntersection(Point2(0,0),5,Point2(5,0),1); -+// EXPECT_LONGS_EQUAL(2,common.size()); -+// EXPECT(assert_equal(Point2(4.9, offset), common.front(), 1e-6)); -+// EXPECT(assert_equal(Point2(4.9, -offset), common.back(), 1e-6)); -+ -+// list<Point2> touching2 = Point2::CircleCircleIntersection(Point2(0,0),5,Point2(6,0),1); -+// EXPECT_LONGS_EQUAL(1,touching2.size()); -+// EXPECT(assert_equal(Point2(5,0), touching2.front())); -+ -+// // test rotated case -+// list<Point2> rotated = Point2::CircleCircleIntersection(Point2(0,0),5,Point2(0,5),1); -+// EXPECT_LONGS_EQUAL(2,rotated.size()); -+// EXPECT(assert_equal(Point2(-offset, 4.9), rotated.front(), 1e-6)); -+// EXPECT(assert_equal(Point2( offset, 4.9), rotated.back(), 1e-6)); -+ -+// // test r1<r2 -+// list<Point2> smaller = Point2::CircleCircleIntersection(Point2(0,0),1,Point2(5,0),5); -+// EXPECT_LONGS_EQUAL(2,smaller.size()); -+// EXPECT(assert_equal(Point2(0.1, offset), smaller.front(), 1e-6)); -+// EXPECT(assert_equal(Point2(0.1, -offset), smaller.back(), 1e-6)); -+ -+// // test offset case, r1>r2 -+// list<Point2> offset1 = Point2::CircleCircleIntersection(Point2(1,1),5,Point2(6,1),1); -+// EXPECT_LONGS_EQUAL(2,offset1.size()); -+// EXPECT(assert_equal(Point2(5.9, 1+offset), offset1.front(), 1e-6)); -+// EXPECT(assert_equal(Point2(5.9, 1-offset), offset1.back(), 1e-6)); -+ -+// // test offset case, r1<r2 -+// list<Point2> offset2 = Point2::CircleCircleIntersection(Point2(6,1),1,Point2(1,1),5); -+// EXPECT_LONGS_EQUAL(2,offset2.size()); -+// EXPECT(assert_equal(Point2(5.9, 1-offset), offset2.front(), 1e-6)); -+// EXPECT(assert_equal(Point2(5.9, 1+offset), offset2.back(), 1e-6)); -+ -+// } -+ -+/* ************************************************************************* */ -+TEST( ParallaxAnglePoint2, stream) { -+ ParallaxAnglePoint2 p(1, 2); -+ std::ostringstream os; -+ os << p; -+ EXPECT(os.str() == "(1, 2)"); -+} -+ -+/* ************************************************************************* */ -+TEST( ParallaxAnglePoint2, directionVector) { -+ // Vector From Main -+ ParallaxAnglePoint2 p(M_PI/6, M_PI/3); -+ Vector ExpectedDirectionVector = (Vector(3) << 0.433012701892219,0.25,0.866025403784439); -+ -+ CHECK(assert_equal(ExpectedDirectionVector, p.directionVector(), 1e-6)); -+ -+ // Vector From Main with Jacobian -+ Matrix H(3,2), ExpectedH(3,2); -+ ExpectedH << -0.25 , -0.75 , -+ 0.433012701892219, -0.433012701892219, -+ 0 , 0.5; -+ CHECK(assert_equal(ExpectedDirectionVector, p.directionVector(H), 1e-6)); -+ EXPECT(assert_equal(ExpectedH, H, 1e-6)); -+} -+ -+/* ************************************************************************* */ -+int main () { -+ TestResult tr; -+ return TestRegistry::runAllTests(tr); -+} -+/* ************************************************************************* */ -+ ---- gtsam/geometry/tests/testParallaxAnglePoint3.cpp 1970-01-01 01:00:00.000000000 +0100 -+++ gtsam/geometry/tests/testParallaxAnglePoint3.cpp 2015-05-06 15:12:50.554157465 +0200 -@@ -0,0 +1,274 @@ -+/* ---------------------------------------------------------------------------- -+ -+ * 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 testParallaxAnglePoint3.cpp -+ * @brief Unit tests for ParallaxAnglePoint3 class -+ * @author Ellon P. Mendes -+ **/ -+ -+#include <gtsam/geometry/ParallaxAnglePoint3.h> -+#include <gtsam/base/Testable.h> -+#include <gtsam/base/numericalDerivative.h> -+#include <gtsam/base/lieProxies.h> -+#include <CppUnitLite/TestHarness.h> -+ -+using namespace std; -+using namespace gtsam; -+ -+GTSAM_CONCEPT_TESTABLE_INST(ParallaxAnglePoint3) -+GTSAM_CONCEPT_MANIFOLD_INST(ParallaxAnglePoint3) -+ -+/* ************************************************************************* */ -+TEST(ParallaxAnglePoint3, constructor) { -+ ParallaxAnglePoint3 p1(1, 2, 3), p2 = p1; -+ EXPECT(assert_equal(p1, p2)); -+} -+ -+/* ************************************************************************* */ -+// TEST(ParallaxAnglePoint2, Lie) { -+// Point2 p1(1, 2), p2(4, 5); -+// Matrix H1, H2; -+ -+// EXPECT(assert_equal(Point2(5,7), p1.compose(p2, H1, H2))); -+// EXPECT(assert_equal(eye(2), H1)); -+// EXPECT(assert_equal(eye(2), H2)); -+ -+// EXPECT(assert_equal(Point2(3,3), p1.between(p2, H1, H2))); -+// EXPECT(assert_equal(-eye(2), H1)); -+// EXPECT(assert_equal(eye(2), H2)); -+ -+// EXPECT(assert_equal(Point2(5,7), p1.retract((Vector(2) << 4., 5.)))); -+// EXPECT(assert_equal((Vector(2) << 3.,3.), p1.localCoordinates(p2))); -+// } -+ -+/* ************************************************************************* */ -+TEST( ParallaxAnglePoint3, expmap) { -+ Vector d(3); -+ d(0) = 1.; -+ d(1) = -1.; -+ d(2) = 2.; -+ ParallaxAnglePoint3 a(4., 5., 6.), b = a.retract(d), c(5., 4., 8.); -+ EXPECT(assert_equal(c,b)); -+ EXPECT(assert_equal(d,a.localCoordinates(c))); -+} -+ -+/* ************************************************************************* */ -+TEST( ParallaxAnglePoint3, arithmetic) { -+ // EXPECT(assert_equal( ParallaxAnglePoint2(-5,-6), -ParallaxAnglePoint2(5,6) )); -+ EXPECT(assert_equal( ParallaxAnglePoint3(5,6,7), ParallaxAnglePoint3(4,5,6)+ParallaxAnglePoint3(1,1,1))); -+ EXPECT(assert_equal( ParallaxAnglePoint3(3,4,5), ParallaxAnglePoint3(4,5,6)-ParallaxAnglePoint3(1,1,1))); -+ // EXPECT(assert_equal( ParallaxAnglePoint2(8,6), ParallaxAnglePoint2(4,3)*2)); -+ // EXPECT(assert_equal( ParallaxAnglePoint2(4,6), 2*ParallaxAnglePoint2(2,3))); -+ // EXPECT(assert_equal( ParallaxAnglePoint2(2,3), ParallaxAnglePoint2(4,6)/2)); -+} -+ -+// namespace { -+// /* ************************************************************************* */ -+// // some shared test values -+// ParallaxAnglePoint2 x1, x2(1, 1), x3(1, 1); -+// ParallaxAnglePoint2 l1(1, 0), l2(1, 1), l3(2, 2), l4(1, 3); -+ -+// /* ************************************************************************* */ -+// // LieVector norm_proxy(const ParallaxAnglePoint2& point) { -+// // return LieVector(point.norm()); -+// // } -+// } -+// TEST( ParallaxAnglePoint2, norm ) { -+// Point2 p0(cos(5.0), sin(5.0)); -+// DOUBLES_EQUAL(1, p0.norm(), 1e-6); -+// Point2 p1(4, 5), p2(1, 1); -+// DOUBLES_EQUAL( 5, p1.distance(p2), 1e-6); -+// DOUBLES_EQUAL( 5, (p2-p1).norm(), 1e-6); -+ -+// Matrix expectedH, actualH; -+// double actual; -+ -+// // exception, for (0,0) derivative is [Inf,Inf] but we return [1,1] -+// actual = x1.norm(actualH); -+// EXPECT_DOUBLES_EQUAL(0, actual, 1e-9); -+// expectedH = (Matrix(1, 2) << 1.0, 1.0); -+// EXPECT(assert_equal(expectedH,actualH)); -+ -+// actual = x2.norm(actualH); -+// EXPECT_DOUBLES_EQUAL(sqrt(2.0), actual, 1e-9); -+// expectedH = numericalDerivative11(norm_proxy, x2); -+// EXPECT(assert_equal(expectedH,actualH)); -+// } -+ -+/* ************************************************************************* */ -+// namespace { -+// LieVector distance_proxy(const Point2& location, const Point2& point) { -+// return LieVector(location.distance(point)); -+// } -+// } -+// TEST( Point2, distance ) { -+// Matrix expectedH1, actualH1, expectedH2, actualH2; -+ -+// // establish distance is indeed zero -+// EXPECT_DOUBLES_EQUAL(1, x1.distance(l1), 1e-9); -+ -+// // establish distance is indeed 45 degrees -+// EXPECT_DOUBLES_EQUAL(sqrt(2.0), x1.distance(l2), 1e-9); -+ -+// // Another pair -+// double actual23 = x2.distance(l3, actualH1, actualH2); -+// EXPECT_DOUBLES_EQUAL(sqrt(2.0), actual23, 1e-9); -+ -+// // Check numerical derivatives -+// expectedH1 = numericalDerivative21(distance_proxy, x2, l3); -+// expectedH2 = numericalDerivative22(distance_proxy, x2, l3); -+// EXPECT(assert_equal(expectedH1,actualH1)); -+// EXPECT(assert_equal(expectedH2,actualH2)); -+ -+// // Another test -+// double actual34 = x3.distance(l4, actualH1, actualH2); -+// EXPECT_DOUBLES_EQUAL(2, actual34, 1e-9); -+ -+// // Check numerical derivatives -+// expectedH1 = numericalDerivative21(distance_proxy, x3, l4); -+// expectedH2 = numericalDerivative22(distance_proxy, x3, l4); -+// EXPECT(assert_equal(expectedH1,actualH1)); -+// EXPECT(assert_equal(expectedH2,actualH2)); -+// } -+ -+/* ************************************************************************* */ -+// TEST( Point2, circleCircleIntersection) { -+ -+// double offset = 0.994987; -+// // Test intersections of circle moving from inside to outside -+ -+// list<Point2> inside = Point2::CircleCircleIntersection(Point2(0,0),5,Point2(0,0),1); -+// EXPECT_LONGS_EQUAL(0,inside.size()); -+ -+// list<Point2> touching1 = Point2::CircleCircleIntersection(Point2(0,0),5,Point2(4,0),1); -+// EXPECT_LONGS_EQUAL(1,touching1.size()); -+// EXPECT(assert_equal(Point2(5,0), touching1.front())); -+ -+// list<Point2> common = Point2::CircleCircleIntersection(Point2(0,0),5,Point2(5,0),1); -+// EXPECT_LONGS_EQUAL(2,common.size()); -+// EXPECT(assert_equal(Point2(4.9, offset), common.front(), 1e-6)); -+// EXPECT(assert_equal(Point2(4.9, -offset), common.back(), 1e-6)); -+ -+// list<Point2> touching2 = Point2::CircleCircleIntersection(Point2(0,0),5,Point2(6,0),1); -+// EXPECT_LONGS_EQUAL(1,touching2.size()); -+// EXPECT(assert_equal(Point2(5,0), touching2.front())); -+ -+// // test rotated case -+// list<Point2> rotated = Point2::CircleCircleIntersection(Point2(0,0),5,Point2(0,5),1); -+// EXPECT_LONGS_EQUAL(2,rotated.size()); -+// EXPECT(assert_equal(Point2(-offset, 4.9), rotated.front(), 1e-6)); -+// EXPECT(assert_equal(Point2( offset, 4.9), rotated.back(), 1e-6)); -+ -+// // test r1<r2 -+// list<Point2> smaller = Point2::CircleCircleIntersection(Point2(0,0),1,Point2(5,0),5); -+// EXPECT_LONGS_EQUAL(2,smaller.size()); -+// EXPECT(assert_equal(Point2(0.1, offset), smaller.front(), 1e-6)); -+// EXPECT(assert_equal(Point2(0.1, -offset), smaller.back(), 1e-6)); -+ -+// // test offset case, r1>r2 -+// list<Point2> offset1 = Point2::CircleCircleIntersection(Point2(1,1),5,Point2(6,1),1); -+// EXPECT_LONGS_EQUAL(2,offset1.size()); -+// EXPECT(assert_equal(Point2(5.9, 1+offset), offset1.front(), 1e-6)); -+// EXPECT(assert_equal(Point2(5.9, 1-offset), offset1.back(), 1e-6)); -+ -+// // test offset case, r1<r2 -+// list<Point2> offset2 = Point2::CircleCircleIntersection(Point2(6,1),1,Point2(1,1),5); -+// EXPECT_LONGS_EQUAL(2,offset2.size()); -+// EXPECT(assert_equal(Point2(5.9, 1-offset), offset2.front(), 1e-6)); -+// EXPECT(assert_equal(Point2(5.9, 1+offset), offset2.back(), 1e-6)); -+ -+// } -+ -+/* ************************************************************************* */ -+TEST( ParallaxAnglePoint3, stream) { -+ ParallaxAnglePoint3 p(1, 2, 3); -+ std::ostringstream os; -+ os << p; -+ EXPECT(os.str() == "(1, 2, 3)"); -+} -+ -+/* ************************************************************************* */ -+TEST( ParallaxAnglePoint3, directionVector) { -+ Point3 mainAnchor(0, -3, 0); -+ Point3 assoAnchor(0, -5, 5); -+ Point3 otheAnchor(7, 0, 0); -+ ParallaxAnglePoint3 p(M_PI/2, 0, M_PI/4); -+ -+ Vector ExpectedVecFromMain = (Vector3() << 0, 1, 0); -+ Vector ExpectedVecFromOthe = (Vector3() << -4.949747468305833, 0, 0); -+ Vector ExpectedVecFromAsso = (Vector3() << 0, 3.535533905932738, -3.535533905932738); -+ -+ // Jacobian matrix evaluated with the values above (check ParallaxPointJacobianTest.m) -+ Matrix3 EXPECTED_DIRECVECFROMOTHER_tm = (Matrix3() << 0.707106781186548, 0, 0, -+ 0, -0.000000000000000, -0.707106781186548, -+ 0, 0, 0.707106781186548); -+ -+ Matrix3 EXPECTED_DIRECVECFROMOTHER_ta = (Matrix3() << 0, 0, 0, -+ 0, 0.707106781186548, 0.707106781186548, -+ 0, 0, 0); -+ -+ Matrix3 EXPECTED_DIRECVECFROMOTHER_to = (Matrix3() << -0.707106781186548, 0, 0, -+ 0, -0.707106781186548, 0, -+ 0, 0, -0.707106781186548); -+ -+ Matrix3 EXPECTED_DIRECVECFROMOTHER_point = (Matrix3() << -2.121320343559642, 0, -4.949747468305833, -+ 0, 4.949747468305833, -7.071067811865476, -+ 0, 2.121320343559642, 0); -+ -+ Matrix3 EXPECTED_DIRECVECFROMASSO_tm = (Matrix3() << 0.707106781186548, 0, 0, -+ 0, -0.000000000000000, -0.707106781186548, -+ 0, 0, 0.707106781186548); -+ -+ Matrix3 EXPECTED_DIRECVECFROMASSO_ta = (Matrix3() << -0.707106781186548, 0, 0, -+ 0, 0.000000000000000, 0.707106781186548, -+ 0, 0, -0.707106781186548); -+ -+ Matrix3 EXPECTED_DIRECVECFROMASSO_point = (Matrix3() << -2.121320343559642, 0, 0, -+ 0, 4.949747468305833, -3.535533905932738, -+ 0, 2.121320343559642, -3.535533905932738); -+ -+ Matrix3 EXPECTED_DIRECVECFROMMAIN_point = (Matrix3() << -1, 0, 0, -+ 0, 0, 0, -+ 0, 1, 0); -+ -+ Matrix H_point, H_main, H_asso, H_other; -+ CHECK(assert_equal(ExpectedVecFromMain, p.directionVectorFromMainAnchor(), 1e-6)); -+ CHECK(assert_equal(ExpectedVecFromMain, p.directionVectorFromMainAnchor(H_point), 1e-6)); -+ EXPECT(assert_equal(EXPECTED_DIRECVECFROMMAIN_point, H_point, 1e-6)); -+ -+ H_point = zeros(3,3); -+ CHECK(assert_equal(ExpectedVecFromAsso, p.directionVectorFromAssoAnchor(mainAnchor, assoAnchor), 1e-6)); -+ CHECK(assert_equal(ExpectedVecFromAsso, p.directionVectorFromAssoAnchor(mainAnchor, assoAnchor, H_point, H_main, H_asso), 1e-6)); -+ EXPECT(assert_equal(EXPECTED_DIRECVECFROMASSO_point, H_point, 1e-6)); -+ EXPECT(assert_equal(EXPECTED_DIRECVECFROMASSO_tm, H_main, 1e-6)); -+ EXPECT(assert_equal(EXPECTED_DIRECVECFROMASSO_ta, H_asso, 1e-6)); -+ -+ -+ H_point = zeros(3,3); -+ H_main = zeros(3,3); -+ H_asso = zeros(3,3); -+ CHECK(assert_equal(ExpectedVecFromOthe, p.directionVectorFromOtheAnchor(mainAnchor, assoAnchor, otheAnchor), 1e-6)); -+ CHECK(assert_equal(ExpectedVecFromOthe, p.directionVectorFromOtheAnchor(mainAnchor, assoAnchor, otheAnchor, H_point, H_main, H_asso, H_other), 1e-6)); -+ EXPECT(assert_equal(EXPECTED_DIRECVECFROMOTHER_point, H_point, 1e-6)); -+ EXPECT(assert_equal(EXPECTED_DIRECVECFROMOTHER_tm, H_main, 1e-6)); -+ EXPECT(assert_equal(EXPECTED_DIRECVECFROMOTHER_ta, H_asso, 1e-6)); -+ EXPECT(assert_equal(EXPECTED_DIRECVECFROMOTHER_to, H_other, 1e-6)); -+ -+} -+ -+/* ************************************************************************* */ -+int main () { -+ TestResult tr; -+ return TestRegistry::runAllTests(tr); -+} -+/* ************************************************************************* */ -+ ---- gtsam/slam/ParallaxAngleProjectionFactor.h 1970-01-01 01:00:00.000000000 +0100 -+++ gtsam/slam/ParallaxAngleProjectionFactor.h 2015-05-05 22:30:18.017247984 +0200 -@@ -0,0 +1,876 @@ -+/* ---------------------------------------------------------------------------- -+ -+ * GTSAM Copyright 2010, Georgia Tech Research Corporation, -+ * Atlanta, Georgia 30332-0415 -+ * All Rights Reserved -+ * GTSAM Authors: Frank Dellaert, et al. (see THANKS for the full author list) -+ * Parallax Angle Projection Factor by Ellon P. Mendes -+ -+ * See LICENSE for the license information -+ -+ * -------------------------------------------------------------------------- */ -+ -+/** -+ * @file ParallaxAngleProjectionFactor.h -+ * @brief Parallax Angle projection factors -+ * @author Ellon P. Mendes -+ */ -+ -+#pragma once -+ -+#include <gtsam/nonlinear/NonlinearFactor.h> -+#include <gtsam/geometry/SimpleCamera.h> -+#include <boost/optional.hpp> -+ -+#include <gtsam/geometry/Point3.h> -+#include <gtsam/geometry/Pose3.h> -+#include <gtsam/geometry/ParallaxAnglePoint2.h> -+#include <gtsam/geometry/ParallaxAnglePoint3.h> -+ -+namespace gtsam { -+ -+ /** Non-linear factor for a 2D measurement to a Parallax Angle Point with only one anchor. -+ * -+ * Non-linear factor for a constraint derived from a 2D measurement bewteen a robot pose and a -+ * landmark parametrized as Parallax Angle Point with no depth (a.k.a ParallaxAnglePoint2). The -+ * measurement was taken from the anchor, and the calibration is known here. -+ * -+ * @addtogroup SLAM -+ */ -+ template<class POSE, class LANDMARK, class CALIBRATION = Cal3_S2> -+ class ParallaxAngleSingleAnchorProjectionFactor: public NoiseModelFactor2<POSE, LANDMARK> -+ { -+ protected: -+ -+ // Keep a copy of measurement and calibration for I/O -+ Point2 measured_; ///< 2D measurement -+ boost::shared_ptr<CALIBRATION> K_; ///< shared pointer to calibration object -+ boost::optional<POSE> body_P_sensor_; ///< The pose of the sensor in the body frame -+ -+ // verbosity handling for Cheirality Exceptions -+ bool throwCheirality_; ///< If true, rethrows Cheirality exceptions (default: false) -+ bool verboseCheirality_; ///< If true, prints text for Cheirality exceptions (default: false) -+ -+ public: -+ -+ /// shorthand for base class type -+ typedef NoiseModelFactor2<POSE, LANDMARK> Base; -+ -+ /// shorthand for this class -+ typedef ParallaxAngleSingleAnchorProjectionFactor<POSE, LANDMARK, CALIBRATION> This; -+ -+ /// shorthand for a smart pointer to a factor -+ typedef boost::shared_ptr<This> shared_ptr; -+ -+ /// Default constructor -+ ParallaxAngleSingleAnchorProjectionFactor() : throwCheirality_(false), verboseCheirality_(false) {} -+ -+ /** -+ * Constructor -+ * TODO: Mark argument order standard (keys, measurement, parameters) -+ * @param measured is the 2 dimensional location of point in image (the measurement) -+ * @param model is the standard deviation -+ * @param mainAnchorKey is the index of main anchor -+ * @param pointKey is the index of the landmark -+ * @param K shared pointer to the constant calibration -+ * @param body_P_sensor is the transform from body to sensor frame (default identity) -+ */ -+ ParallaxAngleSingleAnchorProjectionFactor(const Point2& measured, const SharedNoiseModel& model, -+ Key mainAnchorKey, Key pointKey, const boost::shared_ptr<CALIBRATION>& K, -+ boost::optional<POSE> body_P_sensor = boost::none) : -+ Base(model, mainAnchorKey, pointKey), measured_(measured), K_(K), body_P_sensor_(body_P_sensor), -+ throwCheirality_(false), verboseCheirality_(false) {} -+ -+ /** -+ * Constructor with exception-handling flags -+ * TODO: Mark argument order standard (keys, measurement, parameters) -+ * @param measured is the 2 dimensional location of point in image (the measurement) -+ * @param model is the standard deviation -+ * @param mainAnchorKey is the index of main anchor -+ * @param pointKey is the index of the landmark -+ * @param K shared pointer to the constant calibration -+ * @param throwCheirality determines whether Cheirality exceptions are rethrown -+ * @param verboseCheirality determines whether exceptions are printed for Cheirality -+ * @param body_P_sensor is the transform from body to sensor frame (default identity) -+ */ -+ ParallaxAngleSingleAnchorProjectionFactor(const Point2& measured, const SharedNoiseModel& model, -+ Key mainAnchorKey, Key pointKey, const boost::shared_ptr<CALIBRATION>& K, -+ bool throwCheirality, bool verboseCheirality, -+ boost::optional<POSE> body_P_sensor = boost::none) : -+ Base(model, mainAnchorKey, pointKey), measured_(measured), K_(K), body_P_sensor_(body_P_sensor), -+ throwCheirality_(throwCheirality), verboseCheirality_(verboseCheirality) {} -+ -+ /** Virtual destructor */ -+ virtual ~ParallaxAngleSingleAnchorProjectionFactor() {} -+ -+ /// @return a deep copy of this factor -+ virtual gtsam::NonlinearFactor::shared_ptr clone() const { -+ return boost::static_pointer_cast<gtsam::NonlinearFactor>( -+ gtsam::NonlinearFactor::shared_ptr(new This(*this))); } -+ -+ /** -+ * print -+ * @param s optional string naming the factor -+ * @param keyFormatter optional formatter useful for printing Symbols -+ */ -+ void print(const std::string& s = "", const KeyFormatter& keyFormatter = DefaultKeyFormatter) const { -+ std::cout << s << "ParallaxAngleSingleAnchorProjectionFactor, z = "; -+ measured_.print(); -+ if(this->body_P_sensor_) -+ this->body_P_sensor_->print(" sensor pose in body frame: "); -+ Base::print("", keyFormatter); -+ } -+ -+ /// equals -+ virtual bool equals(const NonlinearFactor& p, double tol = 1e-9) const { -+ const This *e = dynamic_cast<const This*>(&p); -+ return e -+ && Base::equals(p, tol) -+ && this->measured_.equals(e->measured_, tol) -+ && this->K_->equals(*e->K_, tol) -+ && ((!body_P_sensor_ && !e->body_P_sensor_) || (body_P_sensor_ && e->body_P_sensor_ && body_P_sensor_->equals(*e->body_P_sensor_))); -+ } -+ -+ /// Evaluate error h(x)-z and optionally derivatives -+ Vector evaluateError(const Pose3& mainPose, const ParallaxAnglePoint2& point, -+ boost::optional<Matrix&> Dmain = boost::none, -+ boost::optional<Matrix&> Dpoint = boost::none) const { -+ try { -+ // Test if we need jacobians -+ if (!Dmain && !Dpoint) -+ { -+ if(body_P_sensor_) -+ { -+ // Get the main and associated anchors, and the camera pose -+ Pose3 mainAnchorPose ( mainPose.compose(*body_P_sensor_) ); -+ -+ // Get the direction to the point from observation point -+ Point3 obs_T_point( point.directionVector() ); -+ -+ // Put a camera at the origin -+ PinholeCamera<CALIBRATION> camera(Pose3(mainAnchorPose.rotation(), Point3()), *K_); -+ -+ // Project direction vector to camera and calculate the error -+ Point2 reprojectionError(camera.project(obs_T_point) - measured_); -+ return reprojectionError.vector(); -+ } -+ else -+ { -+ // Get the direction to the point from observation point -+ Point3 obs_T_point( point.directionVector() ); -+ -+ // Put a camera at the origin -+ PinholeCamera<CALIBRATION> camera(Pose3(mainPose.rotation(), Point3()), *K_); -+ -+ // Project direction vector to camera and calculate the error -+ Point2 reprojectionError(camera.project(obs_T_point) - measured_); -+ return reprojectionError.vector(); -+ } -+ } -+ -+ // Same computation but with jacobians -+ if(body_P_sensor_) -+ { -+ // Get the main and associated anchors, and the camera pose -+ gtsam::Matrix MAINANCHORPOSE_mainpose; -+ Pose3 mainAnchorPose ( mainPose.compose(*body_P_sensor_, MAINANCHORPOSE_mainpose) ); -+ -+ // Get the direction to the point from observation point -+ Matrix OBS_T_POINT_point; -+ Point3 obs_T_point(point.directionVector( OBS_T_POINT_point )); -+ -+ // Put a camera at the origin -+ PinholeCamera<CALIBRATION> camera(Pose3(mainAnchorPose.rotation(), Point3()), *K_); -+ -+ // Project direction vector to camera and calculate the error -+ Matrix PROJ_mainanchorori, PROJ_obs_t_point; -+ Point2 reprojectionError(camera.project(obs_T_point, PROJ_mainanchorori, PROJ_obs_t_point) - measured_); -+ -+ // Chain of jacobians -+ if(Dmain) -+ { -+ Matrix PROJ_mainanchorpose(2,6); -+ PROJ_mainanchorpose << PROJ_mainanchorori.block(0,0,2,3), zeros(2,3); -+ Dmain->resize(2,6); -+ *Dmain << (PROJ_mainanchorpose * MAINANCHORPOSE_mainpose); -+ } -+ if(Dpoint) -+ { -+ Dpoint->resize(2,2); -+ *Dpoint << (PROJ_obs_t_point * OBS_T_POINT_point); -+ } -+ -+ return reprojectionError.vector(); -+ -+ } -+ else -+ { -+ // Get the direction to the point from observation point -+ Matrix OBS_T_POINT_point; -+ Point3 obs_T_point(point.directionVector( OBS_T_POINT_point )); -+ -+ // Put a camera at the origin -+ PinholeCamera<CALIBRATION> camera(Pose3(mainPose.rotation(), Point3()), *K_); -+ -+ // Project direction vector to camera and calculate the error -+ Matrix PROJ_mainori, PROJ_obs_t_point; -+ Point2 reprojectionError(camera.project(obs_T_point, PROJ_mainori, PROJ_obs_t_point) - measured_); -+ -+ // Chain of jacobians -+ if(Dmain) -+ { -+ Dmain->resize(2,6); -+ *Dmain << PROJ_mainori.block(0,0,2,3), zeros(2,3); -+ } -+ if(Dpoint) -+ { -+ Dpoint->resize(2,2); -+ *Dpoint << (PROJ_obs_t_point * OBS_T_POINT_point); -+ } -+ -+ return reprojectionError.vector(); -+ } -+ } catch( CheiralityException& e) -+ { -+ if (Dmain ) *Dmain = zeros(2,6); -+ if (Dpoint) *Dpoint = zeros(2,2); -+ if (verboseCheirality_) -+ std::cout << e.what() << ": Landmark "<< DefaultKeyFormatter(this->key2()) << -+ " with single anchor (" << DefaultKeyFormatter(this->key1()) << ")" << -+ " moved behind camera " << std::endl; -+ if (throwCheirality_) -+ throw e; -+ } -+ return ones(2) * 2.0 * K_->fx(); -+ } -+ -+ /** return the measurement */ -+ const Point2& measured() const { -+ return measured_; -+ } -+ -+ /** return the calibration object */ -+ inline const boost::shared_ptr<CALIBRATION> calibration() const { -+ return K_; -+ } -+ -+ /** return verbosity */ -+ inline bool verboseCheirality() const { return verboseCheirality_; } -+ -+ /** return flag for throwing cheirality exceptions */ -+ inline bool throwCheirality() const { return throwCheirality_; } -+ -+ private: -+ -+ /// Serialization function -+ friend class boost::serialization::access; -+ template<class ARCHIVE> -+ void serialize(ARCHIVE & ar, const unsigned int version) { -+ ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Base); -+ ar & BOOST_SERIALIZATION_NVP(measured_); -+ ar & BOOST_SERIALIZATION_NVP(K_); -+ ar & BOOST_SERIALIZATION_NVP(body_P_sensor_); -+ ar & BOOST_SERIALIZATION_NVP(throwCheirality_); -+ ar & BOOST_SERIALIZATION_NVP(verboseCheirality_); -+ } -+ }; -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ /** Non-linear factor for a 2D measurement to a Parallax Angle Point with only the anchors. -+ * -+ * Non-linear factor for a constraint derived from a 2D measurement bewteen a robot pose and a -+ * landmark parametrized as 3D Parallax Angle Point (a.k.a ParallaxAnglePoint3). The measurement -+ * was taken from the associated anchor, and the calibration is known here. -+ * -+ * @addtogroup SLAM -+ */ -+ template<class POSE, class LANDMARK, class CALIBRATION = Cal3_S2> -+ class ParallaxAngleOnlyAnchorsProjectionFactor: public NoiseModelFactor3<POSE, POSE, LANDMARK> { -+ protected: -+ -+ // Keep a copy of measurement and calibration for I/O -+ Point2 measured_; ///< 2D measurement -+ boost::shared_ptr<CALIBRATION> K_; ///< shared pointer to calibration object -+ boost::optional<POSE> body_P_sensor_; ///< The pose of the sensor in the body frame -+ -+ // verbosity handling for Cheirality Exceptions -+ bool throwCheirality_; ///< If true, rethrows Cheirality exceptions (default: false) -+ bool verboseCheirality_; ///< If true, prints text for Cheirality exceptions (default: false) -+ -+ public: -+ -+ /// shorthand for base class type -+ typedef NoiseModelFactor3<POSE, POSE, LANDMARK> Base; -+ -+ /// shorthand for this class -+ typedef ParallaxAngleOnlyAnchorsProjectionFactor<POSE, LANDMARK, CALIBRATION> This; -+ -+ /// shorthand for a smart pointer to a factor -+ typedef boost::shared_ptr<This> shared_ptr; -+ -+ /// Default constructor -+ ParallaxAngleOnlyAnchorsProjectionFactor() : throwCheirality_(false), verboseCheirality_(false) {} -+ -+ /** -+ * Constructor -+ * TODO: Mark argument order standard (keys, measurement, parameters) -+ * @param measured is the 2 dimensional location of point in image (the measurement) -+ * @param model is the standard deviation -+ * @param mainAnchorKey is the index of the main anchor -+ * @param associatedAnchorKey is the index of the associated anchor -+ * @param pointKey is the index of the landmark -+ * @param K shared pointer to the constant calibration -+ * @param body_P_sensor is the transform from body to sensor frame (default identity) -+ */ -+ ParallaxAngleOnlyAnchorsProjectionFactor(const Point2& measured, const SharedNoiseModel& model, -+ Key mainAnchorKey, Key associatedAnchorKey, Key pointKey, -+ const boost::shared_ptr<CALIBRATION>& K, -+ boost::optional<POSE> body_P_sensor = boost::none) : -+ Base(model, mainAnchorKey, associatedAnchorKey, pointKey), -+ measured_(measured), K_(K), body_P_sensor_(body_P_sensor), -+ throwCheirality_(false), verboseCheirality_(false) {} -+ -+ /** -+ * Constructor with exception-handling flags -+ * TODO: Mark argument order standard (keys, measurement, parameters) -+ * @param measured is the 2 dimensional location of point in image (the measurement) -+ * @param model is the standard deviation -+ * @param mainAnchorKey is the index of the main anchor -+ * @param associatedAnchorKey is the index of the associated anchor -+ * @param pointKey is the index of the landmark -+ * @param K shared pointer to the constant calibration -+ * @param throwCheirality determines whether Cheirality exceptions are rethrown -+ * @param verboseCheirality determines whether exceptions are printed for Cheirality -+ * @param body_P_sensor is the transform from body to sensor frame (default identity) -+ */ -+ ParallaxAngleOnlyAnchorsProjectionFactor(const Point2& measured, const SharedNoiseModel& model, -+ Key mainAnchorKey, Key associatedAnchorKey, Key pointKey, -+ const boost::shared_ptr<CALIBRATION>& K, -+ bool throwCheirality, bool verboseCheirality, -+ boost::optional<POSE> body_P_sensor = boost::none) : -+ Base(model, mainAnchorKey, associatedAnchorKey, pointKey), -+ measured_(measured), K_(K), body_P_sensor_(body_P_sensor), -+ throwCheirality_(throwCheirality), verboseCheirality_(verboseCheirality) {} -+ -+ /** Virtual destructor */ -+ virtual ~ParallaxAngleOnlyAnchorsProjectionFactor() {} -+ -+ /// @return a deep copy of this factor -+ virtual gtsam::NonlinearFactor::shared_ptr clone() const { -+ return boost::static_pointer_cast<gtsam::NonlinearFactor>( -+ gtsam::NonlinearFactor::shared_ptr(new This(*this))); } -+ -+ /** -+ * print -+ * @param s optional string naming the factor -+ * @param keyFormatter optional formatter useful for printing Symbols -+ */ -+ void print(const std::string& s = "", const KeyFormatter& keyFormatter = DefaultKeyFormatter) const { -+ std::cout << s << "ParallaxAngleOnlyAnchorsProjectionFactor, z = "; -+ measured_.print(); -+ if(this->body_P_sensor_) -+ this->body_P_sensor_->print(" sensor pose in body frame: "); -+ Base::print("", keyFormatter); -+ } -+ -+ /// equals -+ virtual bool equals(const NonlinearFactor& p, double tol = 1e-9) const { -+ const This *e = dynamic_cast<const This*>(&p); -+ return e -+ && Base::equals(p, tol) -+ && this->measured_.equals(e->measured_, tol) -+ && this->K_->equals(*e->K_, tol) -+ && ((!body_P_sensor_ && !e->body_P_sensor_) || (body_P_sensor_ && e->body_P_sensor_ && body_P_sensor_->equals(*e->body_P_sensor_))); -+ } -+ -+ /// Evaluate error h(x)-z and optionally derivatives -+ Vector evaluateError(const Pose3& mainPose, const Pose3& assoPose, const ParallaxAnglePoint3& point, -+ boost::optional<Matrix&> Dmain = boost::none, -+ boost::optional<Matrix&> Dasso = boost::none, -+ boost::optional<Matrix&> Dpoint = boost::none) const { -+ try { -+ // Test if we need jacobians -+ if (!Dmain && !Dasso && !Dpoint) -+ { -+ if(body_P_sensor_) -+ { -+ // Get the main and associated anchors, and the camera pose -+ Point3 mainAnchor ( mainPose.compose(*body_P_sensor_).translation() ); -+ Pose3 assoAnchorPose ( assoPose.compose(*body_P_sensor_) ); -+ -+ // Get the direction to the point from observation point -+ Point3 obs_T_point(point.directionVectorFromAssoAnchor( mainAnchor, assoAnchorPose.translation() )); -+ -+ // Put a camera at the origin -+ PinholeCamera<CALIBRATION> camera(Pose3(assoAnchorPose.rotation(), Point3()), *K_); -+ -+ // Project direction vector to camera and calculate the error -+ Point2 reprojectionError(camera.project(obs_T_point) - measured_); -+ return reprojectionError.vector(); -+ } -+ else -+ { -+ // Get the direction to the point from observation point -+ Point3 obs_T_point(point.directionVectorFromAssoAnchor( mainPose.translation(), assoPose.translation() )); -+ -+ // Put a camera at the origin -+ PinholeCamera<CALIBRATION> camera(Pose3(assoPose.rotation(), Point3()), *K_); -+ -+ // Project direction vector to camera and calculate the error -+ Point2 reprojectionError(camera.project(obs_T_point) - measured_); -+ return reprojectionError.vector(); -+ } -+ } -+ -+ // Same computation but with jacobians -+ if(body_P_sensor_) -+ { -+ // Get the main and associated anchors, and the camera pose -+ gtsam::Matrix MAINANCHORPOSE_mainpose, ASSOANCHORPOSE_assopose; -+ Point3 mainAnchor ( mainPose.compose(*body_P_sensor_, MAINANCHORPOSE_mainpose).translation() ); -+ Pose3 assoAnchorPose ( assoPose.compose(*body_P_sensor_, ASSOANCHORPOSE_assopose) ); -+ -+ // Get the direction to the point from observation point -+ Matrix OBS_T_POINT_point, OBS_T_POINT_mainanchorpos, OBS_T_POINT_assoanchorpos; -+ Point3 obs_T_point(point.directionVectorFromAssoAnchor( mainAnchor, assoAnchorPose.translation(), -+ OBS_T_POINT_point, -+ OBS_T_POINT_mainanchorpos, -+ OBS_T_POINT_assoanchorpos)); -+ -+ // Put a camera at the origin -+ PinholeCamera<CALIBRATION> camera(Pose3(assoAnchorPose.rotation(), Point3()), *K_); -+ -+ // Project direction vector to camera and calculate the error -+ Matrix PROJ_assoanchorori, PROJ_obs_t_point; -+ Point2 reprojectionError(camera.project(obs_T_point, PROJ_assoanchorori, PROJ_obs_t_point) - measured_); -+ -+ // Chain of jacobians -+ if(Dmain) -+ { -+ Matrix PROJ_mainanchorpose = zeros(2,6); -+ PROJ_mainanchorpose.block(0,3,2,3) << (PROJ_obs_t_point * OBS_T_POINT_mainanchorpos); -+ Dmain->resize(2,6); -+ *Dmain << (PROJ_mainanchorpose * MAINANCHORPOSE_mainpose); -+ } -+ if(Dasso) -+ { -+ Matrix PROJ_assoanchorpose(2,6); -+ PROJ_assoanchorpose.block(0,0,2,3) << PROJ_assoanchorori.block(0,0,2,3); -+ PROJ_assoanchorpose.block(0,3,2,3) << (PROJ_obs_t_point * OBS_T_POINT_assoanchorpos); -+ Dasso->resize(2,6); -+ *Dasso << (PROJ_assoanchorpose * ASSOANCHORPOSE_assopose); -+ } -+ if(Dpoint) -+ { -+ Dpoint->resize(2,3); -+ *Dpoint << (PROJ_obs_t_point * OBS_T_POINT_point); -+ } -+ -+ return reprojectionError.vector(); -+ -+ } -+ else -+ { -+ // Get the direction to the point from observation point -+ Matrix OBS_T_POINT_point, OBS_T_POINT_mainpos, OBS_T_POINT_assopos; -+ Point3 obs_T_point(point.directionVectorFromAssoAnchor( mainPose.translation(), assoPose.translation(), -+ OBS_T_POINT_point, -+ OBS_T_POINT_mainpos, -+ OBS_T_POINT_assopos)); -+ -+ // Put a camera at the origin -+ PinholeCamera<CALIBRATION> camera(Pose3(assoPose.rotation(), Point3()), *K_); -+ -+ // Project direction vector to camera and calculate the error -+ Matrix PROJ_assoori, PROJ_obs_t_point; -+ Point2 reprojectionError(camera.project(obs_T_point, PROJ_assoori, PROJ_obs_t_point) - measured_); -+ -+ // Chain of jacobians -+ if(Dmain) -+ { -+ Dmain->resize(2,6); -+ *Dmain << zeros(2,3), (PROJ_obs_t_point * OBS_T_POINT_mainpos); -+ } -+ if(Dasso) -+ { -+ Dasso->resize(2,6); -+ *Dasso << PROJ_assoori.block(0,0,2,3), (PROJ_obs_t_point * OBS_T_POINT_assopos); -+ } -+ if(Dpoint) -+ { -+ Dpoint->resize(2,3); -+ *Dpoint << (PROJ_obs_t_point * OBS_T_POINT_point); -+ } -+ -+ return reprojectionError.vector(); -+ -+ } -+ } catch( CheiralityException& e) { -+ if (Dmain ) *Dmain = zeros(2,6); -+ if (Dasso ) *Dasso = zeros(2,6); -+ if (Dpoint) *Dpoint = zeros(2,3); -+ if (verboseCheirality_) -+ std::cout << e.what() << ": Landmark "<< DefaultKeyFormatter(this->key3()) << -+ " with anchors (" << DefaultKeyFormatter(this->key1()) << "," << DefaultKeyFormatter(this->key2()) << -+ " moved behind camera " << DefaultKeyFormatter(this->key2()) << std::endl; -+ if (throwCheirality_) -+ throw e; -+ } -+ return ones(2) * 2.0 * K_->fx(); -+ } -+ -+ /** return the measurement */ -+ const Point2& measured() const { -+ return measured_; -+ } -+ -+ /** return the calibration object */ -+ inline const boost::shared_ptr<CALIBRATION> calibration() const { -+ return K_; -+ } -+ -+ /** return verbosity */ -+ inline bool verboseCheirality() const { return verboseCheirality_; } -+ -+ /** return flag for throwing cheirality exceptions */ -+ inline bool throwCheirality() const { return throwCheirality_; } -+ -+ private: -+ -+ /// Serialization function -+ friend class boost::serialization::access; -+ template<class ARCHIVE> -+ void serialize(ARCHIVE & ar, const unsigned int version) { -+ ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Base); -+ ar & BOOST_SERIALIZATION_NVP(measured_); -+ ar & BOOST_SERIALIZATION_NVP(K_); -+ ar & BOOST_SERIALIZATION_NVP(body_P_sensor_); -+ ar & BOOST_SERIALIZATION_NVP(throwCheirality_); -+ ar & BOOST_SERIALIZATION_NVP(verboseCheirality_); -+ } -+ }; -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ /** Non-linear factor for a 2D measurement to a Parallax Angle Point. -+ * -+ * Non-linear factor for a constraint derived from a 2D measurement bewteen a robot pose and a -+ * landmark parametrized as Parallax Angle Point (a.k.a ParallaxAnglePoint3). The measurement -+ * comes from from a pose different from the anchors (known as 'other'), and the calibration -+ * is known here. -+ * -+ * @addtogroup SLAM -+ */ -+ template<class POSE, class LANDMARK, class CALIBRATION = Cal3_S2> -+ class ParallaxAngleProjectionFactor: public NoiseModelFactor4<POSE, POSE, POSE, LANDMARK> { -+ protected: -+ -+ // Keep a copy of measurement and calibration for I/O -+ Point2 measured_; ///< 2D measurement -+ boost::shared_ptr<CALIBRATION> K_; ///< shared pointer to calibration object -+ boost::optional<POSE> body_P_sensor_; ///< The pose of the sensor in the body frame -+ -+ // verbosity handling for Cheirality Exceptions -+ bool throwCheirality_; ///< If true, rethrows Cheirality exceptions (default: false) -+ bool verboseCheirality_; ///< If true, prints text for Cheirality exceptions (default: false) -+ -+ public: -+ -+ /// shorthand for base class type -+ typedef NoiseModelFactor4<POSE, POSE, POSE, LANDMARK> Base; -+ -+ /// shorthand for this class -+ typedef ParallaxAngleProjectionFactor<POSE, LANDMARK, CALIBRATION> This; -+ -+ /// shorthand for a smart pointer to a factor -+ typedef boost::shared_ptr<This> shared_ptr; -+ -+ /// Default constructor -+ ParallaxAngleProjectionFactor() : throwCheirality_(false), verboseCheirality_(false) {} -+ -+ /** -+ * Constructor -+ * TODO: Mark argument order standard (keys, measurement, parameters) -+ * @param measured is the 2 dimensional location of point in image (the measurement) -+ * @param model is the standard deviation -+ * @param mainAnchorKey is the index of the main anchor -+ * @param associatedAnchorKey is the index of the associated anchor -+ * @param otherAnchorKey is the index of the other anchor -+ * @param pointKey is the index of the landmark -+ * @param K shared pointer to the constant calibration -+ * @param body_P_sensor is the transform from body to sensor frame (default identity) -+ */ -+ ParallaxAngleProjectionFactor(const Point2& measured, const SharedNoiseModel& model, -+ Key mainAnchorKey, Key associatedAnchorKey, Key otherAnchorKey, Key pointKey, -+ const boost::shared_ptr<CALIBRATION>& K, -+ boost::optional<POSE> body_P_sensor = boost::none) : -+ Base(model, mainAnchorKey, associatedAnchorKey, otherAnchorKey, pointKey), -+ measured_(measured), K_(K), body_P_sensor_(body_P_sensor), -+ throwCheirality_(false), verboseCheirality_(false) {} -+ -+ /** -+ * Constructor with exception-handling flags -+ * TODO: Mark argument order standard (keys, measurement, parameters) -+ * @param measured is the 2 dimensional location of point in image (the measurement) -+ * @param model is the standard deviation -+ * @param mainAnchorKey is the index of the main anchor -+ * @param associatedAnchorKey is the index of the associated anchor -+ * @param otherAnchorKey is the index of the other anchor -+ * @param pointKey is the index of the landmark -+ * @param K shared pointer to the constant calibration -+ * @param throwCheirality determines whether Cheirality exceptions are rethrown -+ * @param verboseCheirality determines whether exceptions are printed for Cheirality -+ * @param body_P_sensor is the transform from body to sensor frame (default identity) -+ */ -+ ParallaxAngleProjectionFactor(const Point2& measured, const SharedNoiseModel& model, -+ Key mainAnchorKey, Key associatedAnchorKey, Key otherAnchorKey, Key pointKey, -+ const boost::shared_ptr<CALIBRATION>& K, -+ bool throwCheirality, bool verboseCheirality, -+ boost::optional<POSE> body_P_sensor = boost::none) : -+ Base(model, mainAnchorKey, associatedAnchorKey, otherAnchorKey, pointKey), -+ measured_(measured), K_(K), body_P_sensor_(body_P_sensor), -+ throwCheirality_(throwCheirality), verboseCheirality_(verboseCheirality) {} -+ -+ /** Virtual destructor */ -+ virtual ~ParallaxAngleProjectionFactor() {} -+ -+ /// @return a deep copy of this factor -+ virtual gtsam::NonlinearFactor::shared_ptr clone() const { -+ return boost::static_pointer_cast<gtsam::NonlinearFactor>( -+ gtsam::NonlinearFactor::shared_ptr(new This(*this))); } -+ -+ /** -+ * print -+ * @param s optional string naming the factor -+ * @param keyFormatter optional formatter useful for printing Symbols -+ */ -+ void print(const std::string& s = "", const KeyFormatter& keyFormatter = DefaultKeyFormatter) const { -+ std::cout << s << "ParallaxAngleProjectionFactor, z = "; -+ measured_.print(); -+ if(this->body_P_sensor_) -+ this->body_P_sensor_->print(" sensor pose in body frame: "); -+ Base::print("", keyFormatter); -+ } -+ -+ /// equals -+ virtual bool equals(const NonlinearFactor& p, double tol = 1e-9) const { -+ const This *e = dynamic_cast<const This*>(&p); -+ return e -+ && Base::equals(p, tol) -+ && this->measured_.equals(e->measured_, tol) -+ && this->K_->equals(*e->K_, tol) -+ && ((!body_P_sensor_ && !e->body_P_sensor_) || (body_P_sensor_ && e->body_P_sensor_ && body_P_sensor_->equals(*e->body_P_sensor_))); -+ } -+ -+ /// Evaluate error h(x)-z and optionally derivatives -+ Vector evaluateError(const Pose3& mainPose, const Pose3& assoPose, const Pose3& othePose, const ParallaxAnglePoint3& point, -+ boost::optional<Matrix&> Dmain = boost::none, -+ boost::optional<Matrix&> Dasso = boost::none, -+ boost::optional<Matrix&> Dothe = boost::none, -+ boost::optional<Matrix&> Dpoint = boost::none) const { -+ try { -+ // Test if we need jacobians -+ if (!Dmain && !Dasso && !Dothe && !Dpoint) -+ { -+ if(body_P_sensor_) -+ { -+ // Get the main and associated anchors, and the camera pose -+ Point3 mainAnchor( mainPose.compose(*body_P_sensor_).translation() ); -+ Point3 assoAnchor( assoPose.compose(*body_P_sensor_).translation() ); -+ Pose3 camPose ( othePose.compose(*body_P_sensor_) ); -+ -+ // Get the direction to the point from observation point -+ Point3 obs_T_point(point.directionVectorFromOtheAnchor( mainAnchor, assoAnchor, camPose.translation())); -+ -+ // Put a camera at the origin -+ PinholeCamera<CALIBRATION> camera(Pose3(camPose.rotation(), Point3()), *K_); -+ -+ // Project direction vector to camera and calculate the error -+ Point2 reprojectionError(camera.project(obs_T_point) - measured_); -+ return reprojectionError.vector(); -+ } -+ else -+ { -+ // Get the direction to the point from observation point -+ Point3 obs_T_point(point.directionVectorFromOtheAnchor( mainPose.translation(), assoPose.translation(), othePose.translation())); -+ -+ // Put a camera at the origin -+ PinholeCamera<CALIBRATION> camera(Pose3(othePose.rotation(), Point3()), *K_); -+ -+ // Project direction vector to camera and calculate the error -+ Point2 reprojectionError(camera.project(obs_T_point) - measured_); -+ return reprojectionError.vector(); -+ } -+ } -+ -+ // Same computation but with jacobians -+ if(body_P_sensor_) -+ { -+ // Get the main and associated anchors, and the camera pose -+ gtsam::Matrix MAINANCHORPOSE_mainpose, ASSOANCHORPOSE_assopose, CAMPOSE_othepose; -+ Point3 mainAnchor( mainPose.compose(*body_P_sensor_, MAINANCHORPOSE_mainpose).translation() ); -+ Point3 assoAnchor( assoPose.compose(*body_P_sensor_, ASSOANCHORPOSE_assopose).translation() ); -+ Pose3 camPose ( othePose.compose(*body_P_sensor_, CAMPOSE_othepose ) ); -+ -+ // Get the direction to the point from observation point -+ Matrix OBS_T_POINT_point, OBS_T_POINT_mainanchorpos, OBS_T_POINT_assoanchorpos, OBS_T_POINT_campos; -+ Point3 obs_T_point(point.directionVectorFromOtheAnchor( mainAnchor, assoAnchor, camPose.translation(), -+ OBS_T_POINT_point, -+ OBS_T_POINT_mainanchorpos, -+ OBS_T_POINT_assoanchorpos, -+ OBS_T_POINT_campos)); -+ -+ // Put a camera at the origin -+ PinholeCamera<CALIBRATION> camera(Pose3(camPose.rotation(), Point3()), *K_); -+ -+ // Project direction vector to camera and calculate the error -+ Matrix PROJ_camori, PROJ_obs_t_point; -+ Point2 reprojectionError(camera.project(obs_T_point, PROJ_camori, PROJ_obs_t_point) - measured_); -+ -+ // Chain of jacobians -+ if(Dmain) -+ { -+ Matrix PROJ_mainanchorpose = zeros(2,6); -+ PROJ_mainanchorpose.block(0,3,2,3) << (PROJ_obs_t_point * OBS_T_POINT_mainanchorpos); -+ Dmain->resize(2,6); -+ *Dmain << (PROJ_mainanchorpose * MAINANCHORPOSE_mainpose); -+ } -+ if(Dasso) -+ { -+ Matrix PROJ_assoanchorpose = zeros(2,6); -+ PROJ_assoanchorpose.block(0,3,2,3) << (PROJ_obs_t_point * OBS_T_POINT_assoanchorpos); -+ Dasso->resize(2,6); -+ *Dasso << (PROJ_assoanchorpose * ASSOANCHORPOSE_assopose); -+ } -+ if(Dothe) -+ { -+ Matrix PROJ_campose(2,6); -+ PROJ_campose << PROJ_camori.block(0,0,2,3), (PROJ_obs_t_point * OBS_T_POINT_campos); -+ Dothe->resize(2,6); -+ *Dothe << (PROJ_campose * CAMPOSE_othepose); -+ } -+ if(Dpoint) -+ { -+ Dpoint->resize(2,3); -+ *Dpoint << (PROJ_obs_t_point * OBS_T_POINT_point); -+ } -+ -+ return reprojectionError.vector(); -+ -+ } -+ else -+ { -+ // Get the direction to the point from observation point -+ Matrix OBS_T_POINT_point, OBS_T_POINT_mainanchorpos, OBS_T_POINT_assoanchorpos, OBS_T_POINT_campos; -+ Point3 obs_T_point(point.directionVectorFromOtheAnchor( -+ mainPose.translation(), assoPose.translation(), othePose.translation(), -+ OBS_T_POINT_point, -+ OBS_T_POINT_mainanchorpos, -+ OBS_T_POINT_assoanchorpos, -+ OBS_T_POINT_campos)); -+ -+ // Put a camera at the origin -+ PinholeCamera<CALIBRATION> camera(Pose3(othePose.rotation(), Point3()), *K_); -+ -+ // Project direction vector to camera and calculate the error -+ Matrix PROJ_camori, PROJ_obs_t_point; -+ Point2 reprojectionError(camera.project(obs_T_point, PROJ_camori, PROJ_obs_t_point) - measured_); -+ -+ // Chain of jacobians -+ if(Dmain) -+ { -+ Dmain->resize(2,6); -+ *Dmain << zeros(2,3), (PROJ_obs_t_point * OBS_T_POINT_mainanchorpos); -+ } -+ if(Dasso) -+ { -+ Dasso->resize(2,6); -+ *Dasso << zeros(2,3), (PROJ_obs_t_point * OBS_T_POINT_assoanchorpos); -+ } -+ if(Dothe) -+ { -+ Dothe->resize(2,6); -+ *Dothe << PROJ_camori.block(0,0,2,3), (PROJ_obs_t_point * OBS_T_POINT_campos); -+ } -+ if(Dpoint) -+ { -+ Dpoint->resize(2,3); -+ *Dpoint << (PROJ_obs_t_point * OBS_T_POINT_point); -+ } -+ -+ return reprojectionError.vector(); -+ -+ } -+ }catch( CheiralityException& e) { -+ if (Dmain ) *Dmain = zeros(2,6); -+ if (Dasso ) *Dasso = zeros(2,6); -+ if (Dothe ) *Dothe = zeros(2,6); -+ if (Dpoint) *Dpoint = zeros(2,3); -+ if (verboseCheirality_) -+ std::cout << e.what() << ": Landmark "<< DefaultKeyFormatter(this->key4()) << -+ " with anchors (" << DefaultKeyFormatter(this->key1()) << "," << DefaultKeyFormatter(this->key2()) << -+ " moved behind camera " << DefaultKeyFormatter(this->key3()) << std::endl; -+ if (throwCheirality_) -+ throw e; -+ } -+ return ones(2) * 2.0 * K_->fx(); -+ } -+ -+ /** return the measurement */ -+ const Point2& measured() const { -+ return measured_; -+ } -+ -+ /** return the calibration object */ -+ inline const boost::shared_ptr<CALIBRATION> calibration() const { -+ return K_; -+ } -+ -+ /** return verbosity */ -+ inline bool verboseCheirality() const { return verboseCheirality_; } -+ -+ /** return flag for throwing cheirality exceptions */ -+ inline bool throwCheirality() const { return throwCheirality_; } -+ -+ private: -+ -+ /// Serialization function -+ friend class boost::serialization::access; -+ template<class ARCHIVE> -+ void serialize(ARCHIVE & ar, const unsigned int version) { -+ ar & BOOST_SERIALIZATION_BASE_OBJECT_NVP(Base); -+ ar & BOOST_SERIALIZATION_NVP(measured_); -+ ar & BOOST_SERIALIZATION_NVP(K_); -+ ar & BOOST_SERIALIZATION_NVP(body_P_sensor_); -+ ar & BOOST_SERIALIZATION_NVP(throwCheirality_); -+ ar & BOOST_SERIALIZATION_NVP(verboseCheirality_); -+ } -+ }; -+ -+} // \ namespace gtsam ---- gtsam.h 2014-06-01 21:22:39.000000000 +0200 -+++ gtsam.h 2015-05-05 22:25:48.977930910 +0200 -@@ -837,6 +837,66 @@ - void serialize() const; - }; - -+#include <gtsam/geometry/ParallaxAnglePoint2.h> -+virtual class ParallaxAnglePoint2 : gtsam::Value { -+ // Standard Constructors -+ ParallaxAnglePoint2(); -+ ParallaxAnglePoint2(double yaw, double pitch); -+ ParallaxAnglePoint2(Vector v); -+ -+ // Testable -+ void print(string s) const; -+ bool equals(const gtsam::ParallaxAnglePoint2& pose, double tol) const; -+ -+ // Manifold -+ static size_t Dim(); -+ size_t dim() const; -+ gtsam::ParallaxAnglePoint2 retract(Vector v) const; -+ Vector localCoordinates(const gtsam::ParallaxAnglePoint2& p) const; -+ -+ // Standard Interface -+ double yaw() const; -+ double pitch() const; -+ Vector vector() const; -+ -+ Vector directionVector() const; -+ -+ // enabling serialization functionality -+ void serialize() const; -+}; -+ -+#include <gtsam/geometry/ParallaxAnglePoint3.h> -+virtual class ParallaxAnglePoint3 : gtsam::Value { -+ // Standard Constructors -+ ParallaxAnglePoint3(); -+ ParallaxAnglePoint3(double yaw, double pitch, double parallax); -+ ParallaxAnglePoint3(Vector v); -+ -+ // Testable -+ void print(string s) const; -+ bool equals(const gtsam::ParallaxAnglePoint3& pose, double tol) const; -+ -+ // Manifold -+ static size_t Dim(); -+ size_t dim() const; -+ gtsam::ParallaxAnglePoint3 retract(Vector v) const; -+ Vector localCoordinates(const gtsam::ParallaxAnglePoint3& p) const; -+ -+ // Standard Interface -+ double yaw() const; -+ double pitch() const; -+ double parallax() const; -+ Vector vector() const; -+ -+ Vector directionVectorFromMainAnchor() const; -+ Vector directionVectorFromAssoAnchor(const gtsam::Point3& mainAnchor, const gtsam::Point3& assoAnchor) const; -+ Vector directionVectorFromOtheAnchor(const gtsam::Point3& mainAnchor, const gtsam::Point3& assoAnchor, const gtsam::Point3& otheAnchor) const; -+ -+ // enabling serialization functionality -+ void serialize() const; -+}; -+ -+ - //************************************************************************* - // Symbolic - //************************************************************************* -@@ -2180,6 +2240,81 @@ - typedef gtsam::GenericProjectionFactor<gtsam::Pose3, gtsam::Point3, gtsam::Cal3_S2> GenericProjectionFactorCal3_S2; - typedef gtsam::GenericProjectionFactor<gtsam::Pose3, gtsam::Point3, gtsam::Cal3DS2> GenericProjectionFactorCal3DS2; - -+#include <gtsam/slam/ParallaxAngleProjectionFactor.h> -+template<POSE, LANDMARK, CALIBRATION> -+virtual class ParallaxAngleSingleAnchorProjectionFactor : gtsam::NoiseModelFactor { -+ ParallaxAngleSingleAnchorProjectionFactor(const gtsam::Point2& measured, const gtsam::noiseModel::Base* noiseModel, -+ size_t mainAnchorKey, size_t pointKey, const CALIBRATION* k); -+ ParallaxAngleSingleAnchorProjectionFactor(const gtsam::Point2& measured, const gtsam::noiseModel::Base* noiseModel, -+ size_t mainAnchorKey, size_t pointKey, const CALIBRATION* k, const POSE& body_P_sensor); -+ -+ ParallaxAngleSingleAnchorProjectionFactor(const gtsam::Point2& measured, const gtsam::noiseModel::Base* noiseModel, -+ size_t mainAnchorKey, size_t pointKey, const CALIBRATION* k, bool throwCheirality, bool verboseCheirality); -+ ParallaxAngleSingleAnchorProjectionFactor(const gtsam::Point2& measured, const gtsam::noiseModel::Base* noiseModel, -+ size_t mainAnchorKey, size_t pointKey, const CALIBRATION* k, bool throwCheirality, bool verboseCheirality, -+ const POSE& body_P_sensor); -+ -+ gtsam::Point2 measured() const; -+ CALIBRATION* calibration() const; -+ bool verboseCheirality() const; -+ bool throwCheirality() const; -+ -+ // enabling serialization functionality -+ void serialize() const; -+}; -+typedef gtsam::ParallaxAngleSingleAnchorProjectionFactor<gtsam::Pose3, gtsam::ParallaxAnglePoint2, gtsam::Cal3_S2> PASingleAnchorProjectionFactorCal3_S2; -+typedef gtsam::ParallaxAngleSingleAnchorProjectionFactor<gtsam::Pose3, gtsam::ParallaxAnglePoint2, gtsam::Cal3DS2> PASingleAnchorProjectionFactorCal3DS2; -+ -+ -+template<POSE, LANDMARK, CALIBRATION> -+virtual class ParallaxAngleOnlyAnchorsProjectionFactor : gtsam::NoiseModelFactor { -+ ParallaxAngleOnlyAnchorsProjectionFactor(const gtsam::Point2& measured, const gtsam::noiseModel::Base* noiseModel, -+ size_t mainAnchorKey, size_t associatedAnchorKey, size_t pointKey, const CALIBRATION* k); -+ ParallaxAngleOnlyAnchorsProjectionFactor(const gtsam::Point2& measured, const gtsam::noiseModel::Base* noiseModel, -+ size_t mainAnchorKey, size_t associatedAnchorKey, size_t pointKey, const CALIBRATION* k, const POSE& body_P_sensor); -+ -+ ParallaxAngleOnlyAnchorsProjectionFactor(const gtsam::Point2& measured, const gtsam::noiseModel::Base* noiseModel, -+ size_t mainAnchorKey, size_t associatedAnchorKey, size_t pointKey, const CALIBRATION* k, bool throwCheirality, bool verboseCheirality); -+ ParallaxAngleOnlyAnchorsProjectionFactor(const gtsam::Point2& measured, const gtsam::noiseModel::Base* noiseModel, -+ size_t mainAnchorKey, size_t associatedAnchorKey, size_t pointKey, const CALIBRATION* k, bool throwCheirality, bool verboseCheirality, -+ const POSE& body_P_sensor); -+ -+ gtsam::Point2 measured() const; -+ CALIBRATION* calibration() const; -+ bool verboseCheirality() const; -+ bool throwCheirality() const; -+ -+ // enabling serialization functionality -+ void serialize() const; -+}; -+typedef gtsam::ParallaxAngleOnlyAnchorsProjectionFactor<gtsam::Pose3, gtsam::ParallaxAnglePoint3, gtsam::Cal3_S2> PAOnlyAnchorsProjectionFactorCal3_S2; -+typedef gtsam::ParallaxAngleOnlyAnchorsProjectionFactor<gtsam::Pose3, gtsam::ParallaxAnglePoint3, gtsam::Cal3DS2> PAOnlyAnchorsProjectionFactorCal3DS2; -+ -+ -+template<POSE, LANDMARK, CALIBRATION> -+virtual class ParallaxAngleProjectionFactor : gtsam::NoiseModelFactor { -+ ParallaxAngleProjectionFactor(const gtsam::Point2& measured, const gtsam::noiseModel::Base* noiseModel, -+ size_t mainAnchorKey, size_t associatedAnchorKey, size_t otherAnchorKey, size_t pointKey, const CALIBRATION* k); -+ ParallaxAngleProjectionFactor(const gtsam::Point2& measured, const gtsam::noiseModel::Base* noiseModel, -+ size_t mainAnchorKey, size_t associatedAnchorKey, size_t otherAnchorKey, size_t pointKey, const CALIBRATION* k, const POSE& body_P_sensor); -+ -+ ParallaxAngleProjectionFactor(const gtsam::Point2& measured, const gtsam::noiseModel::Base* noiseModel, -+ size_t mainAnchorKey, size_t associatedAnchorKey, size_t otherAnchorKey, size_t pointKey, const CALIBRATION* k, bool throwCheirality, bool verboseCheirality); -+ ParallaxAngleProjectionFactor(const gtsam::Point2& measured, const gtsam::noiseModel::Base* noiseModel, -+ size_t mainAnchorKey, size_t associatedAnchorKey, size_t otherAnchorKey, size_t pointKey, const CALIBRATION* k, bool throwCheirality, bool verboseCheirality, -+ const POSE& body_P_sensor); -+ -+ gtsam::Point2 measured() const; -+ CALIBRATION* calibration() const; -+ bool verboseCheirality() const; -+ bool throwCheirality() const; -+ -+ // enabling serialization functionality -+ void serialize() const; -+}; -+typedef gtsam::ParallaxAngleProjectionFactor<gtsam::Pose3, gtsam::ParallaxAnglePoint3, gtsam::Cal3_S2> PAProjectionFactorCal3_S2; -+typedef gtsam::ParallaxAngleProjectionFactor<gtsam::Pose3, gtsam::ParallaxAnglePoint3, gtsam::Cal3DS2> PAProjectionFactorCal3DS2; -+ - - #include <gtsam/slam/GeneralSFMFactor.h> - template<CAMERA, LANDMARK> diff --git a/gtsam/patches/patch-ad b/gtsam/patches/patch-ad deleted file mode 100644 index 52867bb19815caf6fd7f27cecca86d244dfe523a..0000000000000000000000000000000000000000 --- a/gtsam/patches/patch-ad +++ /dev/null @@ -1,161 +0,0 @@ -Add error function from SingleAnchorProjectionFactor to ParallaxAnglePoint3 ---- gtsam.h 2015-05-07 14:21:16.768171500 +0200 -+++ gtsam.h 2015-05-07 14:20:30.876077548 +0200 -@@ -2262,8 +2262,10 @@ - // enabling serialization functionality - void serialize() const; - }; --typedef gtsam::ParallaxAngleSingleAnchorProjectionFactor<gtsam::Pose3, gtsam::ParallaxAnglePoint2, gtsam::Cal3_S2> PASingleAnchorProjectionFactorCal3_S2; --typedef gtsam::ParallaxAngleSingleAnchorProjectionFactor<gtsam::Pose3, gtsam::ParallaxAnglePoint2, gtsam::Cal3DS2> PASingleAnchorProjectionFactorCal3DS2; -+typedef gtsam::ParallaxAngleSingleAnchorProjectionFactor<gtsam::Pose3, gtsam::ParallaxAnglePoint2, gtsam::Cal3_S2> PAPoint2SingleAnchorProjectionFactorCal3_S2; -+typedef gtsam::ParallaxAngleSingleAnchorProjectionFactor<gtsam::Pose3, gtsam::ParallaxAnglePoint2, gtsam::Cal3DS2> PAPoint2SingleAnchorProjectionFactorCal3DS2; -+typedef gtsam::ParallaxAngleSingleAnchorProjectionFactor<gtsam::Pose3, gtsam::ParallaxAnglePoint3, gtsam::Cal3_S2> PAPoint3SingleAnchorProjectionFactorCal3_S2; -+typedef gtsam::ParallaxAngleSingleAnchorProjectionFactor<gtsam::Pose3, gtsam::ParallaxAnglePoint3, gtsam::Cal3DS2> PAPoint3SingleAnchorProjectionFactorCal3DS2; - - - template<POSE, LANDMARK, CALIBRATION> -@@ -2289,8 +2289,8 @@ - // enabling serialization functionality - void serialize() const; - }; --typedef gtsam::ParallaxAngleOnlyAnchorsProjectionFactor<gtsam::Pose3, gtsam::ParallaxAnglePoint3, gtsam::Cal3_S2> PAOnlyAnchorsProjectionFactorCal3_S2; --typedef gtsam::ParallaxAngleOnlyAnchorsProjectionFactor<gtsam::Pose3, gtsam::ParallaxAnglePoint3, gtsam::Cal3DS2> PAOnlyAnchorsProjectionFactorCal3DS2; -+typedef gtsam::ParallaxAngleOnlyAnchorsProjectionFactor<gtsam::Pose3, gtsam::ParallaxAnglePoint3, gtsam::Cal3_S2> PAPoint3OnlyAnchorsProjectionFactorCal3_S2; -+typedef gtsam::ParallaxAngleOnlyAnchorsProjectionFactor<gtsam::Pose3, gtsam::ParallaxAnglePoint3, gtsam::Cal3DS2> PAPoint3OnlyAnchorsProjectionFactorCal3DS2; - - - template<POSE, LANDMARK, CALIBRATION> -@@ -2314,8 +2314,8 @@ - // enabling serialization functionality - void serialize() const; - }; --typedef gtsam::ParallaxAngleProjectionFactor<gtsam::Pose3, gtsam::ParallaxAnglePoint3, gtsam::Cal3_S2> PAProjectionFactorCal3_S2; --typedef gtsam::ParallaxAngleProjectionFactor<gtsam::Pose3, gtsam::ParallaxAnglePoint3, gtsam::Cal3DS2> PAProjectionFactorCal3DS2; -+typedef gtsam::ParallaxAngleProjectionFactor<gtsam::Pose3, gtsam::ParallaxAnglePoint3, gtsam::Cal3_S2> PAPoint3ProjectionFactorCal3_S2; -+typedef gtsam::ParallaxAngleProjectionFactor<gtsam::Pose3, gtsam::ParallaxAnglePoint3, gtsam::Cal3DS2> PAPoint3ProjectionFactorCal3DS2; - - - #include <gtsam/slam/GeneralSFMFactor.h> ---- gtsam/slam/ParallaxAngleProjectionFactor.h 2015-05-07 14:21:16.768171500 +0200 -+++ gtsam/slam/ParallaxAngleProjectionFactor.h 2015-05-07 14:11:25.325210470 +0200 -@@ -244,6 +244,120 @@ - return ones(2) * 2.0 * K_->fx(); - } - -+ /// Evaluate error h(x)-z and optionally derivatives -+ Vector evaluateError(const Pose3& mainPose, const ParallaxAnglePoint3& point, -+ boost::optional<Matrix&> Dmain = boost::none, -+ boost::optional<Matrix&> Dpoint = boost::none) const { -+ try { -+ // Test if we need jacobians -+ if (!Dmain && !Dpoint) -+ { -+ if(body_P_sensor_) -+ { -+ // Get the main and associated anchors, and the camera pose -+ Pose3 mainAnchorPose ( mainPose.compose(*body_P_sensor_) ); -+ -+ // Get the direction to the point from observation point -+ Point3 obs_T_point( point.directionVectorFromMainAnchor() ); -+ -+ // Put a camera at the origin -+ PinholeCamera<CALIBRATION> camera(Pose3(mainAnchorPose.rotation(), Point3()), *K_); -+ -+ // Project direction vector to camera and calculate the error -+ Point2 reprojectionError(camera.project(obs_T_point) - measured_); -+ return reprojectionError.vector(); -+ } -+ else -+ { -+ // Get the direction to the point from observation point -+ Point3 obs_T_point( point.directionVectorFromMainAnchor() ); -+ -+ // Put a camera at the origin -+ PinholeCamera<CALIBRATION> camera(Pose3(mainPose.rotation(), Point3()), *K_); -+ -+ // Project direction vector to camera and calculate the error -+ Point2 reprojectionError(camera.project(obs_T_point) - measured_); -+ return reprojectionError.vector(); -+ } -+ } -+ -+ // Same computation but with jacobians -+ if(body_P_sensor_) -+ { -+ // Get the main and associated anchors, and the camera pose -+ gtsam::Matrix MAINANCHORPOSE_mainpose; -+ Pose3 mainAnchorPose ( mainPose.compose(*body_P_sensor_, MAINANCHORPOSE_mainpose) ); -+ -+ // Get the direction to the point from observation point -+ Matrix OBS_T_POINT_point; -+ Point3 obs_T_point(point.directionVectorFromMainAnchor( OBS_T_POINT_point )); -+ -+ // Put a camera at the origin -+ PinholeCamera<CALIBRATION> camera(Pose3(mainAnchorPose.rotation(), Point3()), *K_); -+ -+ // Project direction vector to camera and calculate the error -+ Matrix PROJ_mainanchorori, PROJ_obs_t_point; -+ Point2 reprojectionError(camera.project(obs_T_point, PROJ_mainanchorori, PROJ_obs_t_point) - measured_); -+ -+ // Chain of jacobians -+ if(Dmain) -+ { -+ Matrix PROJ_mainanchorpose(2,6); -+ PROJ_mainanchorpose << PROJ_mainanchorori.block(0,0,2,3), zeros(2,3); -+ Dmain->resize(2,6); -+ *Dmain << (PROJ_mainanchorpose * MAINANCHORPOSE_mainpose); -+ } -+ if(Dpoint) -+ { -+ Dpoint->resize(2,3); -+ *Dpoint << (PROJ_obs_t_point * OBS_T_POINT_point); -+ } -+ -+ return reprojectionError.vector(); -+ -+ } -+ else -+ { -+ // Get the direction to the point from observation point -+ Matrix OBS_T_POINT_point; -+ Point3 obs_T_point(point.directionVectorFromMainAnchor( OBS_T_POINT_point )); -+ -+ // Put a camera at the origin -+ PinholeCamera<CALIBRATION> camera(Pose3(mainPose.rotation(), Point3()), *K_); -+ -+ // Project direction vector to camera and calculate the error -+ Matrix PROJ_mainori, PROJ_obs_t_point; -+ Point2 reprojectionError(camera.project(obs_T_point, PROJ_mainori, PROJ_obs_t_point) - measured_); -+ -+ // Chain of jacobians -+ if(Dmain) -+ { -+ Dmain->resize(2,6); -+ *Dmain << PROJ_mainori.block(0,0,2,3), zeros(2,3); -+ } -+ if(Dpoint) -+ { -+ Dpoint->resize(2,3); -+ *Dpoint << (PROJ_obs_t_point * OBS_T_POINT_point); -+ } -+ -+ return reprojectionError.vector(); -+ } -+ } catch( CheiralityException& e) -+ { -+ if (Dmain ) *Dmain = zeros(2,6); -+ if (Dpoint) *Dpoint = zeros(2,3); -+ if (verboseCheirality_) -+ std::cout << e.what() << ": Landmark "<< DefaultKeyFormatter(this->key2()) << -+ " with single anchor (" << DefaultKeyFormatter(this->key1()) << ")" << -+ " moved behind camera " << std::endl; -+ if (throwCheirality_) -+ throw e; -+ } -+ return ones(2) * 2.0 * K_->fx(); -+ } -+ -+ - /** return the measurement */ - const Point2& measured() const { - return measured_; diff --git a/gtsam/patches/patch-ae b/gtsam/patches/patch-ae deleted file mode 100644 index 30d4dbd4c86872a30764e67403872ecd051444ce..0000000000000000000000000000000000000000 --- a/gtsam/patches/patch-ae +++ /dev/null @@ -1,195 +0,0 @@ -Add static constructors to Parallax Angle Points - ---- gtsam/geometry/ParallaxAnglePoint2.h 2015-05-11 14:28:07.113933768 +0200 -+++ gtsam/geometry/ParallaxAnglePoint2.h 2015-05-08 19:08:41.697786177 +0200 -@@ -22,6 +22,10 @@ - #include <gtsam/base/Matrix.h> - #include <gtsam/base/DerivedValue.h> - #include <gtsam/base/Lie.h> -+#include <gtsam/geometry/Point2.h> -+#include <gtsam/geometry/Point3.h> -+#include <gtsam/geometry/Pose3.h> -+#include <gtsam/geometry/PinholeCamera.h> - - #include <boost/serialization/nvp.hpp> - -@@ -66,6 +70,39 @@ - pitch_ = v(1); - } - -+ /// Construct from camera and measurement -+ template<class PinholeCameraType> -+ static ParallaxAnglePoint2 FromCameraAndMeasurement(const PinholeCameraType &camera, const Point2 &measurement) -+ { -+ Point3 vecFromMain = camera.backproject(measurement, 1.0); -+ double yaw = atan2(vecFromMain.y(),vecFromMain.x()); -+ double pitch = atan2(vecFromMain.z(),Point2(vecFromMain.x(),vecFromMain.y()).norm()); -+ -+ return ParallaxAnglePoint2(yaw,pitch); -+ } -+ -+ /// Construct from pose, body to sensor pose and camera calibration -+ template<class CalibrationType> -+ static ParallaxAnglePoint2 FromPoseMeasurementAndCalibration(const Pose3 &pose, const Point2 &measurement, const CalibrationType& K, boost::optional<Pose3> body_P_sensor = boost::none) -+ { -+ boost::shared_ptr<PinholeCamera<CalibrationType> > camera_ptr; -+ -+ if(body_P_sensor) -+ { -+ camera_ptr = boost::make_shared<PinholeCamera<CalibrationType> >(pose.compose(*body_P_sensor), K); -+ } -+ else -+ { -+ camera_ptr = boost::make_shared<PinholeCamera<CalibrationType> >(pose, K); -+ } -+ -+ Point3 vecFromMain = camera_ptr->backproject(measurement, 1.0); -+ double yaw = atan2(vecFromMain.y(),vecFromMain.x()); -+ double pitch = atan2(vecFromMain.z(),Point2(vecFromMain.x(),vecFromMain.y()).norm()); -+ -+ return ParallaxAnglePoint2(yaw,pitch); -+ } -+ - /// @} - /// @name Testable - /// @{ ---- gtsam/geometry/ParallaxAnglePoint3.cpp 2015-05-11 14:28:07.113933768 +0200 -+++ gtsam/geometry/ParallaxAnglePoint3.cpp 2015-05-08 18:40:09.733203490 +0200 -@@ -29,6 +29,22 @@ - - namespace gtsam { - /* ************************************************************************* */ -+ParallaxAnglePoint3 ParallaxAnglePoint3::FromParallaxAnglePointAndAnchors( -+ const ParallaxAnglePoint3 &oldPoint, -+ const Point3 &oldMainAnchor, const Point3 &oldAssoAnchor, -+ const Point3 &newMainAnchor, const Point3 &newAssoAnchor) -+{ -+ Vector3 vecFromNewMain(oldPoint.directionVectorFromOtheAnchor(oldMainAnchor, oldAssoAnchor, newMainAnchor)); -+ Vector3 vecFromNewAsso(oldPoint.directionVectorFromOtheAnchor(oldMainAnchor, oldAssoAnchor, newAssoAnchor)); -+ -+ double yaw = atan2(vecFromNewMain.y(),vecFromNewMain.x()); -+ double pitch = atan2(vecFromNewMain.z(),Point2(vecFromNewMain.x(),vecFromNewMain.y()).norm()); -+ double parallax = acos(vecFromNewMain.dot(vecFromNewAsso)/(vecFromNewMain.norm()*vecFromNewAsso.norm())); -+ -+ return ParallaxAnglePoint3(yaw,pitch,parallax); -+} -+ -+/* ************************************************************************* */ - void ParallaxAnglePoint3::print(const string& s) const { - cout << s << *this << endl; - } ---- gtsam/geometry/ParallaxAnglePoint3.h 2015-05-11 14:28:07.113933768 +0200 -+++ gtsam/geometry/ParallaxAnglePoint3.h 2015-05-08 18:38:00.960126712 +0200 -@@ -24,6 +24,9 @@ - #include <gtsam/base/Lie.h> - - #include <gtsam/geometry/Point3.h> -+#include <gtsam/geometry/Point3.h> -+#include <gtsam/geometry/Pose3.h> -+#include <gtsam/geometry/PinholeCamera.h> - - #include <boost/serialization/nvp.hpp> - -@@ -70,6 +73,57 @@ - parallax_ = v(2); - } - -+ /// Construct from main and associated cameras and respective measurements -+ template<class PinholeCameraType> -+ static ParallaxAnglePoint3 FromCamerasAndMeasurements( -+ const PinholeCameraType &mainCamera, const Point2 &measurementFromMain, -+ const PinholeCameraType &assoCamera, const Point2 &measurementFromAsso) -+ { -+ Point3 pointFromMain = mainCamera.backproject(measurementFromMain, 1.0); -+ Point3 pointFromAsso = assoCamera.backproject(measurementFromAsso, 1.0); -+ -+ double yaw = atan2(pointFromMain.y(),pointFromMain.x()); -+ double pitch = atan2(pointFromMain.z(),Point2(pointFromMain.x(),pointFromMain.y()).norm()); -+ double parallax = acos(pointFromMain.dot(pointFromAsso)/(pointFromMain.norm()*pointFromAsso.norm())); -+ -+ return ParallaxAnglePoint3(yaw,pitch,parallax); -+ } -+ -+ /// Construct from main and associated poses, together with respective measurements, camera calibration and body to sensor pose -+ template<class CalibrationType> -+ static ParallaxAnglePoint3 FromPosesMeasurementsAndCalibration( -+ const Pose3 &mainPose, const Point2 &measurementFromMain, -+ const Pose3 &assoPose, const Point2 &measurementFromAsso, -+ const CalibrationType& K, boost::optional<Pose3> body_P_sensor = boost::none) -+ { -+ boost::shared_ptr<PinholeCamera<CalibrationType> > mainCamera_ptr; -+ boost::shared_ptr<PinholeCamera<CalibrationType> > assoCamera_ptr; -+ -+ if(body_P_sensor) -+ { -+ mainCamera_ptr = boost::make_shared<PinholeCamera<CalibrationType> >(mainPose.compose(*body_P_sensor), K); -+ assoCamera_ptr = boost::make_shared<PinholeCamera<CalibrationType> >(assoPose.compose(*body_P_sensor), K); -+ } -+ else -+ { -+ mainCamera_ptr = boost::make_shared<PinholeCamera<CalibrationType> >(mainPose, K); -+ assoCamera_ptr = boost::make_shared<PinholeCamera<CalibrationType> >(assoPose, K); -+ } -+ -+ Point3 vecFromMain = mainCamera_ptr->backproject(measurementFromMain, 1.0); -+ Point3 vecFromAsso = assoCamera_ptr->backproject(measurementFromAsso, 1.0); -+ -+ double yaw = atan2(vecFromMain.y(),vecFromMain.x()); -+ double pitch = atan2(vecFromMain.z(),Point2(vecFromMain.x(),vecFromMain.y()).norm()); -+ double parallax = acos(vecFromMain.dot(vecFromAsso)/(vecFromMain.norm()*vecFromAsso.norm())); -+ -+ return ParallaxAnglePoint3(yaw,pitch,parallax); -+ } -+ -+ static ParallaxAnglePoint3 FromParallaxAnglePointAndAnchors(const ParallaxAnglePoint3 &oldPoint, -+ const Point3 &oldMainAnchor, const Point3 &oldAssoAnchor, -+ const Point3 &newMainAnchor, const Point3 &newAssoAnchor); -+ - /// @} - /// @name Testable - /// @{ ---- gtsam.h 2015-05-11 14:28:07.137933964 +0200 -+++ gtsam.h 2015-05-11 14:23:28.263660051 +0200 -@@ -844,6 +844,14 @@ - ParallaxAnglePoint2(double yaw, double pitch); - ParallaxAnglePoint2(Vector v); - -+ // Static Constructors -+ static gtsam::ParallaxAnglePoint2 FromCameraAndMeasurement(const gtsam::SimpleCamera &camera, const gtsam::Point2 &measurement); -+ static gtsam::ParallaxAnglePoint2 FromCameraAndMeasurement(const gtsam::PinholeCameraCal3DS2 &camera, const gtsam::Point2 &measurement); -+ static gtsam::ParallaxAnglePoint2 FromPoseMeasurementAndCalibration(const gtsam::Pose3 &pose, const gtsam::Point2 &measurement, const gtsam::Cal3_S2& K, const gtsam::Pose3& body_P_sensor); -+ static gtsam::ParallaxAnglePoint2 FromPoseMeasurementAndCalibration(const gtsam::Pose3 &pose, const gtsam::Point2 &measurement, const gtsam::Cal3_S2& K); -+ static gtsam::ParallaxAnglePoint2 FromPoseMeasurementAndCalibration(const gtsam::Pose3 &pose, const gtsam::Point2 &measurement, const gtsam::Cal3DS2& K); -+ static gtsam::ParallaxAnglePoint2 FromPoseMeasurementAndCalibration(const gtsam::Pose3 &pose, const gtsam::Point2 &measurement, const gtsam::Cal3DS2& K, const gtsam::Pose3& body_P_sensor); -+ - // Testable - void print(string s) const; - bool equals(const gtsam::ParallaxAnglePoint2& pose, double tol) const; -@@ -872,6 +880,27 @@ - ParallaxAnglePoint3(double yaw, double pitch, double parallax); - ParallaxAnglePoint3(Vector v); - -+ // Static Constructors -+ static gtsam::ParallaxAnglePoint3 FromCamerasAndMeasurements( const gtsam::SimpleCamera &mainCamera, const gtsam::Point2 &measurementFromMain, -+ const gtsam::SimpleCamera &assoCamera, const gtsam::Point2 &measurementFromAsso); -+ static gtsam::ParallaxAnglePoint3 FromCamerasAndMeasurements( const gtsam::PinholeCameraCal3DS2 &mainCamera, const gtsam::Point2 &measurementFromMain, -+ const gtsam::PinholeCameraCal3DS2 &assoCamera, const gtsam::Point2 &measurementFromAsso); -+ static gtsam::ParallaxAnglePoint3 FromPosesMeasurementsAndCalibration( const gtsam::Pose3 &mainPose, const gtsam::Point2 &measurementFromMain, -+ const gtsam::Pose3 &assoPose, const gtsam::Point2 &measurementFromAsso, -+ const gtsam::Cal3_S2& K); -+ static gtsam::ParallaxAnglePoint3 FromPosesMeasurementsAndCalibration( const gtsam::Pose3 &mainPose, const gtsam::Point2 &measurementFromMain, -+ const gtsam::Pose3 &assoPose, const gtsam::Point2 &measurementFromAsso, -+ const gtsam::Cal3_S2& K, const gtsam::Pose3 &body_P_sensor); -+ static gtsam::ParallaxAnglePoint3 FromPosesMeasurementsAndCalibration( const gtsam::Pose3 &mainPose, const gtsam::Point2 &measurementFromMain, -+ const gtsam::Pose3 &assoPose, const gtsam::Point2 &measurementFromAsso, -+ const gtsam::Cal3DS2& K); -+ static gtsam::ParallaxAnglePoint3 FromPosesMeasurementsAndCalibration( const gtsam::Pose3 &mainPose, const gtsam::Point2 &measurementFromMain, -+ const gtsam::Pose3 &assoPose, const gtsam::Point2 &measurementFromAsso, -+ const gtsam::Cal3DS2& K, const gtsam::Pose3 &body_P_sensor); -+ static gtsam::ParallaxAnglePoint3 FromParallaxAnglePointAndAnchors( const gtsam::ParallaxAnglePoint3 &oldPoint, -+ const gtsam::Point3 &oldMainAnchor, const gtsam::Point3 &oldAssoAnchor, -+ const gtsam::Point3 &newMainAnchor, const gtsam::Point3 &newAssoAnchor); -+ - // Testable - void print(string s) const; - bool equals(const gtsam::ParallaxAnglePoint3& pose, double tol) const; diff --git a/gtsam/patches/patch-af b/gtsam/patches/patch-af deleted file mode 100644 index 31493d11a04a73ee302afc34f99636025fac0615..0000000000000000000000000000000000000000 --- a/gtsam/patches/patch-af +++ /dev/null @@ -1,181 +0,0 @@ -Patch with last modifications to work with Parallax Angle Points in the toolbox - - Add toPoint3 methods and wrap it - - Fix a bug in the Parallax Angle Point static constructors - - Wrap evaluateError methods of Parallax Angle Point Projection Factors (was used for debug) - - Add method to access newFactorsIndices from ISAM2Result, and wrap it in the matlab toolbox ---- gtsam/geometry/ParallaxAnglePoint2.h 2015-05-19 15:06:53.169068033 +0200 -+++ gtsam/geometry/ParallaxAnglePoint2.h 2015-05-14 18:49:59.374873705 +0200 -@@ -74,7 +74,7 @@ - template<class PinholeCameraType> - static ParallaxAnglePoint2 FromCameraAndMeasurement(const PinholeCameraType &camera, const Point2 &measurement) - { -- Point3 vecFromMain = camera.backproject(measurement, 1.0); -+ Point3 vecFromMain = camera.backproject(measurement, 1.0) - camera.pose().translation(); - double yaw = atan2(vecFromMain.y(),vecFromMain.x()); - double pitch = atan2(vecFromMain.z(),Point2(vecFromMain.x(),vecFromMain.y()).norm()); - -@@ -96,7 +96,7 @@ - camera_ptr = boost::make_shared<PinholeCamera<CalibrationType> >(pose, K); - } - -- Point3 vecFromMain = camera_ptr->backproject(measurement, 1.0); -+ Point3 vecFromMain = camera_ptr->backproject(measurement, 1.0) - camera_ptr->pose().translation(); - double yaw = atan2(vecFromMain.y(),vecFromMain.x()); - double pitch = atan2(vecFromMain.z(),Point2(vecFromMain.x(),vecFromMain.y()).norm()); - ---- gtsam/geometry/ParallaxAnglePoint3.cpp 2015-05-19 15:06:53.169068033 +0200 -+++ gtsam/geometry/ParallaxAnglePoint3.cpp 2015-05-19 14:35:56.340826167 +0200 -@@ -205,6 +205,39 @@ - - } - -+Point3 ParallaxAnglePoint3::toPoint3(const Point3 & mainAnchor, const Point3 & assoAnchor) const -+{ -+ Vector3 vecFromMain = directionVectorFromMainAnchor(); -+ -+ Point3 mainToAsso = (assoAnchor - mainAnchor); -+ -+ double mainAngle = angleBetweenUnitVectors(vecFromMain, mainToAsso.normalize().vector()); -+ -+ double sinParalax = sin(parallax_); -+ // Guard to avoid division by zero -+ if(fabs(sinParalax) <= 1e-6) -+ { -+ if (sinParalax < 0) sinParalax = -1e-6; -+ else sinParalax = 1e-6; -+ } -+ -+ double depthFromMain = (sin(mainAngle + parallax_)/sinParalax)*mainToAsso.norm(); -+ -+ return mainAnchor + Point3(vecFromMain*depthFromMain); -+ -+} -+ -+Point3 ParallaxAnglePoint3::toPoint3(const Pose3 & mainPose, const Pose3 & assoPose, boost::optional<const Pose3 &> body_P_sensor) const -+{ -+ if(body_P_sensor) -+ { -+ return toPoint3(mainPose.compose(*body_P_sensor).translation(), assoPose.compose(*body_P_sensor).translation()); -+ } -+ //else -+ -+ return toPoint3(mainPose.translation(), assoPose.translation()); -+} -+ - } - - // Local Functions ---- gtsam/geometry/ParallaxAnglePoint3.h 2015-05-19 15:06:53.169068033 +0200 -+++ gtsam/geometry/ParallaxAnglePoint3.h 2015-05-18 15:41:52.795327081 +0200 -@@ -79,8 +79,8 @@ - const PinholeCameraType &mainCamera, const Point2 &measurementFromMain, - const PinholeCameraType &assoCamera, const Point2 &measurementFromAsso) - { -- Point3 pointFromMain = mainCamera.backproject(measurementFromMain, 1.0); -- Point3 pointFromAsso = assoCamera.backproject(measurementFromAsso, 1.0); -+ Point3 pointFromMain = mainCamera.backproject(measurementFromMain, 1.0) - mainCamera.pose().translation(); -+ Point3 pointFromAsso = assoCamera.backproject(measurementFromAsso, 1.0) - assoCamera.pose().translation(); - - double yaw = atan2(pointFromMain.y(),pointFromMain.x()); - double pitch = atan2(pointFromMain.z(),Point2(pointFromMain.x(),pointFromMain.y()).norm()); -@@ -110,8 +110,8 @@ - assoCamera_ptr = boost::make_shared<PinholeCamera<CalibrationType> >(assoPose, K); - } - -- Point3 vecFromMain = mainCamera_ptr->backproject(measurementFromMain, 1.0); -- Point3 vecFromAsso = assoCamera_ptr->backproject(measurementFromAsso, 1.0); -+ Point3 vecFromMain = mainCamera_ptr->backproject(measurementFromMain, 1.0) - mainCamera_ptr->pose().translation(); -+ Point3 vecFromAsso = assoCamera_ptr->backproject(measurementFromAsso, 1.0) - assoCamera_ptr->pose().translation(); - - double yaw = atan2(vecFromMain.y(),vecFromMain.x()); - double pitch = atan2(vecFromMain.z(),Point2(vecFromMain.x(),vecFromMain.y()).norm()); -@@ -192,6 +192,10 @@ - boost::optional<gtsam::Matrix&> Dasso = boost::none, - boost::optional<gtsam::Matrix&> Dothe = boost::none) const; - -+ Point3 toPoint3(const Point3 & mainAnchor, const Point3 & assoAnchor) const; -+ -+ Point3 toPoint3(const Pose3 & mainPose, const Pose3 & assoPose, boost::optional<const Pose3 &> body_P_sensor = boost::none) const; -+ - /// Output stream operator - GTSAM_EXPORT friend std::ostream &operator<<(std::ostream &os, const ParallaxAnglePoint3& p); - ---- gtsam/nonlinear/ISAM2.h 2014-05-08 02:57:09.000000000 +0200 -+++ gtsam/nonlinear/ISAM2.h 2015-05-13 15:52:41.701493931 +0200 -@@ -310,6 +310,10 @@ - */ - FastVector<size_t> newFactorsIndices; - -+ /** Function to access newFactorIndices from Matlab toolbox -+ */ -+ inline FastVector<size_t> getNewFactorsIndices() { return newFactorsIndices; } -+ - /** A struct holding detailed results, which must be enabled with - * ISAM2Params::enableDetailedResults. - */ ---- gtsam/slam/ParallaxAngleProjectionFactor.h 2015-05-19 15:06:53.161068144 +0200 -+++ gtsam/slam/ParallaxAngleProjectionFactor.h 2015-05-14 12:27:36.733741098 +0200 -@@ -639,7 +639,7 @@ - if (Dpoint) *Dpoint = zeros(2,3); - if (verboseCheirality_) - std::cout << e.what() << ": Landmark "<< DefaultKeyFormatter(this->key3()) << -- " with anchors (" << DefaultKeyFormatter(this->key1()) << "," << DefaultKeyFormatter(this->key2()) << -+ " with anchors (" << DefaultKeyFormatter(this->key1()) << "," << DefaultKeyFormatter(this->key2()) << ")" << - " moved behind camera " << DefaultKeyFormatter(this->key2()) << std::endl; - if (throwCheirality_) - throw e; ---- gtsam.h 2015-05-19 15:06:53.169068033 +0200 -+++ gtsam.h 2015-05-18 15:48:30.119315060 +0200 -@@ -921,6 +921,10 @@ - Vector directionVectorFromAssoAnchor(const gtsam::Point3& mainAnchor, const gtsam::Point3& assoAnchor) const; - Vector directionVectorFromOtheAnchor(const gtsam::Point3& mainAnchor, const gtsam::Point3& assoAnchor, const gtsam::Point3& otheAnchor) const; - -+ gtsam::Point3 toPoint3(const gtsam::Point3 & mainAnchor, const gtsam::Point3 & assoAnchor) const; -+ gtsam::Point3 toPoint3(const gtsam::Pose3 & mainPose, const gtsam::Pose3 & assoPose) const; -+ gtsam::Point3 toPoint3(const gtsam::Pose3 & mainPose, const gtsam::Pose3 & assoPose, const gtsam::Pose3 & body_P_sensor) const; -+ - // enabling serialization functionality - void serialize() const; - }; -@@ -2106,6 +2110,7 @@ - size_t getVariablesRelinearized() const; - size_t getVariablesReeliminated() const; - size_t getCliques() const; -+ gtsam::KeyVector getNewFactorsIndices(); - }; - - class ISAM2 { -@@ -2283,6 +2288,10 @@ - size_t mainAnchorKey, size_t pointKey, const CALIBRATION* k, bool throwCheirality, bool verboseCheirality, - const POSE& body_P_sensor); - -+ // Error functions -+ Vector evaluateError(const gtsam::Pose3& mainPose, const gtsam::ParallaxAnglePoint2& point) const; -+ Vector evaluateError(const gtsam::Pose3& mainPose, const gtsam::ParallaxAnglePoint3& point) const; -+ - gtsam::Point2 measured() const; - CALIBRATION* calibration() const; - bool verboseCheirality() const; -@@ -2310,6 +2319,11 @@ - size_t mainAnchorKey, size_t associatedAnchorKey, size_t pointKey, const CALIBRATION* k, bool throwCheirality, bool verboseCheirality, - const POSE& body_P_sensor); - -+ // Error functions -+ Vector evaluateError(const gtsam::Pose3& mainPose, const gtsam::Pose3& assoPose, const gtsam::ParallaxAnglePoint3& point) const; -+ -+ -+ - gtsam::Point2 measured() const; - CALIBRATION* calibration() const; - bool verboseCheirality() const; -@@ -2335,6 +2349,9 @@ - size_t mainAnchorKey, size_t associatedAnchorKey, size_t otherAnchorKey, size_t pointKey, const CALIBRATION* k, bool throwCheirality, bool verboseCheirality, - const POSE& body_P_sensor); - -+ // Error functions -+ Vector evaluateError(const gtsam::Pose3& mainPose, const gtsam::Pose3& assoPose, const gtsam::Pose3& othePose, const gtsam::ParallaxAnglePoint3& point) const; -+ - gtsam::Point2 measured() const; - CALIBRATION* calibration() const; - bool verboseCheirality() const; - diff --git a/gtsam/patches/patch-ag b/gtsam/patches/patch-ag deleted file mode 100644 index 257d124922592b34ff0221cd596f93100d96566e..0000000000000000000000000000000000000000 --- a/gtsam/patches/patch-ag +++ /dev/null @@ -1,22 +0,0 @@ -Add method to reinitialize (update) ISAM2 linearization point ---- gtsam/nonlinear/ISAM2.h 2015-06-03 19:36:05.860771545 +0200 -+++ gtsam/nonlinear/ISAM2.h 2015-06-01 20:47:07.677809363 +0200 -@@ -551,6 +551,8 @@ - /** Access the current linearization point */ - const Values& getLinearizationPoint() const { return theta_; } - -+ void updateLinearizationPoint(const Values& newTheta) { theta_.update(newTheta); } -+ - /** Compute an estimate from the incomplete linear delta computed during the last update. - * This delta is incomplete because it was not updated below wildfire_threshold. If only - * a single variable is needed, it is faster to call calculateEstimate(const KEY&). ---- gtsam.h 2015-06-03 19:36:05.864771590 +0200 -+++ gtsam.h 2015-06-01 21:24:30.287061081 +0200 -@@ -2132,6 +2132,7 @@ - //void update(const gtsam::NonlinearFactorGraph& newFactors, const gtsam::Values& newTheta, const gtsam::KeyVector& removeFactorIndices, FastMap<Key,int>& constrainedKeys, bool force_relinearize); - - gtsam::Values getLinearizationPoint() const; -+ void updateLinearizationPoint(const gtsam::Values& newTheta); - gtsam::Values calculateEstimate() const; - gtsam::Value calculateEstimate(size_t key) const; - gtsam::Values calculateBestEstimate() const; diff --git a/gtsam/patches/patch-ah b/gtsam/patches/patch-ah deleted file mode 100644 index ceb56fd81fa127a1eb9b465128bd30d2bffeea66..0000000000000000000000000000000000000000 --- a/gtsam/patches/patch-ah +++ /dev/null @@ -1,45 +0,0 @@ -Force parallax to be positive when retracting on a ParallaxAnglePoint3 - ---- gtsam/geometry/ParallaxAnglePoint3.cpp 2015-06-16 13:15:09.731247987 +0200 -+++ gtsam/geometry/ParallaxAnglePoint3.cpp 2015-06-08 18:04:35.066192803 +0200 -@@ -71,6 +71,18 @@ - } - - /* ************************************************************************* */ -+ParallaxAnglePoint3 ParallaxAnglePoint3::retract(const Vector& v) const -+{ -+ ParallaxAnglePoint3 point = (*this + v); -+ -+ // Force parallax to be positive -+ if(point.parallax_ < 1e-6) -+ point.parallax_ = 1e-6; -+ -+ return point; -+} -+ -+/* ************************************************************************* */ - ostream &operator<<(ostream &os, const ParallaxAnglePoint3& p) { - os << '(' << p.yaw() << ", " << p.pitch() << ", " << p.parallax() << ')'; - return os; ---- gtsam/geometry/ParallaxAnglePoint3.h 2015-06-16 13:15:09.731247987 +0200 -+++ gtsam/geometry/ParallaxAnglePoint3.h 2015-06-08 17:59:50.022579786 +0200 -@@ -145,7 +145,7 @@ - inline size_t dim() const { return dimension; } - - /// Updates a with tangent space delta -- inline ParallaxAnglePoint3 retract(const Vector& v) const { return ParallaxAnglePoint3(*this + v); } -+ ParallaxAnglePoint3 retract(const Vector& v) const; - - /// Returns inverse retraction - inline Vector3 localCoordinates(const ParallaxAnglePoint3& q) const { return (q - *this).vector(); } ---- gtsam/slam/ParallaxAngleProjectionFactor.h 2015-06-16 13:15:09.731247987 +0200 -+++ gtsam/slam/ParallaxAngleProjectionFactor.h 2015-06-16 13:14:29.170816055 +0200 -@@ -948,7 +948,7 @@ - if (Dpoint) *Dpoint = zeros(2,3); - if (verboseCheirality_) - std::cout << e.what() << ": Landmark "<< DefaultKeyFormatter(this->key4()) << -- " with anchors (" << DefaultKeyFormatter(this->key1()) << "," << DefaultKeyFormatter(this->key2()) << -+ " with anchors (" << DefaultKeyFormatter(this->key1()) << "," << DefaultKeyFormatter(this->key2()) << ")" << - " moved behind camera " << DefaultKeyFormatter(this->key3()) << std::endl; - if (throwCheirality_) - throw e;