├── .gitignore
├── .gitmodules
├── Readme.md
├── config.yaml
├── dds_rostopic
├── CMakeLists.txt
├── package.xml
└── src
│ └── dds_rostopic_node.cpp
├── fusion_estimator
├── CMakeLists.txt
├── cfg
│ └── go2_description.urdf
├── msg
│ └── FusionEstimatorTest.msg
├── package.xml
└── src
│ ├── GO2FusionEstimator
│ ├── .gitignore
│ ├── .gitmodules
│ ├── Estimator
│ │ ├── Cpp_Estimators
│ │ │ ├── Eigen
│ │ │ │ ├── Cholesky
│ │ │ │ ├── CholmodSupport
│ │ │ │ ├── Core
│ │ │ │ ├── Dense
│ │ │ │ ├── Eigen
│ │ │ │ ├── Eigenvalues
│ │ │ │ ├── Geometry
│ │ │ │ ├── Householder
│ │ │ │ ├── IterativeLinearSolvers
│ │ │ │ ├── Jacobi
│ │ │ │ ├── KLUSupport
│ │ │ │ ├── LU
│ │ │ │ ├── MetisSupport
│ │ │ │ ├── OrderingMethods
│ │ │ │ ├── PaStiXSupport
│ │ │ │ ├── PardisoSupport
│ │ │ │ ├── QR
│ │ │ │ ├── QtAlignedMalloc
│ │ │ │ ├── SPQRSupport
│ │ │ │ ├── SVD
│ │ │ │ ├── Sparse
│ │ │ │ ├── SparseCholesky
│ │ │ │ ├── SparseCore
│ │ │ │ ├── SparseLU
│ │ │ │ ├── SparseQR
│ │ │ │ ├── StdDeque
│ │ │ │ ├── StdList
│ │ │ │ ├── StdVector
│ │ │ │ ├── SuperLUSupport
│ │ │ │ ├── UmfPackSupport
│ │ │ │ └── src
│ │ │ │ │ ├── Cholesky
│ │ │ │ │ ├── LDLT.h
│ │ │ │ │ ├── LLT.h
│ │ │ │ │ └── LLT_LAPACKE.h
│ │ │ │ │ ├── CholmodSupport
│ │ │ │ │ └── CholmodSupport.h
│ │ │ │ │ ├── Core
│ │ │ │ │ ├── ArithmeticSequence.h
│ │ │ │ │ ├── Array.h
│ │ │ │ │ ├── ArrayBase.h
│ │ │ │ │ ├── ArrayWrapper.h
│ │ │ │ │ ├── Assign.h
│ │ │ │ │ ├── AssignEvaluator.h
│ │ │ │ │ ├── Assign_MKL.h
│ │ │ │ │ ├── BandMatrix.h
│ │ │ │ │ ├── Block.h
│ │ │ │ │ ├── BooleanRedux.h
│ │ │ │ │ ├── CommaInitializer.h
│ │ │ │ │ ├── ConditionEstimator.h
│ │ │ │ │ ├── CoreEvaluators.h
│ │ │ │ │ ├── CoreIterators.h
│ │ │ │ │ ├── CwiseBinaryOp.h
│ │ │ │ │ ├── CwiseNullaryOp.h
│ │ │ │ │ ├── CwiseTernaryOp.h
│ │ │ │ │ ├── CwiseUnaryOp.h
│ │ │ │ │ ├── CwiseUnaryView.h
│ │ │ │ │ ├── DenseBase.h
│ │ │ │ │ ├── DenseCoeffsBase.h
│ │ │ │ │ ├── DenseStorage.h
│ │ │ │ │ ├── Diagonal.h
│ │ │ │ │ ├── DiagonalMatrix.h
│ │ │ │ │ ├── DiagonalProduct.h
│ │ │ │ │ ├── Dot.h
│ │ │ │ │ ├── EigenBase.h
│ │ │ │ │ ├── ForceAlignedAccess.h
│ │ │ │ │ ├── Fuzzy.h
│ │ │ │ │ ├── GeneralProduct.h
│ │ │ │ │ ├── GenericPacketMath.h
│ │ │ │ │ ├── GlobalFunctions.h
│ │ │ │ │ ├── IO.h
│ │ │ │ │ ├── IndexedView.h
│ │ │ │ │ ├── Inverse.h
│ │ │ │ │ ├── Map.h
│ │ │ │ │ ├── MapBase.h
│ │ │ │ │ ├── MathFunctions.h
│ │ │ │ │ ├── MathFunctionsImpl.h
│ │ │ │ │ ├── Matrix.h
│ │ │ │ │ ├── MatrixBase.h
│ │ │ │ │ ├── NestByValue.h
│ │ │ │ │ ├── NoAlias.h
│ │ │ │ │ ├── NumTraits.h
│ │ │ │ │ ├── PartialReduxEvaluator.h
│ │ │ │ │ ├── PermutationMatrix.h
│ │ │ │ │ ├── PlainObjectBase.h
│ │ │ │ │ ├── Product.h
│ │ │ │ │ ├── ProductEvaluators.h
│ │ │ │ │ ├── Random.h
│ │ │ │ │ ├── Redux.h
│ │ │ │ │ ├── Ref.h
│ │ │ │ │ ├── Replicate.h
│ │ │ │ │ ├── Reshaped.h
│ │ │ │ │ ├── ReturnByValue.h
│ │ │ │ │ ├── Reverse.h
│ │ │ │ │ ├── Select.h
│ │ │ │ │ ├── SelfAdjointView.h
│ │ │ │ │ ├── SelfCwiseBinaryOp.h
│ │ │ │ │ ├── Solve.h
│ │ │ │ │ ├── SolveTriangular.h
│ │ │ │ │ ├── SolverBase.h
│ │ │ │ │ ├── StableNorm.h
│ │ │ │ │ ├── StlIterators.h
│ │ │ │ │ ├── Stride.h
│ │ │ │ │ ├── Swap.h
│ │ │ │ │ ├── Transpose.h
│ │ │ │ │ ├── Transpositions.h
│ │ │ │ │ ├── TriangularMatrix.h
│ │ │ │ │ ├── VectorBlock.h
│ │ │ │ │ ├── VectorwiseOp.h
│ │ │ │ │ ├── Visitor.h
│ │ │ │ │ ├── arch
│ │ │ │ │ │ ├── AVX
│ │ │ │ │ │ │ ├── Complex.h
│ │ │ │ │ │ │ ├── MathFunctions.h
│ │ │ │ │ │ │ ├── PacketMath.h
│ │ │ │ │ │ │ └── TypeCasting.h
│ │ │ │ │ │ ├── AVX512
│ │ │ │ │ │ │ ├── Complex.h
│ │ │ │ │ │ │ ├── MathFunctions.h
│ │ │ │ │ │ │ ├── PacketMath.h
│ │ │ │ │ │ │ └── TypeCasting.h
│ │ │ │ │ │ ├── AltiVec
│ │ │ │ │ │ │ ├── Complex.h
│ │ │ │ │ │ │ ├── MathFunctions.h
│ │ │ │ │ │ │ ├── MatrixProduct.h
│ │ │ │ │ │ │ ├── MatrixProductCommon.h
│ │ │ │ │ │ │ ├── MatrixProductMMA.h
│ │ │ │ │ │ │ └── PacketMath.h
│ │ │ │ │ │ ├── CUDA
│ │ │ │ │ │ │ └── Complex.h
│ │ │ │ │ │ ├── Default
│ │ │ │ │ │ │ ├── BFloat16.h
│ │ │ │ │ │ │ ├── ConjHelper.h
│ │ │ │ │ │ │ ├── GenericPacketMathFunctions.h
│ │ │ │ │ │ │ ├── GenericPacketMathFunctionsFwd.h
│ │ │ │ │ │ │ ├── Half.h
│ │ │ │ │ │ │ ├── Settings.h
│ │ │ │ │ │ │ └── TypeCasting.h
│ │ │ │ │ │ ├── GPU
│ │ │ │ │ │ │ ├── MathFunctions.h
│ │ │ │ │ │ │ ├── PacketMath.h
│ │ │ │ │ │ │ └── TypeCasting.h
│ │ │ │ │ │ ├── HIP
│ │ │ │ │ │ │ └── hcc
│ │ │ │ │ │ │ │ └── math_constants.h
│ │ │ │ │ │ ├── MSA
│ │ │ │ │ │ │ ├── Complex.h
│ │ │ │ │ │ │ ├── MathFunctions.h
│ │ │ │ │ │ │ └── PacketMath.h
│ │ │ │ │ │ ├── NEON
│ │ │ │ │ │ │ ├── Complex.h
│ │ │ │ │ │ │ ├── GeneralBlockPanelKernel.h
│ │ │ │ │ │ │ ├── MathFunctions.h
│ │ │ │ │ │ │ ├── PacketMath.h
│ │ │ │ │ │ │ └── TypeCasting.h
│ │ │ │ │ │ ├── SSE
│ │ │ │ │ │ │ ├── Complex.h
│ │ │ │ │ │ │ ├── MathFunctions.h
│ │ │ │ │ │ │ ├── PacketMath.h
│ │ │ │ │ │ │ └── TypeCasting.h
│ │ │ │ │ │ ├── SVE
│ │ │ │ │ │ │ ├── MathFunctions.h
│ │ │ │ │ │ │ ├── PacketMath.h
│ │ │ │ │ │ │ └── TypeCasting.h
│ │ │ │ │ │ ├── SYCL
│ │ │ │ │ │ │ ├── InteropHeaders.h
│ │ │ │ │ │ │ ├── MathFunctions.h
│ │ │ │ │ │ │ ├── PacketMath.h
│ │ │ │ │ │ │ ├── SyclMemoryModel.h
│ │ │ │ │ │ │ └── TypeCasting.h
│ │ │ │ │ │ └── ZVector
│ │ │ │ │ │ │ ├── Complex.h
│ │ │ │ │ │ │ ├── MathFunctions.h
│ │ │ │ │ │ │ └── PacketMath.h
│ │ │ │ │ ├── functors
│ │ │ │ │ │ ├── AssignmentFunctors.h
│ │ │ │ │ │ ├── BinaryFunctors.h
│ │ │ │ │ │ ├── NullaryFunctors.h
│ │ │ │ │ │ ├── StlFunctors.h
│ │ │ │ │ │ ├── TernaryFunctors.h
│ │ │ │ │ │ └── UnaryFunctors.h
│ │ │ │ │ ├── products
│ │ │ │ │ │ ├── GeneralBlockPanelKernel.h
│ │ │ │ │ │ ├── GeneralMatrixMatrix.h
│ │ │ │ │ │ ├── GeneralMatrixMatrixTriangular.h
│ │ │ │ │ │ ├── GeneralMatrixMatrixTriangular_BLAS.h
│ │ │ │ │ │ ├── GeneralMatrixMatrix_BLAS.h
│ │ │ │ │ │ ├── GeneralMatrixVector.h
│ │ │ │ │ │ ├── GeneralMatrixVector_BLAS.h
│ │ │ │ │ │ ├── Parallelizer.h
│ │ │ │ │ │ ├── SelfadjointMatrixMatrix.h
│ │ │ │ │ │ ├── SelfadjointMatrixMatrix_BLAS.h
│ │ │ │ │ │ ├── SelfadjointMatrixVector.h
│ │ │ │ │ │ ├── SelfadjointMatrixVector_BLAS.h
│ │ │ │ │ │ ├── SelfadjointProduct.h
│ │ │ │ │ │ ├── SelfadjointRank2Update.h
│ │ │ │ │ │ ├── TriangularMatrixMatrix.h
│ │ │ │ │ │ ├── TriangularMatrixMatrix_BLAS.h
│ │ │ │ │ │ ├── TriangularMatrixVector.h
│ │ │ │ │ │ ├── TriangularMatrixVector_BLAS.h
│ │ │ │ │ │ ├── TriangularSolverMatrix.h
│ │ │ │ │ │ ├── TriangularSolverMatrix_BLAS.h
│ │ │ │ │ │ └── TriangularSolverVector.h
│ │ │ │ │ └── util
│ │ │ │ │ │ ├── BlasUtil.h
│ │ │ │ │ │ ├── ConfigureVectorization.h
│ │ │ │ │ │ ├── Constants.h
│ │ │ │ │ │ ├── DisableStupidWarnings.h
│ │ │ │ │ │ ├── ForwardDeclarations.h
│ │ │ │ │ │ ├── IndexedViewHelper.h
│ │ │ │ │ │ ├── IntegralConstant.h
│ │ │ │ │ │ ├── MKL_support.h
│ │ │ │ │ │ ├── Macros.h
│ │ │ │ │ │ ├── Memory.h
│ │ │ │ │ │ ├── Meta.h
│ │ │ │ │ │ ├── NonMPL2.h
│ │ │ │ │ │ ├── ReenableStupidWarnings.h
│ │ │ │ │ │ ├── ReshapedHelper.h
│ │ │ │ │ │ ├── StaticAssert.h
│ │ │ │ │ │ ├── SymbolicIndex.h
│ │ │ │ │ │ └── XprHelper.h
│ │ │ │ │ ├── Eigenvalues
│ │ │ │ │ ├── ComplexEigenSolver.h
│ │ │ │ │ ├── ComplexSchur.h
│ │ │ │ │ ├── ComplexSchur_LAPACKE.h
│ │ │ │ │ ├── EigenSolver.h
│ │ │ │ │ ├── GeneralizedEigenSolver.h
│ │ │ │ │ ├── GeneralizedSelfAdjointEigenSolver.h
│ │ │ │ │ ├── HessenbergDecomposition.h
│ │ │ │ │ ├── MatrixBaseEigenvalues.h
│ │ │ │ │ ├── RealQZ.h
│ │ │ │ │ ├── RealSchur.h
│ │ │ │ │ ├── RealSchur_LAPACKE.h
│ │ │ │ │ ├── SelfAdjointEigenSolver.h
│ │ │ │ │ ├── SelfAdjointEigenSolver_LAPACKE.h
│ │ │ │ │ └── Tridiagonalization.h
│ │ │ │ │ ├── Geometry
│ │ │ │ │ ├── AlignedBox.h
│ │ │ │ │ ├── AngleAxis.h
│ │ │ │ │ ├── EulerAngles.h
│ │ │ │ │ ├── Homogeneous.h
│ │ │ │ │ ├── Hyperplane.h
│ │ │ │ │ ├── OrthoMethods.h
│ │ │ │ │ ├── ParametrizedLine.h
│ │ │ │ │ ├── Quaternion.h
│ │ │ │ │ ├── Rotation2D.h
│ │ │ │ │ ├── RotationBase.h
│ │ │ │ │ ├── Scaling.h
│ │ │ │ │ ├── Transform.h
│ │ │ │ │ ├── Translation.h
│ │ │ │ │ ├── Umeyama.h
│ │ │ │ │ └── arch
│ │ │ │ │ │ └── Geometry_SIMD.h
│ │ │ │ │ ├── Householder
│ │ │ │ │ ├── BlockHouseholder.h
│ │ │ │ │ ├── Householder.h
│ │ │ │ │ └── HouseholderSequence.h
│ │ │ │ │ ├── IterativeLinearSolvers
│ │ │ │ │ ├── BasicPreconditioners.h
│ │ │ │ │ ├── BiCGSTAB.h
│ │ │ │ │ ├── ConjugateGradient.h
│ │ │ │ │ ├── IncompleteCholesky.h
│ │ │ │ │ ├── IncompleteLUT.h
│ │ │ │ │ ├── IterativeSolverBase.h
│ │ │ │ │ ├── LeastSquareConjugateGradient.h
│ │ │ │ │ └── SolveWithGuess.h
│ │ │ │ │ ├── Jacobi
│ │ │ │ │ └── Jacobi.h
│ │ │ │ │ ├── KLUSupport
│ │ │ │ │ └── KLUSupport.h
│ │ │ │ │ ├── LU
│ │ │ │ │ ├── Determinant.h
│ │ │ │ │ ├── FullPivLU.h
│ │ │ │ │ ├── InverseImpl.h
│ │ │ │ │ ├── PartialPivLU.h
│ │ │ │ │ ├── PartialPivLU_LAPACKE.h
│ │ │ │ │ └── arch
│ │ │ │ │ │ └── InverseSize4.h
│ │ │ │ │ ├── MetisSupport
│ │ │ │ │ └── MetisSupport.h
│ │ │ │ │ ├── OrderingMethods
│ │ │ │ │ ├── Amd.h
│ │ │ │ │ ├── Eigen_Colamd.h
│ │ │ │ │ └── Ordering.h
│ │ │ │ │ ├── PaStiXSupport
│ │ │ │ │ └── PaStiXSupport.h
│ │ │ │ │ ├── PardisoSupport
│ │ │ │ │ └── PardisoSupport.h
│ │ │ │ │ ├── QR
│ │ │ │ │ ├── ColPivHouseholderQR.h
│ │ │ │ │ ├── ColPivHouseholderQR_LAPACKE.h
│ │ │ │ │ ├── CompleteOrthogonalDecomposition.h
│ │ │ │ │ ├── FullPivHouseholderQR.h
│ │ │ │ │ ├── HouseholderQR.h
│ │ │ │ │ └── HouseholderQR_LAPACKE.h
│ │ │ │ │ ├── SPQRSupport
│ │ │ │ │ └── SuiteSparseQRSupport.h
│ │ │ │ │ ├── SVD
│ │ │ │ │ ├── BDCSVD.h
│ │ │ │ │ ├── JacobiSVD.h
│ │ │ │ │ ├── JacobiSVD_LAPACKE.h
│ │ │ │ │ ├── SVDBase.h
│ │ │ │ │ └── UpperBidiagonalization.h
│ │ │ │ │ ├── SparseCholesky
│ │ │ │ │ ├── SimplicialCholesky.h
│ │ │ │ │ └── SimplicialCholesky_impl.h
│ │ │ │ │ ├── SparseCore
│ │ │ │ │ ├── AmbiVector.h
│ │ │ │ │ ├── CompressedStorage.h
│ │ │ │ │ ├── ConservativeSparseSparseProduct.h
│ │ │ │ │ ├── MappedSparseMatrix.h
│ │ │ │ │ ├── SparseAssign.h
│ │ │ │ │ ├── SparseBlock.h
│ │ │ │ │ ├── SparseColEtree.h
│ │ │ │ │ ├── SparseCompressedBase.h
│ │ │ │ │ ├── SparseCwiseBinaryOp.h
│ │ │ │ │ ├── SparseCwiseUnaryOp.h
│ │ │ │ │ ├── SparseDenseProduct.h
│ │ │ │ │ ├── SparseDiagonalProduct.h
│ │ │ │ │ ├── SparseDot.h
│ │ │ │ │ ├── SparseFuzzy.h
│ │ │ │ │ ├── SparseMap.h
│ │ │ │ │ ├── SparseMatrix.h
│ │ │ │ │ ├── SparseMatrixBase.h
│ │ │ │ │ ├── SparsePermutation.h
│ │ │ │ │ ├── SparseProduct.h
│ │ │ │ │ ├── SparseRedux.h
│ │ │ │ │ ├── SparseRef.h
│ │ │ │ │ ├── SparseSelfAdjointView.h
│ │ │ │ │ ├── SparseSolverBase.h
│ │ │ │ │ ├── SparseSparseProductWithPruning.h
│ │ │ │ │ ├── SparseTranspose.h
│ │ │ │ │ ├── SparseTriangularView.h
│ │ │ │ │ ├── SparseUtil.h
│ │ │ │ │ ├── SparseVector.h
│ │ │ │ │ ├── SparseView.h
│ │ │ │ │ └── TriangularSolver.h
│ │ │ │ │ ├── SparseLU
│ │ │ │ │ ├── SparseLU.h
│ │ │ │ │ ├── SparseLUImpl.h
│ │ │ │ │ ├── SparseLU_Memory.h
│ │ │ │ │ ├── SparseLU_Structs.h
│ │ │ │ │ ├── SparseLU_SupernodalMatrix.h
│ │ │ │ │ ├── SparseLU_Utils.h
│ │ │ │ │ ├── SparseLU_column_bmod.h
│ │ │ │ │ ├── SparseLU_column_dfs.h
│ │ │ │ │ ├── SparseLU_copy_to_ucol.h
│ │ │ │ │ ├── SparseLU_gemm_kernel.h
│ │ │ │ │ ├── SparseLU_heap_relax_snode.h
│ │ │ │ │ ├── SparseLU_kernel_bmod.h
│ │ │ │ │ ├── SparseLU_panel_bmod.h
│ │ │ │ │ ├── SparseLU_panel_dfs.h
│ │ │ │ │ ├── SparseLU_pivotL.h
│ │ │ │ │ ├── SparseLU_pruneL.h
│ │ │ │ │ └── SparseLU_relax_snode.h
│ │ │ │ │ ├── SparseQR
│ │ │ │ │ └── SparseQR.h
│ │ │ │ │ ├── StlSupport
│ │ │ │ │ ├── StdDeque.h
│ │ │ │ │ ├── StdList.h
│ │ │ │ │ ├── StdVector.h
│ │ │ │ │ └── details.h
│ │ │ │ │ ├── SuperLUSupport
│ │ │ │ │ └── SuperLUSupport.h
│ │ │ │ │ ├── UmfPackSupport
│ │ │ │ │ └── UmfPackSupport.h
│ │ │ │ │ ├── misc
│ │ │ │ │ ├── Image.h
│ │ │ │ │ ├── Kernel.h
│ │ │ │ │ ├── RealSvd2x2.h
│ │ │ │ │ ├── blas.h
│ │ │ │ │ ├── lapack.h
│ │ │ │ │ ├── lapacke.h
│ │ │ │ │ └── lapacke_mangling.h
│ │ │ │ │ └── plugins
│ │ │ │ │ ├── ArrayCwiseBinaryOps.h
│ │ │ │ │ ├── ArrayCwiseUnaryOps.h
│ │ │ │ │ ├── BlockMethods.h
│ │ │ │ │ ├── CommonCwiseBinaryOps.h
│ │ │ │ │ ├── CommonCwiseUnaryOps.h
│ │ │ │ │ ├── IndexedViewMethods.h
│ │ │ │ │ ├── MatrixCwiseBinaryOps.h
│ │ │ │ │ ├── MatrixCwiseUnaryOps.h
│ │ │ │ │ └── ReshapedMethods.h
│ │ │ ├── Estimator2001_Kalman.cpp
│ │ │ ├── Estimator2001_Kalman.h
│ │ │ ├── Estimator2002_UnscentedKalmanEstiamtor.cpp
│ │ │ └── Estimator2002_UnscentedKalmanEstiamtor.h
│ │ ├── EstimatorPortN.h
│ │ ├── Readme.md
│ │ ├── StateSpaceModel1.c
│ │ └── StateSpaceModel2.c
│ ├── Readme.md
│ ├── SensorBase.cpp
│ ├── SensorBase.h
│ ├── Sensor_IMU.cpp
│ ├── Sensor_IMU.h
│ ├── Sensor_Legs.cpp
│ └── Sensor_Legs.h
│ └── fusion_estimator_node.cpp
├── message_handle
├── message_handle
│ ├── __init__.py
│ ├── __pycache__
│ │ ├── __init__.cpython-310.pyc
│ │ ├── message_handle.cpython-310.pyc
│ │ ├── message_handle_node.cpython-310.pyc
│ │ └── pointcloud_to_laserscan_custom.cpython-310.pyc
│ └── message_handle_node.py
├── package.xml
├── resource
│ └── message_handle
├── setup.cfg
├── setup.py
└── test
│ ├── test_copyright.py
│ ├── test_flake8.py
│ └── test_pep257.py
├── other
├── Guide.yaml
├── PlotjugglerConf1.xml
├── SMXFE_odm.rviz
└── slam_params.yaml
└── sport_control
├── CMakeLists.txt
├── launch
├── camera_launch.py
├── g1_launch.py
├── go2_launch.py
├── nav_launch.py
├── rviz_launch.py
└── slam_launch.py
├── package.xml
└── src
└── sport_control_node.cpp
/.gitignore:
--------------------------------------------------------------------------------
1 | local_file/
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "src/fusion_estimator/src/GO2FusionEstimator"]
2 | path = src/fusion_estimator/src/GO2FusionEstimator
3 | url = https://github.com/ShineMinxing/GO2FusionEstimator.git
4 | [submodule "src/unitree_sdk2"]
5 | path = src/unitree_sdk2
6 | url = git@github.com:unitreerobotics/unitree_sdk2.git
7 | [submodule "unitree_sdk2"]
8 | path = unitree_sdk2
9 | url = git@github.com:unitreerobotics/unitree_sdk2.git
10 |
--------------------------------------------------------------------------------
/Readme.md:
--------------------------------------------------------------------------------
1 | # Ros2Go2Estimator 🦾
2 | [](LICENSE)
3 |
4 | - 一种高精度里程计解决方案,
5 | - 基于纯运动学的双足/四足机器人位置估计算法,目前仅使用IMU、足压力传感器、关节角度和角速度,不依赖相机或Lidar,但可将信号融合进去,进一步提高估计精度;
6 | - 使用config.yaml进行话题名称设置.
7 |
8 | ## 📚 补充说明
9 | - 切换两足、四足无需在估计器内做模式切换;
10 | - 目前没有调整参数做补偿,工程使用时可进一步提升精度;
11 | - dds_rostopic包将宇树dds提供的信息转换和发布为标准ros2话题;
12 | - fusion_estimator包发布对应“base_link”的话题SMX/Odom和对应“base_link_2D”的话题SMX/Odom_2D;
13 | - message_handle包完成SMX/Odom和SMX/Odom_2D的tf,此外,将frame“utlidar_lidar”的pointcloud2转换为“base_link_2D”话题SMX/Scan;
14 | - sport_control包读取joystick输入和其他指令,使用unitree_sdk2提供的接口控制机器狗;
15 | - 使用SLAM Toolbox建图时额外ros2 launch sport_control slam_launch.py;
16 | - 使用Nav2导航时额外ros2 launch sport_control nav_launch.py;
17 | - 使用Amov机架跟踪时额外ros2 launch sport_control g1_launch.py;
18 | - SLAM Toolbox目前是纯里程计建图,请擅长SLAM的同志自行把地图匹配加进去;
19 | - Nav2同样请自行调整,加载的地图记得改成自己的;
20 | - 也适用于Ubuntu20.04 foxy系统,把apt install的软件改为-foxy-即可;
21 |
22 | ## 🎥 视频演示
23 | ### 最新进展(点击图片进入视频)
24 | 纯里程计站立/四足切换建图效果
25 | [](https://www.bilibili.com/video/BV1UtQfYJExu)
26 |
27 | #### 实验记录
28 | 1. 站立行走误差1%,四足行走误差0.5%
29 | [](https://www.bilibili.com/video/BV18Q9JYEEdn/)
30 |
31 | 2. 爬楼梯高度误差小于5cm
32 | [](https://www.bilibili.com/video/BV1VV9ZYZEcH/)
33 |
34 | 3. 长距离测试,受磁场变化影响,380米运动偏差3.3%
35 | [](https://www.bilibili.com/video/BV1BhRAYDEsV/)
36 |
37 | 4. 语音控制机器狗,实现意图猜测和在预建地图导航。比如说“没有纸张了”,自动执行导航‘去仓库’
38 | [](https://www.bilibili.com/video/BV1HCQBYUEvk/)
39 | - 额外安装https://github.com/ShineMinxing/Ros2Chat
40 |
41 | 5. 机器狗与吊舱的协同光点/人脸跟踪
42 | [](https://www.bilibili.com/video/BV1faG1z3EFF/)
43 | - 额外安装https://github.com/ShineMinxing/Ros2ImageProcess.git,https://github.com/ShineMinxing/Ros2AmovG1.git
44 |
45 | ## ⚙️ 安装指南
46 |
47 | - Use Ubuntu 22.04, ROS2 Humble
48 | ```bash
49 | sudo apt install ros-humble-joy ros-humble-nav2-msgs ros-humble-slam-toolbox ros-humble-nav2-bringup python3-pip libopencv-dev ros-humble-cv-bridge ros-humble-image-transport ros-humble-compressed-image-transport
50 | mkdir -p ~/ros2_ws/LeggedRobot/src && cd ~/ros2_ws/LeggedRobot/src
51 | git clone --recursive https://github.com/ShineMinxing/Ros2Go2Estimator.git
52 | cd ..
53 | # 1. 搜索工程中的所有 /home/unitree/ros2_ws/LeggedRobot,替换为您的路径
54 | # 2. 把 src/Ros2Go2Estimator/config.yaml 中的所有 br0 替换为您的网卡名,如 enxf8e43b808e06
55 | colcon build
56 | ros2 launch sport_control go2_launch.py
57 | ```
58 | - 同时按下手柄的LT、RT,解锁/锁定手柄;按住RT+左摇杆进行移动;按住RT+右摇杆进行旋转;更多操作请看sport_control_node.cpp。
59 |
60 | ## 📄 相关文档
61 | - 核心算法原理: [技术文档](https://www.notion.so/Ros2Go2-1e3a3ea29e778044a4c9c35df4c27b22)
62 | - 历史项目参考: [Aliengo ROS1项目](https://github.com/ShineMinxing/FusionEstimation.git)
63 |
64 | ## 📧 联系我们
65 | ```
66 | 博士团队: 401435318@qq.com
67 | 研究所: 中国科学院光电技术研究所
68 | ```
69 |
70 | > 📌 注意:当前为开发预览版,完整文档正在编写中
71 | ``
--------------------------------------------------------------------------------
/config.yaml:
--------------------------------------------------------------------------------
1 | dds_rostopic_node:
2 | ros__parameters:
3 | # 网络接口
4 | network_interface: "wlp0s20f3"
5 |
6 | # ROS2 发布的话题名
7 | pub_imu_topic: "SMX/Go2IMU"
8 | pub_joint_topic: "SMX/Go2Joint"
9 | pub_cloud_topic: "SMX/Go2Lidar"
10 |
11 | # DDS 订阅的原始 topic
12 | dds_lowstate_topic: "rt/lowstate"
13 | dds_pointcloud_topic: "rt/utlidar/cloud"
14 |
15 | # GStreamer 拉流管线
16 | gst_pipeline: >
17 | udpsrc address=230.1.1.1 port=1720 multicast-iface=wlp0s20f3 !
18 | application/x-rtp, media=video, encoding-name=H264 !
19 | rtph264depay ! h264parse ! avdec_h264 !
20 | videoconvert ! video/x-raw,width=1280,height=720,format=BGR !
21 | appsink drop=1 sync=false
22 | pub_camera_topic: "SMX/Go2Camera"
23 | pub_camera_raw_enable: false
24 | pub_camera_compressed_enable: false
25 |
26 | fusion_estimator_node:
27 | ros__parameters:
28 |
29 | # 订阅Go2传感器Topic
30 | sub_imu_topic: "SMX/Go2IMU"
31 | sub_joint_topic: "SMX/Go2Joint"
32 |
33 | # 订阅复位/模式命令的 ROS2 Topic
34 | sub_mode_topic: "SMX/JoyStringCmd"
35 |
36 | # 发布融合结果的 Topic
37 | pub_estimation_topic: "SMX/Estimation"
38 |
39 | # 发布全 3D 里程计的 Topic
40 | pub_odom_topic: "SMX/Odom"
41 |
42 | # 发布平面里程计的 Topic
43 | pub_odom2d_topic: "SMX/Odom_2D"
44 |
45 | # Odometry 消息里的 frame_id
46 | odom_frame: "odom"
47 |
48 | # Odometry 消息里的 child_frame_id
49 | base_frame: "base_link"
50 | base_frame_2d: "base_link_2D"
51 |
52 | # URDF 文件路径(相对于 package 根目录)
53 | urdf_file: "cfg/go2_description.urdf"
54 |
55 | # 可在线调整的三轴补偿角,单位:度
56 | Modify_Par_1: 0.0
57 | Modify_Par_2: 0.0
58 | Modify_Par_3: 0.0
59 |
60 | message_handle_node:
61 | ros__parameters:
62 | # 订阅的 PointCloud2 话题
63 | sub_pointcloud_topic: "/SMX/Go2Lidar"
64 | # 发布的 LaserScan 话题
65 | pub_laserscan_topic: "/SMX/Scan"
66 |
67 | # 订阅的 3D 里程计话题(用于发布 odom→base_link TF)
68 | sub_odom_topic: "/SMX/Odom"
69 | # 订阅的 2D 里程计话题(用于发布 odom→base_link_2D TF)
70 | sub_odom2d_topic: "/SMX/Odom_2D"
71 |
72 | # LaserScan 参数
73 | angle_min: -1.5708 # -π/2
74 | angle_max: 1.5708 # π/2
75 | angle_increment: 0.0056
76 | range_min: 0.5
77 | range_max: 30.0
78 | min_height: 0.1
79 | max_height: 10.0
80 |
81 | # TF frames
82 | map_frame: "map"
83 | odom_frame: "odom"
84 | base_frame: "base_link"
85 | base_frame_2d: "base_link_2D"
86 | utlidar_frame: "utlidar_lidar"
87 |
88 | # 静态 TF 从 base_link 到 utlidar_lidar 的 translation + RPY
89 | static_tx: 0.28945
90 | static_ty: 0.0
91 | static_tz: -0.046825
92 | static_r: 0.0 # roll
93 | static_p: 2.8782 # pitch
94 | static_y: 0.0 # yaw
95 |
96 | sport_control_node:
97 | ros__parameters:
98 | # 网络接口
99 | network_interface: "wlp0s20f3"
100 |
101 | # 各个 ROS 话题名称
102 | joy_topic: "/joy"
103 | sport_cmd_topic: "SMX/SportCmd"
104 | guide_topic: "/cmd_vel"
105 | joy_string_cmd: "SMX/JoyStringCmd"
106 | joy_float_cmd: "SMX/JoyFloatCmd"
107 |
108 | # 导航目标 pose 的 frame_id(sendGoal 中用)
109 | map_frame_id: "map"
--------------------------------------------------------------------------------
/dds_rostopic/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | cmake_minimum_required(VERSION 3.5)
2 | project(dds_rostopic)
3 |
4 | # find dependencies
5 | find_package(ament_cmake REQUIRED)
6 | find_package(rclcpp REQUIRED)
7 | find_package(sensor_msgs REQUIRED)
8 | find_package(unitree_sdk2 REQUIRED)
9 | find_package(OpenCV REQUIRED)
10 | find_package(cv_bridge REQUIRED)
11 | find_package(PkgConfig REQUIRED)
12 | find_package(std_msgs REQUIRED)
13 | find_package(geometry_msgs REQUIRED)
14 | find_package(tf2 REQUIRED)
15 | find_package(tf2_ros REQUIRED)
16 | find_package(tf2_geometry_msgs REQUIRED)
17 | find_package(image_transport REQUIRED)
18 | find_package(compressed_image_transport REQUIRED)
19 |
20 | pkg_check_modules(GSTREAMER REQUIRED gstreamer-1.0)
21 | include_directories(${GSTREAMER_INCLUDE_DIRS})
22 | link_directories(${GSTREAMER_LIBRARY_DIRS})
23 |
24 | add_executable(dds_rostopic_node src/dds_rostopic_node.cpp)
25 |
26 | target_include_directories(dds_rostopic_node
27 | PRIVATE
28 | ${rclcpp_INCLUDE_DIRS}
29 | ${sensor_msgs_INCLUDE_DIRS}
30 | ${unitree_sdk2_INCLUDE_DIRS}
31 | )
32 |
33 | target_link_libraries(dds_rostopic_node
34 | ${ament_LIBRARIES}
35 | unitree_sdk2
36 | ddsc ddscxx
37 | tf2_ros::tf2_ros
38 | ${OpenCV_LIBRARIES}
39 | )
40 |
41 | ament_target_dependencies(dds_rostopic_node
42 | rclcpp
43 | sensor_msgs
44 | tf2_geometry_msgs
45 | unitree_sdk2
46 | OpenCV
47 | cv_bridge
48 | image_transport
49 | compressed_image_transport
50 | )
51 |
52 | install(TARGETS
53 | dds_rostopic_node
54 | DESTINATION lib/${PROJECT_NAME}
55 | )
56 |
57 | ament_package()
--------------------------------------------------------------------------------
/dds_rostopic/package.xml:
--------------------------------------------------------------------------------
1 |
2 | dds_rostopic
3 | 0.0.0
4 | TODO: Package description
5 |
6 | shine
7 | TODO: License declaration
8 |
9 | ament_cmake
10 | rclcpp
11 | sensor_msgs
12 | unitree_sdk2
13 | opencv4
14 | cv_bridge
15 | std_msgs
16 | geometry_msgs
17 | tf2
18 | tf2_ros
19 | tf2_geometry_msgs
20 | image_transport
21 | compressed_image_transport
22 | gstreamer
23 |
24 | ament_lint_auto
25 | ament_lint_common
26 |
27 |
28 | ament_cmake
29 |
30 |
31 |
--------------------------------------------------------------------------------
/fusion_estimator/CMakeLists.txt:
--------------------------------------------------------------------------------
1 | cmake_minimum_required(VERSION 3.5)
2 | set(CMAKE_CXX_STANDARD 17)
3 | set(CMAKE_CXX_STANDARD_REQUIRED ON)
4 |
5 | project(fusion_estimator)
6 |
7 | # 查找依赖
8 | find_package(ament_cmake REQUIRED)
9 | find_package(rclcpp REQUIRED)
10 | find_package(sensor_msgs REQUIRED)
11 | find_package(rosidl_default_generators REQUIRED)
12 | find_package(rosidl_cmake REQUIRED)
13 | find_package(builtin_interfaces REQUIRED)
14 | find_package(urdfdom_headers REQUIRED)
15 | find_package(urdfdom REQUIRED)
16 | find_package(nav_msgs REQUIRED)
17 | find_package(tf2 REQUIRED)
18 | find_package(tf2_geometry_msgs REQUIRED)
19 |
20 | # —— 后备实现 rosidl_get_typesupport_target ——
21 | if(NOT COMMAND rosidl_get_typesupport_target)
22 | function(rosidl_get_typesupport_target var generate_interfaces_target typesupport_name)
23 | # 检查基础目标是否存在
24 | if(NOT TARGET ${generate_interfaces_target})
25 | message(FATAL_ERROR
26 | "${generate_interfaces_target} is not a CMake target. "
27 | "Did you run rosidl_generate_interfaces() on the correct target?")
28 | endif()
29 | # typesupport 目标名就是 __
30 | set(output_target "${generate_interfaces_target}__${typesupport_name}")
31 | if(NOT TARGET ${output_target})
32 | message(FATAL_ERROR
33 | "Cannot find typesupport target: ${output_target}")
34 | endif()
35 | # 返回给调用者
36 | set(${var} "${output_target}" PARENT_SCOPE)
37 | endfunction()
38 | endif()
39 |
40 | # 生成消息接口
41 | rosidl_generate_interfaces(${PROJECT_NAME}
42 | "msg/FusionEstimatorTest.msg"
43 | DEPENDENCIES builtin_interfaces
44 | )
45 |
46 | # 获取 src/ 下的所有 .cpp 和 .c 源文件
47 | file(GLOB_RECURSE ESTIMATOR_SOURCES
48 | "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp"
49 | "${CMAKE_CURRENT_SOURCE_DIR}/src/*.c"
50 | )
51 |
52 | # 获取 C++ 类型支持目标
53 | rosidl_get_typesupport_target(
54 | cpp_typesupport_target
55 | ${PROJECT_NAME}
56 | "rosidl_typesupport_cpp"
57 | )
58 |
59 | # 创建可执行文件
60 | add_executable(fusion_estimator_node ${ESTIMATOR_SOURCES})
61 |
62 | # 包含目录
63 | target_include_directories(fusion_estimator_node PRIVATE
64 | ${rclcpp_INCLUDE_DIRS}
65 | ${sensor_msgs_INCLUDE_DIRS}
66 | ${CMAKE_CURRENT_BINARY_DIR}/rosidl_generator_cpp
67 | ${CMAKE_CURRENT_SOURCE_DIR}/src
68 | ${urdfdom_headers_INCLUDE_DIRS}
69 | ${urdfdom_INCLUDE_DIRS}
70 | )
71 |
72 | # 声明依赖
73 | ament_target_dependencies(fusion_estimator_node
74 | rclcpp
75 | sensor_msgs
76 | nav_msgs
77 | tf2
78 | tf2_geometry_msgs
79 | )
80 |
81 | # 链接库
82 | target_link_libraries(fusion_estimator_node
83 | ${ament_LIBRARIES}
84 | ${cpp_typesupport_target}
85 | ${urdfdom_LIBRARIES}
86 | )
87 |
88 | # 安装目标
89 | install(TARGETS fusion_estimator_node
90 | DESTINATION lib/${PROJECT_NAME}
91 | )
92 |
93 | # 导出依赖
94 | ament_export_dependencies(rosidl_default_runtime builtin_interfaces)
95 | ament_package()
96 |
--------------------------------------------------------------------------------
/fusion_estimator/msg/FusionEstimatorTest.msg:
--------------------------------------------------------------------------------
1 | builtin_interfaces/Time stamp
2 | float64[20] others
3 | float64[12] feet_based_position
4 | float64[12] feet_based_velocity
5 | float64[9] estimated_xyz
6 | float64[9] estimated_rpy
7 | float64[12] data_check_a
8 | float64[12] data_check_b
9 | float64[12] data_check_c
10 | float64[12] data_check_d
11 | float64[12] data_check_e
--------------------------------------------------------------------------------
/fusion_estimator/package.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | fusion_estimator
5 | 0.0.0
6 | sensor signal fusion estimation package
7 | Sun Minxing
8 | Apache-2.0
9 |
10 | ament_cmake
11 | rosidl_default_runtime
12 | rosidl_interface_packages
13 |
14 | rclcpp
15 | sensor_msgs
16 | unitree_sdk2
17 | builtin_interfaces
18 | urdfdom
19 | urdfdom_parser
20 | rosidl_cmake
21 | rosidl_default_generators
22 |
23 |
24 | ament_lint_auto
25 | ament_lint_common
26 |
27 |
28 | ament_cmake
29 |
30 |
31 |
--------------------------------------------------------------------------------
/fusion_estimator/src/GO2FusionEstimator/.gitignore:
--------------------------------------------------------------------------------
1 | fusion_estimator_node.cpp
2 |
--------------------------------------------------------------------------------
/fusion_estimator/src/GO2FusionEstimator/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "Estimator"]
2 | path = Estimator
3 | url = https://github.com/ShineMinxing/SMXFusionEstimator.git
4 |
--------------------------------------------------------------------------------
/fusion_estimator/src/GO2FusionEstimator/Estimator/Cpp_Estimators/Eigen/Cholesky:
--------------------------------------------------------------------------------
1 | // This file is part of Eigen, a lightweight C++ template library
2 | // for linear algebra.
3 | //
4 | // This Source Code Form is subject to the terms of the Mozilla
5 | // Public License v. 2.0. If a copy of the MPL was not distributed
6 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 |
8 | #ifndef EIGEN_CHOLESKY_MODULE_H
9 | #define EIGEN_CHOLESKY_MODULE_H
10 |
11 | #include "Core"
12 | #include "Jacobi"
13 |
14 | #include "src/Core/util/DisableStupidWarnings.h"
15 |
16 | /** \defgroup Cholesky_Module Cholesky module
17 | *
18 | *
19 | *
20 | * This module provides two variants of the Cholesky decomposition for selfadjoint (hermitian) matrices.
21 | * Those decompositions are also accessible via the following methods:
22 | * - MatrixBase::llt()
23 | * - MatrixBase::ldlt()
24 | * - SelfAdjointView::llt()
25 | * - SelfAdjointView::ldlt()
26 | *
27 | * \code
28 | * #include
29 | * \endcode
30 | */
31 |
32 | #include "src/Cholesky/LLT.h"
33 | #include "src/Cholesky/LDLT.h"
34 | #ifdef EIGEN_USE_LAPACKE
35 | #ifdef EIGEN_USE_MKL
36 | #include "mkl_lapacke.h"
37 | #else
38 | #include "src/misc/lapacke.h"
39 | #endif
40 | #include "src/Cholesky/LLT_LAPACKE.h"
41 | #endif
42 |
43 | #include "src/Core/util/ReenableStupidWarnings.h"
44 |
45 | #endif // EIGEN_CHOLESKY_MODULE_H
46 |
--------------------------------------------------------------------------------
/fusion_estimator/src/GO2FusionEstimator/Estimator/Cpp_Estimators/Eigen/CholmodSupport:
--------------------------------------------------------------------------------
1 | // This file is part of Eigen, a lightweight C++ template library
2 | // for linear algebra.
3 | //
4 | // This Source Code Form is subject to the terms of the Mozilla
5 | // Public License v. 2.0. If a copy of the MPL was not distributed
6 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 |
8 | #ifndef EIGEN_CHOLMODSUPPORT_MODULE_H
9 | #define EIGEN_CHOLMODSUPPORT_MODULE_H
10 |
11 | #include "SparseCore"
12 |
13 | #include "src/Core/util/DisableStupidWarnings.h"
14 |
15 | extern "C" {
16 | #include
17 | }
18 |
19 | /** \ingroup Support_modules
20 | * \defgroup CholmodSupport_Module CholmodSupport module
21 | *
22 | * This module provides an interface to the Cholmod library which is part of the suitesparse package.
23 | * It provides the two following main factorization classes:
24 | * - class CholmodSupernodalLLT: a supernodal LLT Cholesky factorization.
25 | * - class CholmodDecomposiiton: a general L(D)LT Cholesky factorization with automatic or explicit runtime selection of the underlying factorization method (supernodal or simplicial).
26 | *
27 | * For the sake of completeness, this module also propose the two following classes:
28 | * - class CholmodSimplicialLLT
29 | * - class CholmodSimplicialLDLT
30 | * Note that these classes does not bring any particular advantage compared to the built-in
31 | * SimplicialLLT and SimplicialLDLT factorization classes.
32 | *
33 | * \code
34 | * #include
35 | * \endcode
36 | *
37 | * In order to use this module, the cholmod headers must be accessible from the include paths, and your binary must be linked to the cholmod library and its dependencies.
38 | * The dependencies depend on how cholmod has been compiled.
39 | * For a cmake based project, you can use our FindCholmod.cmake module to help you in this task.
40 | *
41 | */
42 |
43 | #include "src/CholmodSupport/CholmodSupport.h"
44 |
45 | #include "src/Core/util/ReenableStupidWarnings.h"
46 |
47 | #endif // EIGEN_CHOLMODSUPPORT_MODULE_H
48 |
49 |
--------------------------------------------------------------------------------
/fusion_estimator/src/GO2FusionEstimator/Estimator/Cpp_Estimators/Eigen/Dense:
--------------------------------------------------------------------------------
1 | #include "Core"
2 | #include "LU"
3 | #include "Cholesky"
4 | #include "QR"
5 | #include "SVD"
6 | #include "Geometry"
7 | #include "Eigenvalues"
8 |
--------------------------------------------------------------------------------
/fusion_estimator/src/GO2FusionEstimator/Estimator/Cpp_Estimators/Eigen/Eigen:
--------------------------------------------------------------------------------
1 | #include "Dense"
2 | #include "Sparse"
3 |
--------------------------------------------------------------------------------
/fusion_estimator/src/GO2FusionEstimator/Estimator/Cpp_Estimators/Eigen/Eigenvalues:
--------------------------------------------------------------------------------
1 | // This file is part of Eigen, a lightweight C++ template library
2 | // for linear algebra.
3 | //
4 | // This Source Code Form is subject to the terms of the Mozilla
5 | // Public License v. 2.0. If a copy of the MPL was not distributed
6 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 |
8 | #ifndef EIGEN_EIGENVALUES_MODULE_H
9 | #define EIGEN_EIGENVALUES_MODULE_H
10 |
11 | #include "Core"
12 |
13 | #include "Cholesky"
14 | #include "Jacobi"
15 | #include "Householder"
16 | #include "LU"
17 | #include "Geometry"
18 |
19 | #include "src/Core/util/DisableStupidWarnings.h"
20 |
21 | /** \defgroup Eigenvalues_Module Eigenvalues module
22 | *
23 | *
24 | *
25 | * This module mainly provides various eigenvalue solvers.
26 | * This module also provides some MatrixBase methods, including:
27 | * - MatrixBase::eigenvalues(),
28 | * - MatrixBase::operatorNorm()
29 | *
30 | * \code
31 | * #include
32 | * \endcode
33 | */
34 |
35 | #include "src/misc/RealSvd2x2.h"
36 | #include "src/Eigenvalues/Tridiagonalization.h"
37 | #include "src/Eigenvalues/RealSchur.h"
38 | #include "src/Eigenvalues/EigenSolver.h"
39 | #include "src/Eigenvalues/SelfAdjointEigenSolver.h"
40 | #include "src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h"
41 | #include "src/Eigenvalues/HessenbergDecomposition.h"
42 | #include "src/Eigenvalues/ComplexSchur.h"
43 | #include "src/Eigenvalues/ComplexEigenSolver.h"
44 | #include "src/Eigenvalues/RealQZ.h"
45 | #include "src/Eigenvalues/GeneralizedEigenSolver.h"
46 | #include "src/Eigenvalues/MatrixBaseEigenvalues.h"
47 | #ifdef EIGEN_USE_LAPACKE
48 | #ifdef EIGEN_USE_MKL
49 | #include "mkl_lapacke.h"
50 | #else
51 | #include "src/misc/lapacke.h"
52 | #endif
53 | #include "src/Eigenvalues/RealSchur_LAPACKE.h"
54 | #include "src/Eigenvalues/ComplexSchur_LAPACKE.h"
55 | #include "src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h"
56 | #endif
57 |
58 | #include "src/Core/util/ReenableStupidWarnings.h"
59 |
60 | #endif // EIGEN_EIGENVALUES_MODULE_H
61 |
--------------------------------------------------------------------------------
/fusion_estimator/src/GO2FusionEstimator/Estimator/Cpp_Estimators/Eigen/Geometry:
--------------------------------------------------------------------------------
1 | // This file is part of Eigen, a lightweight C++ template library
2 | // for linear algebra.
3 | //
4 | // This Source Code Form is subject to the terms of the Mozilla
5 | // Public License v. 2.0. If a copy of the MPL was not distributed
6 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 |
8 | #ifndef EIGEN_GEOMETRY_MODULE_H
9 | #define EIGEN_GEOMETRY_MODULE_H
10 |
11 | #include "Core"
12 |
13 | #include "SVD"
14 | #include "LU"
15 | #include
16 |
17 | #include "src/Core/util/DisableStupidWarnings.h"
18 |
19 | /** \defgroup Geometry_Module Geometry module
20 | *
21 | * This module provides support for:
22 | * - fixed-size homogeneous transformations
23 | * - translation, scaling, 2D and 3D rotations
24 | * - \link Quaternion quaternions \endlink
25 | * - cross products (\ref MatrixBase::cross, \ref MatrixBase::cross3)
26 | * - orthognal vector generation (\ref MatrixBase::unitOrthogonal)
27 | * - some linear components: \link ParametrizedLine parametrized-lines \endlink and \link Hyperplane hyperplanes \endlink
28 | * - \link AlignedBox axis aligned bounding boxes \endlink
29 | * - \link umeyama least-square transformation fitting \endlink
30 | *
31 | * \code
32 | * #include
33 | * \endcode
34 | */
35 |
36 | #include "src/Geometry/OrthoMethods.h"
37 | #include "src/Geometry/EulerAngles.h"
38 |
39 | #include "src/Geometry/Homogeneous.h"
40 | #include "src/Geometry/RotationBase.h"
41 | #include "src/Geometry/Rotation2D.h"
42 | #include "src/Geometry/Quaternion.h"
43 | #include "src/Geometry/AngleAxis.h"
44 | #include "src/Geometry/Transform.h"
45 | #include "src/Geometry/Translation.h"
46 | #include "src/Geometry/Scaling.h"
47 | #include "src/Geometry/Hyperplane.h"
48 | #include "src/Geometry/ParametrizedLine.h"
49 | #include "src/Geometry/AlignedBox.h"
50 | #include "src/Geometry/Umeyama.h"
51 |
52 | // Use the SSE optimized version whenever possible.
53 | #if (defined EIGEN_VECTORIZE_SSE) || (defined EIGEN_VECTORIZE_NEON)
54 | #include "src/Geometry/arch/Geometry_SIMD.h"
55 | #endif
56 |
57 | #include "src/Core/util/ReenableStupidWarnings.h"
58 |
59 | #endif // EIGEN_GEOMETRY_MODULE_H
60 |
--------------------------------------------------------------------------------
/fusion_estimator/src/GO2FusionEstimator/Estimator/Cpp_Estimators/Eigen/Householder:
--------------------------------------------------------------------------------
1 | // This file is part of Eigen, a lightweight C++ template library
2 | // for linear algebra.
3 | //
4 | // This Source Code Form is subject to the terms of the Mozilla
5 | // Public License v. 2.0. If a copy of the MPL was not distributed
6 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 |
8 | #ifndef EIGEN_HOUSEHOLDER_MODULE_H
9 | #define EIGEN_HOUSEHOLDER_MODULE_H
10 |
11 | #include "Core"
12 |
13 | #include "src/Core/util/DisableStupidWarnings.h"
14 |
15 | /** \defgroup Householder_Module Householder module
16 | * This module provides Householder transformations.
17 | *
18 | * \code
19 | * #include
20 | * \endcode
21 | */
22 |
23 | #include "src/Householder/Householder.h"
24 | #include "src/Householder/HouseholderSequence.h"
25 | #include "src/Householder/BlockHouseholder.h"
26 |
27 | #include "src/Core/util/ReenableStupidWarnings.h"
28 |
29 | #endif // EIGEN_HOUSEHOLDER_MODULE_H
30 |
--------------------------------------------------------------------------------
/fusion_estimator/src/GO2FusionEstimator/Estimator/Cpp_Estimators/Eigen/IterativeLinearSolvers:
--------------------------------------------------------------------------------
1 | // This file is part of Eigen, a lightweight C++ template library
2 | // for linear algebra.
3 | //
4 | // This Source Code Form is subject to the terms of the Mozilla
5 | // Public License v. 2.0. If a copy of the MPL was not distributed
6 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 |
8 | #ifndef EIGEN_ITERATIVELINEARSOLVERS_MODULE_H
9 | #define EIGEN_ITERATIVELINEARSOLVERS_MODULE_H
10 |
11 | #include "SparseCore"
12 | #include "OrderingMethods"
13 |
14 | #include "src/Core/util/DisableStupidWarnings.h"
15 |
16 | /**
17 | * \defgroup IterativeLinearSolvers_Module IterativeLinearSolvers module
18 | *
19 | * This module currently provides iterative methods to solve problems of the form \c A \c x = \c b, where \c A is a squared matrix, usually very large and sparse.
20 | * Those solvers are accessible via the following classes:
21 | * - ConjugateGradient for selfadjoint (hermitian) matrices,
22 | * - LeastSquaresConjugateGradient for rectangular least-square problems,
23 | * - BiCGSTAB for general square matrices.
24 | *
25 | * These iterative solvers are associated with some preconditioners:
26 | * - IdentityPreconditioner - not really useful
27 | * - DiagonalPreconditioner - also called Jacobi preconditioner, work very well on diagonal dominant matrices.
28 | * - IncompleteLUT - incomplete LU factorization with dual thresholding
29 | *
30 | * Such problems can also be solved using the direct sparse decomposition modules: SparseCholesky, CholmodSupport, UmfPackSupport, SuperLUSupport.
31 | *
32 | \code
33 | #include
34 | \endcode
35 | */
36 |
37 | #include "src/IterativeLinearSolvers/SolveWithGuess.h"
38 | #include "src/IterativeLinearSolvers/IterativeSolverBase.h"
39 | #include "src/IterativeLinearSolvers/BasicPreconditioners.h"
40 | #include "src/IterativeLinearSolvers/ConjugateGradient.h"
41 | #include "src/IterativeLinearSolvers/LeastSquareConjugateGradient.h"
42 | #include "src/IterativeLinearSolvers/BiCGSTAB.h"
43 | #include "src/IterativeLinearSolvers/IncompleteLUT.h"
44 | #include "src/IterativeLinearSolvers/IncompleteCholesky.h"
45 |
46 | #include "src/Core/util/ReenableStupidWarnings.h"
47 |
48 | #endif // EIGEN_ITERATIVELINEARSOLVERS_MODULE_H
49 |
--------------------------------------------------------------------------------
/fusion_estimator/src/GO2FusionEstimator/Estimator/Cpp_Estimators/Eigen/Jacobi:
--------------------------------------------------------------------------------
1 | // This file is part of Eigen, a lightweight C++ template library
2 | // for linear algebra.
3 | //
4 | // This Source Code Form is subject to the terms of the Mozilla
5 | // Public License v. 2.0. If a copy of the MPL was not distributed
6 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 |
8 | #ifndef EIGEN_JACOBI_MODULE_H
9 | #define EIGEN_JACOBI_MODULE_H
10 |
11 | #include "Core"
12 |
13 | #include "src/Core/util/DisableStupidWarnings.h"
14 |
15 | /** \defgroup Jacobi_Module Jacobi module
16 | * This module provides Jacobi and Givens rotations.
17 | *
18 | * \code
19 | * #include
20 | * \endcode
21 | *
22 | * In addition to listed classes, it defines the two following MatrixBase methods to apply a Jacobi or Givens rotation:
23 | * - MatrixBase::applyOnTheLeft()
24 | * - MatrixBase::applyOnTheRight().
25 | */
26 |
27 | #include "src/Jacobi/Jacobi.h"
28 |
29 | #include "src/Core/util/ReenableStupidWarnings.h"
30 |
31 | #endif // EIGEN_JACOBI_MODULE_H
32 |
33 |
--------------------------------------------------------------------------------
/fusion_estimator/src/GO2FusionEstimator/Estimator/Cpp_Estimators/Eigen/KLUSupport:
--------------------------------------------------------------------------------
1 | // This file is part of Eigen, a lightweight C++ template library
2 | // for linear algebra.
3 | //
4 | // This Source Code Form is subject to the terms of the Mozilla
5 | // Public License v. 2.0. If a copy of the MPL was not distributed
6 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 |
8 | #ifndef EIGEN_KLUSUPPORT_MODULE_H
9 | #define EIGEN_KLUSUPPORT_MODULE_H
10 |
11 | #include
12 |
13 | #include
14 |
15 | extern "C" {
16 | #include
17 | #include
18 | }
19 |
20 | /** \ingroup Support_modules
21 | * \defgroup KLUSupport_Module KLUSupport module
22 | *
23 | * This module provides an interface to the KLU library which is part of the suitesparse package.
24 | * It provides the following factorization class:
25 | * - class KLU: a sparse LU factorization, well-suited for circuit simulation.
26 | *
27 | * \code
28 | * #include
29 | * \endcode
30 | *
31 | * In order to use this module, the klu and btf headers must be accessible from the include paths, and your binary must be linked to the klu library and its dependencies.
32 | * The dependencies depend on how umfpack has been compiled.
33 | * For a cmake based project, you can use our FindKLU.cmake module to help you in this task.
34 | *
35 | */
36 |
37 | #include "src/KLUSupport/KLUSupport.h"
38 |
39 | #include
40 |
41 | #endif // EIGEN_KLUSUPPORT_MODULE_H
42 |
--------------------------------------------------------------------------------
/fusion_estimator/src/GO2FusionEstimator/Estimator/Cpp_Estimators/Eigen/LU:
--------------------------------------------------------------------------------
1 | // This file is part of Eigen, a lightweight C++ template library
2 | // for linear algebra.
3 | //
4 | // This Source Code Form is subject to the terms of the Mozilla
5 | // Public License v. 2.0. If a copy of the MPL was not distributed
6 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 |
8 | #ifndef EIGEN_LU_MODULE_H
9 | #define EIGEN_LU_MODULE_H
10 |
11 | #include "Core"
12 |
13 | #include "src/Core/util/DisableStupidWarnings.h"
14 |
15 | /** \defgroup LU_Module LU module
16 | * This module includes %LU decomposition and related notions such as matrix inversion and determinant.
17 | * This module defines the following MatrixBase methods:
18 | * - MatrixBase::inverse()
19 | * - MatrixBase::determinant()
20 | *
21 | * \code
22 | * #include
23 | * \endcode
24 | */
25 |
26 | #include "src/misc/Kernel.h"
27 | #include "src/misc/Image.h"
28 | #include "src/LU/FullPivLU.h"
29 | #include "src/LU/PartialPivLU.h"
30 | #ifdef EIGEN_USE_LAPACKE
31 | #ifdef EIGEN_USE_MKL
32 | #include "mkl_lapacke.h"
33 | #else
34 | #include "src/misc/lapacke.h"
35 | #endif
36 | #include "src/LU/PartialPivLU_LAPACKE.h"
37 | #endif
38 | #include "src/LU/Determinant.h"
39 | #include "src/LU/InverseImpl.h"
40 |
41 | #if defined EIGEN_VECTORIZE_SSE || defined EIGEN_VECTORIZE_NEON
42 | #include "src/LU/arch/InverseSize4.h"
43 | #endif
44 |
45 | #include "src/Core/util/ReenableStupidWarnings.h"
46 |
47 | #endif // EIGEN_LU_MODULE_H
48 |
--------------------------------------------------------------------------------
/fusion_estimator/src/GO2FusionEstimator/Estimator/Cpp_Estimators/Eigen/MetisSupport:
--------------------------------------------------------------------------------
1 | // This file is part of Eigen, a lightweight C++ template library
2 | // for linear algebra.
3 | //
4 | // This Source Code Form is subject to the terms of the Mozilla
5 | // Public License v. 2.0. If a copy of the MPL was not distributed
6 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 |
8 | #ifndef EIGEN_METISSUPPORT_MODULE_H
9 | #define EIGEN_METISSUPPORT_MODULE_H
10 |
11 | #include "SparseCore"
12 |
13 | #include "src/Core/util/DisableStupidWarnings.h"
14 |
15 | extern "C" {
16 | #include
17 | }
18 |
19 |
20 | /** \ingroup Support_modules
21 | * \defgroup MetisSupport_Module MetisSupport module
22 | *
23 | * \code
24 | * #include
25 | * \endcode
26 | * This module defines an interface to the METIS reordering package (http://glaros.dtc.umn.edu/gkhome/views/metis).
27 | * It can be used just as any other built-in method as explained in \link OrderingMethods_Module here. \endlink
28 | */
29 |
30 |
31 | #include "src/MetisSupport/MetisSupport.h"
32 |
33 | #include "src/Core/util/ReenableStupidWarnings.h"
34 |
35 | #endif // EIGEN_METISSUPPORT_MODULE_H
36 |
--------------------------------------------------------------------------------
/fusion_estimator/src/GO2FusionEstimator/Estimator/Cpp_Estimators/Eigen/OrderingMethods:
--------------------------------------------------------------------------------
1 | // This file is part of Eigen, a lightweight C++ template library
2 | // for linear algebra.
3 | //
4 | // This Source Code Form is subject to the terms of the Mozilla
5 | // Public License v. 2.0. If a copy of the MPL was not distributed
6 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 |
8 | #ifndef EIGEN_ORDERINGMETHODS_MODULE_H
9 | #define EIGEN_ORDERINGMETHODS_MODULE_H
10 |
11 | #include "SparseCore"
12 |
13 | #include "src/Core/util/DisableStupidWarnings.h"
14 |
15 | /**
16 | * \defgroup OrderingMethods_Module OrderingMethods module
17 | *
18 | * This module is currently for internal use only
19 | *
20 | * It defines various built-in and external ordering methods for sparse matrices.
21 | * They are typically used to reduce the number of elements during
22 | * the sparse matrix decomposition (LLT, LU, QR).
23 | * Precisely, in a preprocessing step, a permutation matrix P is computed using
24 | * those ordering methods and applied to the columns of the matrix.
25 | * Using for instance the sparse Cholesky decomposition, it is expected that
26 | * the nonzeros elements in LLT(A*P) will be much smaller than that in LLT(A).
27 | *
28 | *
29 | * Usage :
30 | * \code
31 | * #include
32 | * \endcode
33 | *
34 | * A simple usage is as a template parameter in the sparse decomposition classes :
35 | *
36 | * \code
37 | * SparseLU > solver;
38 | * \endcode
39 | *
40 | * \code
41 | * SparseQR > solver;
42 | * \endcode
43 | *
44 | * It is possible as well to call directly a particular ordering method for your own purpose,
45 | * \code
46 | * AMDOrdering ordering;
47 | * PermutationMatrix perm;
48 | * SparseMatrix A;
49 | * //Fill the matrix ...
50 | *
51 | * ordering(A, perm); // Call AMD
52 | * \endcode
53 | *
54 | * \note Some of these methods (like AMD or METIS), need the sparsity pattern
55 | * of the input matrix to be symmetric. When the matrix is structurally unsymmetric,
56 | * Eigen computes internally the pattern of \f$A^T*A\f$ before calling the method.
57 | * If your matrix is already symmetric (at leat in structure), you can avoid that
58 | * by calling the method with a SelfAdjointView type.
59 | *
60 | * \code
61 | * // Call the ordering on the pattern of the lower triangular matrix A
62 | * ordering(A.selfadjointView(), perm);
63 | * \endcode
64 | */
65 |
66 | #include "src/OrderingMethods/Amd.h"
67 | #include "src/OrderingMethods/Ordering.h"
68 | #include "src/Core/util/ReenableStupidWarnings.h"
69 |
70 | #endif // EIGEN_ORDERINGMETHODS_MODULE_H
71 |
--------------------------------------------------------------------------------
/fusion_estimator/src/GO2FusionEstimator/Estimator/Cpp_Estimators/Eigen/PaStiXSupport:
--------------------------------------------------------------------------------
1 | // This file is part of Eigen, a lightweight C++ template library
2 | // for linear algebra.
3 | //
4 | // This Source Code Form is subject to the terms of the Mozilla
5 | // Public License v. 2.0. If a copy of the MPL was not distributed
6 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 |
8 | #ifndef EIGEN_PASTIXSUPPORT_MODULE_H
9 | #define EIGEN_PASTIXSUPPORT_MODULE_H
10 |
11 | #include "SparseCore"
12 |
13 | #include "src/Core/util/DisableStupidWarnings.h"
14 |
15 | extern "C" {
16 | #include
17 | #include
18 | }
19 |
20 | #ifdef complex
21 | #undef complex
22 | #endif
23 |
24 | /** \ingroup Support_modules
25 | * \defgroup PaStiXSupport_Module PaStiXSupport module
26 | *
27 | * This module provides an interface to the PaSTiX library.
28 | * PaSTiX is a general \b supernodal, \b parallel and \b opensource sparse solver.
29 | * It provides the two following main factorization classes:
30 | * - class PastixLLT : a supernodal, parallel LLt Cholesky factorization.
31 | * - class PastixLDLT: a supernodal, parallel LDLt Cholesky factorization.
32 | * - class PastixLU : a supernodal, parallel LU factorization (optimized for a symmetric pattern).
33 | *
34 | * \code
35 | * #include
36 | * \endcode
37 | *
38 | * In order to use this module, the PaSTiX headers must be accessible from the include paths, and your binary must be linked to the PaSTiX library and its dependencies.
39 | * This wrapper resuires PaStiX version 5.x compiled without MPI support.
40 | * The dependencies depend on how PaSTiX has been compiled.
41 | * For a cmake based project, you can use our FindPaSTiX.cmake module to help you in this task.
42 | *
43 | */
44 |
45 | #include "src/PaStiXSupport/PaStiXSupport.h"
46 |
47 | #include "src/Core/util/ReenableStupidWarnings.h"
48 |
49 | #endif // EIGEN_PASTIXSUPPORT_MODULE_H
50 |
--------------------------------------------------------------------------------
/fusion_estimator/src/GO2FusionEstimator/Estimator/Cpp_Estimators/Eigen/PardisoSupport:
--------------------------------------------------------------------------------
1 | // This file is part of Eigen, a lightweight C++ template library
2 | // for linear algebra.
3 | //
4 | // This Source Code Form is subject to the terms of the Mozilla
5 | // Public License v. 2.0. If a copy of the MPL was not distributed
6 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 |
8 | #ifndef EIGEN_PARDISOSUPPORT_MODULE_H
9 | #define EIGEN_PARDISOSUPPORT_MODULE_H
10 |
11 | #include "SparseCore"
12 |
13 | #include "src/Core/util/DisableStupidWarnings.h"
14 |
15 | #include
16 |
17 | /** \ingroup Support_modules
18 | * \defgroup PardisoSupport_Module PardisoSupport module
19 | *
20 | * This module brings support for the Intel(R) MKL PARDISO direct sparse solvers.
21 | *
22 | * \code
23 | * #include
24 | * \endcode
25 | *
26 | * In order to use this module, the MKL headers must be accessible from the include paths, and your binary must be linked to the MKL library and its dependencies.
27 | * See this \ref TopicUsingIntelMKL "page" for more information on MKL-Eigen integration.
28 | *
29 | */
30 |
31 | #include "src/PardisoSupport/PardisoSupport.h"
32 |
33 | #include "src/Core/util/ReenableStupidWarnings.h"
34 |
35 | #endif // EIGEN_PARDISOSUPPORT_MODULE_H
36 |
--------------------------------------------------------------------------------
/fusion_estimator/src/GO2FusionEstimator/Estimator/Cpp_Estimators/Eigen/QR:
--------------------------------------------------------------------------------
1 | // This file is part of Eigen, a lightweight C++ template library
2 | // for linear algebra.
3 | //
4 | // This Source Code Form is subject to the terms of the Mozilla
5 | // Public License v. 2.0. If a copy of the MPL was not distributed
6 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 |
8 | #ifndef EIGEN_QR_MODULE_H
9 | #define EIGEN_QR_MODULE_H
10 |
11 | #include "Core"
12 |
13 | #include "Cholesky"
14 | #include "Jacobi"
15 | #include "Householder"
16 |
17 | #include "src/Core/util/DisableStupidWarnings.h"
18 |
19 | /** \defgroup QR_Module QR module
20 | *
21 | *
22 | *
23 | * This module provides various QR decompositions
24 | * This module also provides some MatrixBase methods, including:
25 | * - MatrixBase::householderQr()
26 | * - MatrixBase::colPivHouseholderQr()
27 | * - MatrixBase::fullPivHouseholderQr()
28 | *
29 | * \code
30 | * #include
31 | * \endcode
32 | */
33 |
34 | #include "src/QR/HouseholderQR.h"
35 | #include "src/QR/FullPivHouseholderQR.h"
36 | #include "src/QR/ColPivHouseholderQR.h"
37 | #include "src/QR/CompleteOrthogonalDecomposition.h"
38 | #ifdef EIGEN_USE_LAPACKE
39 | #ifdef EIGEN_USE_MKL
40 | #include "mkl_lapacke.h"
41 | #else
42 | #include "src/misc/lapacke.h"
43 | #endif
44 | #include "src/QR/HouseholderQR_LAPACKE.h"
45 | #include "src/QR/ColPivHouseholderQR_LAPACKE.h"
46 | #endif
47 |
48 | #include "src/Core/util/ReenableStupidWarnings.h"
49 |
50 | #endif // EIGEN_QR_MODULE_H
51 |
--------------------------------------------------------------------------------
/fusion_estimator/src/GO2FusionEstimator/Estimator/Cpp_Estimators/Eigen/QtAlignedMalloc:
--------------------------------------------------------------------------------
1 | // This file is part of Eigen, a lightweight C++ template library
2 | // for linear algebra.
3 | //
4 | // This Source Code Form is subject to the terms of the Mozilla
5 | // Public License v. 2.0. If a copy of the MPL was not distributed
6 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 |
8 | #ifndef EIGEN_QTMALLOC_MODULE_H
9 | #define EIGEN_QTMALLOC_MODULE_H
10 |
11 | #include "Core"
12 |
13 | #if (!EIGEN_MALLOC_ALREADY_ALIGNED)
14 |
15 | #include "src/Core/util/DisableStupidWarnings.h"
16 |
17 | void *qMalloc(std::size_t size)
18 | {
19 | return Eigen::internal::aligned_malloc(size);
20 | }
21 |
22 | void qFree(void *ptr)
23 | {
24 | Eigen::internal::aligned_free(ptr);
25 | }
26 |
27 | void *qRealloc(void *ptr, std::size_t size)
28 | {
29 | void* newPtr = Eigen::internal::aligned_malloc(size);
30 | std::memcpy(newPtr, ptr, size);
31 | Eigen::internal::aligned_free(ptr);
32 | return newPtr;
33 | }
34 |
35 | #include "src/Core/util/ReenableStupidWarnings.h"
36 |
37 | #endif
38 |
39 | #endif // EIGEN_QTMALLOC_MODULE_H
40 |
--------------------------------------------------------------------------------
/fusion_estimator/src/GO2FusionEstimator/Estimator/Cpp_Estimators/Eigen/SPQRSupport:
--------------------------------------------------------------------------------
1 | // This file is part of Eigen, a lightweight C++ template library
2 | // for linear algebra.
3 | //
4 | // This Source Code Form is subject to the terms of the Mozilla
5 | // Public License v. 2.0. If a copy of the MPL was not distributed
6 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 |
8 | #ifndef EIGEN_SPQRSUPPORT_MODULE_H
9 | #define EIGEN_SPQRSUPPORT_MODULE_H
10 |
11 | #include "SparseCore"
12 |
13 | #include "src/Core/util/DisableStupidWarnings.h"
14 |
15 | #include "SuiteSparseQR.hpp"
16 |
17 | /** \ingroup Support_modules
18 | * \defgroup SPQRSupport_Module SuiteSparseQR module
19 | *
20 | * This module provides an interface to the SPQR library, which is part of the suitesparse package.
21 | *
22 | * \code
23 | * #include
24 | * \endcode
25 | *
26 | * In order to use this module, the SPQR headers must be accessible from the include paths, and your binary must be linked to the SPQR library and its dependencies (Cholmod, AMD, COLAMD,...).
27 | * For a cmake based project, you can use our FindSPQR.cmake and FindCholmod.Cmake modules
28 | *
29 | */
30 |
31 | #include "src/CholmodSupport/CholmodSupport.h"
32 | #include "src/SPQRSupport/SuiteSparseQRSupport.h"
33 |
34 | #endif
35 |
--------------------------------------------------------------------------------
/fusion_estimator/src/GO2FusionEstimator/Estimator/Cpp_Estimators/Eigen/SVD:
--------------------------------------------------------------------------------
1 | // This file is part of Eigen, a lightweight C++ template library
2 | // for linear algebra.
3 | //
4 | // This Source Code Form is subject to the terms of the Mozilla
5 | // Public License v. 2.0. If a copy of the MPL was not distributed
6 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 |
8 | #ifndef EIGEN_SVD_MODULE_H
9 | #define EIGEN_SVD_MODULE_H
10 |
11 | #include "QR"
12 | #include "Householder"
13 | #include "Jacobi"
14 |
15 | #include "src/Core/util/DisableStupidWarnings.h"
16 |
17 | /** \defgroup SVD_Module SVD module
18 | *
19 | *
20 | *
21 | * This module provides SVD decomposition for matrices (both real and complex).
22 | * Two decomposition algorithms are provided:
23 | * - JacobiSVD implementing two-sided Jacobi iterations is numerically very accurate, fast for small matrices, but very slow for larger ones.
24 | * - BDCSVD implementing a recursive divide & conquer strategy on top of an upper-bidiagonalization which remains fast for large problems.
25 | * These decompositions are accessible via the respective classes and following MatrixBase methods:
26 | * - MatrixBase::jacobiSvd()
27 | * - MatrixBase::bdcSvd()
28 | *
29 | * \code
30 | * #include
31 | * \endcode
32 | */
33 |
34 | #include "src/misc/RealSvd2x2.h"
35 | #include "src/SVD/UpperBidiagonalization.h"
36 | #include "src/SVD/SVDBase.h"
37 | #include "src/SVD/JacobiSVD.h"
38 | #include "src/SVD/BDCSVD.h"
39 | #if defined(EIGEN_USE_LAPACKE) && !defined(EIGEN_USE_LAPACKE_STRICT)
40 | #ifdef EIGEN_USE_MKL
41 | #include "mkl_lapacke.h"
42 | #else
43 | #include "src/misc/lapacke.h"
44 | #endif
45 | #include "src/SVD/JacobiSVD_LAPACKE.h"
46 | #endif
47 |
48 | #include "src/Core/util/ReenableStupidWarnings.h"
49 |
50 | #endif // EIGEN_SVD_MODULE_H
51 |
--------------------------------------------------------------------------------
/fusion_estimator/src/GO2FusionEstimator/Estimator/Cpp_Estimators/Eigen/Sparse:
--------------------------------------------------------------------------------
1 | // This file is part of Eigen, a lightweight C++ template library
2 | // for linear algebra.
3 | //
4 | // This Source Code Form is subject to the terms of the Mozilla
5 | // Public License v. 2.0. If a copy of the MPL was not distributed
6 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 |
8 | #ifndef EIGEN_SPARSE_MODULE_H
9 | #define EIGEN_SPARSE_MODULE_H
10 |
11 | /** \defgroup Sparse_Module Sparse meta-module
12 | *
13 | * Meta-module including all related modules:
14 | * - \ref SparseCore_Module
15 | * - \ref OrderingMethods_Module
16 | * - \ref SparseCholesky_Module
17 | * - \ref SparseLU_Module
18 | * - \ref SparseQR_Module
19 | * - \ref IterativeLinearSolvers_Module
20 | *
21 | \code
22 | #include
23 | \endcode
24 | */
25 |
26 | #include "SparseCore"
27 | #include "OrderingMethods"
28 | #include "SparseCholesky"
29 | #include "SparseLU"
30 | #include "SparseQR"
31 | #include "IterativeLinearSolvers"
32 |
33 | #endif // EIGEN_SPARSE_MODULE_H
34 |
35 |
--------------------------------------------------------------------------------
/fusion_estimator/src/GO2FusionEstimator/Estimator/Cpp_Estimators/Eigen/SparseCholesky:
--------------------------------------------------------------------------------
1 | // This file is part of Eigen, a lightweight C++ template library
2 | // for linear algebra.
3 | //
4 | // Copyright (C) 2008-2013 Gael Guennebaud
5 | //
6 | // This Source Code Form is subject to the terms of the Mozilla
7 | // Public License v. 2.0. If a copy of the MPL was not distributed
8 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 |
10 | #ifndef EIGEN_SPARSECHOLESKY_MODULE_H
11 | #define EIGEN_SPARSECHOLESKY_MODULE_H
12 |
13 | #include "SparseCore"
14 | #include "OrderingMethods"
15 |
16 | #include "src/Core/util/DisableStupidWarnings.h"
17 |
18 | /**
19 | * \defgroup SparseCholesky_Module SparseCholesky module
20 | *
21 | * This module currently provides two variants of the direct sparse Cholesky decomposition for selfadjoint (hermitian) matrices.
22 | * Those decompositions are accessible via the following classes:
23 | * - SimplicialLLt,
24 | * - SimplicialLDLt
25 | *
26 | * Such problems can also be solved using the ConjugateGradient solver from the IterativeLinearSolvers module.
27 | *
28 | * \code
29 | * #include
30 | * \endcode
31 | */
32 |
33 | #include "src/SparseCholesky/SimplicialCholesky.h"
34 | #include "src/SparseCholesky/SimplicialCholesky_impl.h"
35 | #include "src/Core/util/ReenableStupidWarnings.h"
36 |
37 | #endif // EIGEN_SPARSECHOLESKY_MODULE_H
38 |
--------------------------------------------------------------------------------
/fusion_estimator/src/GO2FusionEstimator/Estimator/Cpp_Estimators/Eigen/SparseCore:
--------------------------------------------------------------------------------
1 | // This file is part of Eigen, a lightweight C++ template library
2 | // for linear algebra.
3 | //
4 | // This Source Code Form is subject to the terms of the Mozilla
5 | // Public License v. 2.0. If a copy of the MPL was not distributed
6 | // with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
7 |
8 | #ifndef EIGEN_SPARSECORE_MODULE_H
9 | #define EIGEN_SPARSECORE_MODULE_H
10 |
11 | #include "Core"
12 |
13 | #include "src/Core/util/DisableStupidWarnings.h"
14 |
15 | #include
16 | #include