SaDVIO
Functions
isae::geometry Namespace Reference

Functions

template<typename Derived >
Eigen::Matrix3d skewMatrix (const Eigen::MatrixBase< Derived > &w)
 Computes the skew matrix of a given 3D vector. More...
 
Eigen::Vector3d FromskewMatrix (const Eigen::Matrix3d &skew)
 Computes the 3D vector from a given skew matrix. More...
 
Eigen::Matrix3d so3_rightJacobian (const Eigen::Vector3d &w)
 Compute the right jacobian on SO(3) manifold. More...
 
Eigen::Matrix3d so3_leftJacobian (const Eigen::Vector3d &w)
 Compute the left jacobian on SO(3) manifold. More...
 
Eigen::Vector3d rotationMatrixToEulerAnglesEigen (Eigen::Matrix3d R)
 Compute the Euler angle representation of a rotation matrix. More...
 
Eigen::Matrix3d xFront2zFront ()
 Rotation matrix that rotates a right handed frame with X front to a frame with Z front. More...
 
Eigen::Matrix3d zFront2xFront ()
 Rotation matrix that rotates a right handed frame with Z front to a frame with X front. More...
 
Eigen::Matrix3d xRight2xFront ()
 Rotation matrix that rotates a right handed frame with X right to a frame with X front. More...
 
Eigen::Matrix3d directionVector2Rotation (Eigen::Vector3d v, const Eigen::Vector3d &reference_vector=Eigen::Vector3d(1, 0, 0))
 Gives the rotation matrix from a direction vector. More...
 
Eigen::Vector3d Rotation2directionVector (const Eigen::Matrix3d &R, const Eigen::Vector3d &reference_vector=Eigen::Vector3d(1, 0, 0))
 Gives the direction vector from a rotation matrix. More...
 
Eigen::Matrix3d exp_so3 (const Eigen::Vector3d &v)
 Compute the exponential of the SO(3) manifold. More...
 
Eigen::Vector3d log_so3 (const Eigen::Matrix3d &M)
 Compute the logarithm of the SO(3) manifold. More...
 
Vector6d se3_RTtoVec6d (Eigen::Affine3d RT)
 Compute the logarithm of the SO(3)xT(3) composite manifold. More...
 
Eigen::Affine3d se3_Vec6dtoRT (Vector6d pose)
 Compute the Exponential of the SO(3)xT(3) composite manifold. More...
 
Eigen::Affine3d se3_doubleVec6dtoRT (const double *pose)
 Compute the Exponential of the SO(3)xT(3) composite manifold from a double*. More...
 
Eigen::Affine3d se3_doubleVec3dtoRT (const double *p3d)
 Turns a point 3d in double* into an Affine3d with Id rotation. More...
 
template<typename T >
Eigen::Transform< T, 3, 4 > se3_doubleVec6dtoRT (const T *pose)
 Compute the logarithm of the SO(3)xT(3) composite manifold from a double*. More...
 
double getAngle (Eigen::Vector3d p, Eigen::Vector3d p1, Eigen::Vector3d p2)
 Get the angle formed by the segments p-p1 and p-p2. More...
 
template<typename Derived = Eigen::VectorXd>
bool pointInTriangle (Derived pt, std::vector< Derived > triangle)
 Check if a point is in a triangle with the barycentric technique. More...
 
Eigen::Matrix2d cov2dTriangle (std::vector< Eigen::Vector2d > triangle)
 Computes the covariance of a 2D triangle according to CGAL library. More...
 
double areaTriangle (std::vector< Eigen::Vector2d > triangle)
 Compute the area of a 2D triangle. More...
 
Eigen::MatrixXd J_norm (Eigen::Vector3d X)
 
Eigen::Matrix3d J_normalization (Eigen::Vector3d X)
 
Eigen::Matrix3d J_XcrossA (Eigen::Vector3d A)
 
Eigen::Matrix3d J_AcrossX (Eigen::Vector3d A)
 
Eigen::Matrix3d J_Rexpwt (Eigen::Matrix3d R, Eigen::Matrix3d expw, Eigen::Vector3d t)
 

Function Documentation

◆ areaTriangle()

double isae::geometry::areaTriangle ( std::vector< Eigen::Vector2d >  triangle)
inline

Compute the area of a 2D triangle.

◆ cov2dTriangle()

Eigen::Matrix2d isae::geometry::cov2dTriangle ( std::vector< Eigen::Vector2d >  triangle)
inline

Computes the covariance of a 2D triangle according to CGAL library.

Source "Principal Component Analysis in CGAL" Gupta et al

◆ directionVector2Rotation()

Eigen::Matrix3d isae::geometry::directionVector2Rotation ( Eigen::Vector3d  v,
const Eigen::Vector3d &  reference_vector = Eigen::Vector3d(1, 0, 0) 
)
inline

Gives the rotation matrix from a direction vector.

◆ exp_so3()

Eigen::Matrix3d isae::geometry::exp_so3 ( const Eigen::Vector3d &  v)
inline

Compute the exponential of the SO(3) manifold.

From "A micro Lie theory for state estimation in robotics" Solà et al Source https://arxiv.org/abs/1812.01537

◆ FromskewMatrix()

Eigen::Vector3d isae::geometry::FromskewMatrix ( const Eigen::Matrix3d &  skew)
inline

