29 #ifndef HECTOR_POSE_ESTIMATION_EIGEN_MATRIXBASE_PLUGIN 30 #define HECTOR_POSE_ESTIMATION_EIGEN_MATRIXBASE_PLUGIN 32 #ifndef EIGEN_MATRIXBASE_PLUGIN 33 #define EIGEN_MATRIXBASE_PLUGIN <hector_pose_estimation/Eigen/MatrixBaseAddons.h> 36 #else // HECTOR_POSE_ESTIMATION_EIGEN_MATRIXBASE_PLUGIN 38 Derived& setSymmetric() {
39 EIGEN_STATIC_ASSERT((RowsAtCompileTime == ColsAtCompileTime) ||
40 (RowsAtCompileTime == Dynamic) ||
41 (ColsAtCompileTime == Dynamic),
42 THIS_METHOD_IS_ONLY_FOR_MATRICES_OF_A_SPECIFIC_SIZE);
43 *
this = (*
this + this->transpose()) / Scalar(2);
47 Derived& assertSymmetric() {
48 EIGEN_STATIC_ASSERT((RowsAtCompileTime == ColsAtCompileTime) ||
49 (RowsAtCompileTime == Dynamic) ||
50 (ColsAtCompileTime == Dynamic),
51 THIS_METHOD_IS_ONLY_FOR_MATRICES_OF_A_SPECIFIC_SIZE);
52 #if defined(ASSERT_SYMMETRIC_MATRIX_TO_BE_SYMMETRIC) 53 eigen_assert(this->isApprox(this->transpose(), ASSERT_SYMMETRIC_MATRIX_TO_BE_SYMMETRIC_PRECISION));
55 #if defined(FORCE_SYMMETRIC_MATRIX_TO_BE_SYMMETRIC) 56 return setSymmetric();
62 Derived symmetric()
const {
63 EIGEN_STATIC_ASSERT((RowsAtCompileTime == ColsAtCompileTime) ||
64 (RowsAtCompileTime == Dynamic) ||
65 (ColsAtCompileTime == Dynamic),
66 THIS_METHOD_IS_ONLY_FOR_MATRICES_OF_A_SPECIFIC_SIZE);
67 return (*
this + this->transpose()) / Scalar(2);
70 #endif // HECTOR_POSE_ESTIMATION_EIGEN_MATRIXBASE_PLUGIN