17 #include <Eigen/Dense>    48     pose.getAs12Vector(v);
    61     tang2mat_jacob J = tang2mat_jacob::Zero();
    62     J.block<3, 3>(9, 0) = Eigen::Matrix3d::Identity();
    74     J(0, 9) = J(1, 10) = J(2, 11) = 1.0;
    83     jacob.
block<9, 3>(0, 0).setZero();
    84     jacob.
block<3, 3>(9, 0).setIdentity();
    85     for (
int i = 0; i < 3; i++)
    87         auto trg_blc = jacob.
block<3, 3>(3 * i, 3);
    92         auto trg_blc = jacob.
block<3, 3>(9, 3);
   105     jacob.
block<3, 3>(9, 0) = dRot.asEigen();
   107     jacob.
block<3, 1>(3, 5) = -dRot.col(0);
   108     jacob.
block<3, 1>(6, 4) = dRot.col(0);
   110     jacob.
block<3, 1>(0, 5) = dRot.col(1);
   111     jacob.
block<3, 1>(6, 3) = -dRot.col(1);
   113     jacob.
block<3, 1>(0, 4) = -dRot.col(2);
   114     jacob.
block<3, 1>(3, 3) = dRot.col(2);
   123     const auto& Arot = 
A.getRotationMatrix();
   126     jacob.
block<9, 3>(0, 0).setZero();
   127     jacob.
block<3, 3>(9, 0) = 
A.getRotationMatrix().asEigen();
   129     for (
int i = 0; i < 3; i++)
   133         jacob.
block<3, 3>(3 * i, 3) = Arot.asEigen() * aux;
   136     jacob.
block<3, 3>(9, 3) = Arot.asEigen() * aux;
   149     const CPose3D DinvP1invP2 = Dinv + P1inv + P2;
   160         matrix_TxT& J1 = df_de1.value().get();
   166         J1 = dLnT_dT.asEigen() * J1a.
asEigen() * J1b.asEigen();
   170         matrix_TxT& J2 = df_de2.value().get();
   172         J2 = dLnT_dT * dAe_de;
   181     matrix_MxM J = matrix_MxM::Zero();
   185     for (
int c = 0; c < 4; c++)
   186         for (
int r = 0; r < 4; r++)
   187             for (
int q = 0; q < 3; q++) J(r * 3 + q, c * 3 + q) = B_HM(r, c);
   195     matrix_MxM J = matrix_MxM::Zero();
   197     const auto& AR = 
A.getRotationMatrix();
   198     for (
int c = 0; c < 4; c++) J.block<3, 3>(c * 3, c * 3) = AR.asEigen();
   239     const auto bx = B.x(), by = B.y();
   240     const auto cphia = 
A.phi_cos(), sphia = 
A.phi_sin();
   242     matrix_MxM J = matrix_MxM::Identity();
   243     J(0, 2) = -bx * sphia - by * cphia;
   244     J(1, 2) = +bx * cphia - by * sphia;
   251     matrix_MxM J = matrix_MxM::Identity();
   252     const auto cphia = 
A.phi_cos(), sphia = 
A.phi_sin();
   262     const auto c = D.phi_cos(), s = D.phi_sin();
   279     const CPose2D P1invP2 = P1inv + P2;
   280     const CPose2D DinvP1invP2 = Dinv + P1invP2;
   284         auto& J1 = df_de1.value().get();
   285         J1 = jacob_dAB_dA(Dinv, P1invP2).asEigen() * (-jacob_dDexpe_de(Dinv));
   290         auto& J2 = df_de2.value().get();
 A compile-time fixed-size numeric matrix container. 
 
mrpt::math::CVectorFixedDouble< 3 > m_coords
The translation vector [x,y,z] access directly or with x(), y(), z() setter/getter methods...
 
std::optional< std::reference_wrapper< T > > optional_ref
Shorter name for std::optional<std::reference_wrapper<T>> 
 
void skew_symmetric3_neg(const VECTOR &v, MATRIX &M)
Computes the negative version of a 3x3 skew symmetric matrix from a 3-vector or 3-array: ...
 
This base provides a set of functions for maths stuff. 
 
auto block(int start_row, int start_col)
non-const block(): Returns an Eigen::Block reference to the block 
 
CMatrixFixed< double, 12, 6 > CMatrixDouble12_6
 
T wrapToPi(T a)
Modifies the given angle to translate it into the ]-pi,pi] range. 
 
Classes for 2D/3D geometry representation, both of single values and probability density distribution...
 
Traits for SE(n), rigid-body transformations in R^n space. 
 
This is the global namespace for all Mobile Robot Programming Toolkit (MRPT) libraries. 
 
A class used to store a 2D pose, including the 2D coordinate point and a heading (phi) angle...
 
A class used to store a 3D pose (a 3D translation + a rotation in 3D). 
 
EIGEN_MAP asEigen()
Get as an Eigen-compatible Eigen::Map object. 
 
void getRotationMatrix(mrpt::math::CMatrixDouble33 &ROT) const
Get the 3x3 rotation matrix. 
 
Traits for SO(n), rotations in R^n space.