Computes the 3D vector from a given skew matrix.

◆ getAngle()

double isae::geometry::getAngle ( Eigen::Vector3d  p,
Eigen::Vector3d  p1,
Eigen::Vector3d  p2 
)
inline

Get the angle formed by the segments p-p1 and p-p2.

◆ J_AcrossX()

Eigen::Matrix3d isae::geometry::J_AcrossX ( Eigen::Vector3d  A)
inline

◆ J_norm()

Eigen::MatrixXd isae::geometry::J_norm ( Eigen::Vector3d  X)
inline

◆ J_normalization()

Eigen::Matrix3d isae::geometry::J_normalization ( Eigen::Vector3d  X)
inline

◆ J_Rexpwt()

Eigen::Matrix3d isae::geometry::J_Rexpwt ( Eigen::Matrix3d  R,
Eigen::Matrix3d  expw,
Eigen::Vector3d  t 
)
inline

◆ J_XcrossA()

Eigen::Matrix3d isae::geometry::J_XcrossA ( Eigen::Vector3d  A)
inline

◆ log_so3()

Eigen::Vector3d isae::geometry::log_so3 ( const Eigen::Matrix3d &  M)
inline

Compute the logarithm of the SO(3) manifold.

From "A micro Lie theory for state estimation in robotics" Solà et al Source https://arxiv.org/abs/1812.01537

◆ pointInTriangle()

template<typename Derived = Eigen::VectorXd>
bool isae::geometry::pointInTriangle ( Derived  pt,
std::vector< Derived >  triangle 
)
inline

Check if a point is in a triangle with the barycentric technique.

Source https://blackpawn.com/texts/pointinpoly/

◆ Rotation2directionVector()

Eigen::Vector3d isae::geometry::Rotation2directionVector ( const Eigen::Matrix3d &  R,
const Eigen::Vector3d &  reference_vector = Eigen::Vector3d(1, 0, 0) 
)
inline

Gives the direction vector from a rotation matrix.

◆ rotationMatrixToEulerAnglesEigen()

Eigen::Vector3d isae::geometry::rotationMatrixToEulerAnglesEigen ( Eigen::Matrix3d  R)
inline

Compute the Euler angle representation of a rotation matrix.

◆ se3_doubleVec3dtoRT()

Eigen::Affine3d isae::geometry::se3_doubleVec3dtoRT ( const double *  p3d)
inline

Turns a point 3d in double* into an Affine3d with Id rotation.

◆ se3_doubleVec6dtoRT() [1/2]

Eigen::Affine3d isae::geometry::se3_doubleVec6dtoRT ( const double *  pose)
inline

Compute the Exponential of the SO(3)xT(3) composite manifold from a double*.

From "A micro Lie theory for state estimation in robotics" Solà et al Source https://arxiv.org/abs/1812.01537

◆ se3_doubleVec6dtoRT() [2/2]

template<typename T >
Eigen::Transform<T, 3, 4> isae::geometry::se3_doubleVec6dtoRT ( const T *  pose)
inline

Compute the logarithm of the SO(3)xT(3) composite manifold from a double*.

From "A micro Lie theory for state estimation in robotics" Solà et al Source https://arxiv.org/abs/1812.01537

◆ se3_RTtoVec6d()

Vector6d isae::geometry::se3_RTtoVec6d ( Eigen::Affine3d  RT)
inline

Compute the logarithm of the SO(3)xT(3) composite manifold.

From "A micro Lie theory for state estimation in robotics" Solà et al Source https://arxiv.org/abs/1812.01537

◆ se3_Vec6dtoRT()

Eigen::Affine3d isae::geometry::se3_Vec6dtoRT ( Vector6d  pose)
inline

Compute the Exponential of the SO(3)xT(3) composite manifold.

From "A micro Lie theory for state estimation in robotics" Solà et al Source https://arxiv.org/abs/1812.01537

◆ skewMatrix()

template<typename Derived >
Eigen::Matrix3d isae::geometry::skewMatrix ( const Eigen::MatrixBase< Derived > &  w)
inline

Computes the skew matrix of a given 3D vector.

◆ so3_leftJacobian()

Eigen::Matrix3d isae::geometry::so3_leftJacobian ( const Eigen::Vector3d &  w)
inline

Compute the left jacobian on SO(3) manifold.

From "A micro Lie theory for state estimation in robotics" Solà et al Source https://arxiv.org/abs/1812.01537

◆ so3_rightJacobian()

Eigen::Matrix3d isae::geometry::so3_rightJacobian ( const Eigen::Vector3d &  w)
inline

Compute the right jacobian on SO(3) manifold.

From "A micro Lie theory for state estimation in robotics" Solà et al Source https://arxiv.org/abs/1812.01537

◆ xFront2zFront()

Eigen::Matrix3d isae::geometry::xFront2zFront ( )
inline

Rotation matrix that rotates a right handed frame with X front to a frame with Z front.

◆ xRight2xFront()

Eigen::Matrix3d isae::geometry::xRight2xFront ( )
inline

Rotation matrix that rotates a right handed frame with X right to a frame with X front.

◆ zFront2xFront()

Eigen::Matrix3d isae::geometry::zFront2xFront ( )
inline

Rotation matrix that rotates a right handed frame with Z front to a frame with X front.