Representation for a 3D pose (6 degrees of freedom). More...
#include <pose3d_eigen2.hpp>
Public Types | |
typedef ecl::linear_algebra::Matrix < Float, 3, 3 > | RotationMatrix |
The type used to represent rotation matrices. | |
typedef ecl::linear_algebra::Matrix < Float, 3, 3 > | RotationMatrix |
The type used to represent rotation matrices. | |
typedef ecl::linear_algebra::Matrix < Float, 3, 1 > | Translation |
The type used to represent translations. | |
typedef ecl::linear_algebra::Matrix < Float, 3, 1 > | Translation |
The type used to represent translations. | |
Public Member Functions | |
Pose3D< Float > | inverse () const |
Calculate the inverse pose. | |
Pose3D< Float > | inverse () const |
Calculate the inverse pose. | |
template<typename Float_ > | |
Pose3D< Float > | operator* (const Pose3D< Float_ > &pose) const |
Combine this pose with the incoming pose. | |
template<typename Float_ > | |
Pose3D< Float > | operator* (const Pose3D< Float_ > &pose) const |
Combine this pose with the incoming pose. | |
template<typename Float_ > | |
Pose3D< Float > & | operator*= (const Pose3D< Float_ > &pose) |
Transform this pose by the specified input pose. | |
template<typename Float_ > | |
Pose3D< Float > & | operator*= (const Pose3D< Float_ > &pose) |
Transform this pose by the specified input pose. | |
template<enum Pose2DStorageType Storage_> | |
Pose3D< Float > & | operator= (const Pose2D< Float, Storage_ > &pose) |
Assign from another Pose2D instance. | |
template<enum Pose2DStorageType Storage_> | |
Pose3D< Float > & | operator= (const Pose2D< Float, Storage_ > &pose) |
Assign from another Pose2D instance. | |
Pose3D< Float > & | operator= (const Pose3D< Float > &pose) |
Assign from another Pose2D instance. | |
Pose3D< Float > & | operator= (const Pose3D< Float > &pose) |
Assign from another Pose2D instance. | |
Pose3D () | |
Initialise with zero rotation and zero translation. | |
Pose3D () | |
Initialise with zero rotation and zero translation. | |
template<typename Rot , typename Trans > | |
Pose3D (const ecl::linear_algebra::MatrixBase< Rot > &rotation, const ecl::linear_algebra::MatrixBase< Trans > &translation) | |
Initialise with rotation matrix and translation. | |
template<typename Rot , typename Trans > | |
Pose3D (const ecl::linear_algebra::EigenBase< Rot > &rotation, const ecl::linear_algebra::EigenBase< Trans > &translation) | |
Initialise with rotation matrix and translation. | |
template<enum Pose2DStorageType Storage_> | |
Pose3D (const Pose2D< Float, Storage_ > &pose) | |
Initialise from a 2D pose. | |
template<enum Pose2DStorageType Storage_> | |
Pose3D (const Pose2D< Float, Storage_ > &pose) | |
Initialise from a 2D pose. | |
template<typename Trans > | |
Pose3D (const ecl::linear_algebra::AngleAxis< Float > &angle_axis, const ecl::linear_algebra::MatrixBase< Trans > &translation) | |
Initialise from an eigen AngleAxis and a translation. | |
template<typename Trans > | |
Pose3D (const ecl::linear_algebra::AngleAxis< Float > &angle_axis, const ecl::linear_algebra::MatrixBase< Trans > &translation) | |
Initialise from an eigen AngleAxis and a translation. | |
template<typename Trans > | |
Pose3D (const ecl::linear_algebra::Quaternion< Float > &quaternion, const ecl::linear_algebra::MatrixBase< Trans > &translation) | |
Initialise from an eigen Quaternion and a translation. | |
template<typename Trans > | |
Pose3D (const ecl::linear_algebra::Quaternion< Float > &quaternion, const ecl::linear_algebra::MatrixBase< Trans > &translation) | |
Initialise from an eigen Quaternion and a translation. | |
Pose3D (const Pose3D< Float > &pose) | |
Copy constructor for 3d poses. | |
Pose3D (const Pose3D< Float > &pose) | |
Copy constructor for 3d poses. | |
template<typename Float_ > | |
Pose3D< Float > | relative (const Pose3D< Float_ > &pose) const |
Relative pose between this pose and another. | |
template<typename Float_ > | |
Pose3D< Float > | relative (const Pose3D< Float_ > &pose) const |
Relative pose between this pose and another. | |
void | rotation (const RotationMatrix &rotation) |
Set the rotational component. | |
void | rotation (const RotationMatrix &rotation) |
Set the rotational component. | |
RotationMatrix & | rotation () |
RotationMatrix & | rotation () |
const RotationMatrix & | rotation () const |
Return a mutable handle to the translation vector. | |
const RotationMatrix & | rotation () const |
Return a mutable handle to the translation vector. | |
RotationMatrix | rotationMatrix () const |
Return a const handle to the translation vector. | |
RotationMatrix | rotationMatrix () const |
Return a const handle to the translation vector. | |
template<typename Trans > | |
void | translation (const ecl::linear_algebra::MatrixBase< Trans > &translation) |
Set the translation vector. | |
template<typename Trans > | |
void | translation (const ecl::linear_algebra::MatrixBase< Trans > &translation) |
Set the translation vector. | |
Translation & | translation () |
Return a mutable handle to the rotational storage component. | |
Translation & | translation () |
Return a mutable handle to the rotational storage component. | |
const Translation & | translation () const |
Return a const handle to the rotational storage component. | |
const Translation & | translation () const |
Return a const handle to the rotational storage component. | |
virtual | ~Pose3D () |
virtual | ~Pose3D () |
Public Attributes | |
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef Float | Scalar |
Eigen style declaration of the element type. | |
Private Attributes | |
RotationMatrix | rot |
Translation | trans |
Friends | |
template<typename OutputStream , typename Float_ > | |
OutputStream & | operator<< (OutputStream &ostream, const Pose3D< Float_ > &pose) |
Insertion operator for output streams. | |
template<typename OutputStream , typename Float_ > | |
OutputStream & | operator<< (OutputStream &ostream, const Pose3D< Float_ > &pose) |
Insertion operator for output streams. |
Representation for a 3D pose (6 degrees of freedom).
This represents a transformation typical of that of an object in 3D, that is, it has 3 translational degrees of freedom and 3 rotational degrees of freedom. Default storage type for rotations is the rotation matrix. We may think about a quaternion storage type in the future.
Float | : must be a float type (e.g. float, double, float32, float64) |
Definition at line 55 of file pose3d_eigen2.hpp.
typedef ecl::linear_algebra::Matrix<Float,3,3> ecl::Pose3D< Float, enable_if< is_float< Float > >::type >::RotationMatrix |
The type used to represent rotation matrices.
Definition at line 66 of file pose3d_eigen2.hpp.
typedef ecl::linear_algebra::Matrix<Float,3,3> ecl::Pose3D< Float, enable_if< is_float< Float > >::type >::RotationMatrix |
The type used to represent rotation matrices.
Definition at line 66 of file pose3d_eigen3.hpp.
typedef ecl::linear_algebra::Matrix<Float,3,1> ecl::Pose3D< Float, enable_if< is_float< Float > >::type >::Translation |
The type used to represent translations.
Definition at line 67 of file pose3d_eigen3.hpp.
typedef ecl::linear_algebra::Matrix<Float,3,1> ecl::Pose3D< Float, enable_if< is_float< Float > >::type >::Translation |
The type used to represent translations.
Definition at line 67 of file pose3d_eigen2.hpp.
ecl::Pose3D< Float, enable_if< is_float< Float > >::type >::Pose3D | ( | ) | [inline] |
Initialise with zero rotation and zero translation.
Definition at line 75 of file pose3d_eigen2.hpp.
ecl::Pose3D< Float, enable_if< is_float< Float > >::type >::Pose3D | ( | const ecl::linear_algebra::MatrixBase< Rot > & | rotation, |
const ecl::linear_algebra::MatrixBase< Trans > & | translation | ||
) | [inline] |
Initialise with rotation matrix and translation.
This accepts arbitrary eigen types to use as a rotation matrix and translation vector.
rotation | : 3x3 rotation matrix. |
translation | : 3x1 translation vector (will compile error if incorrect size). |
Rot | : any compatible eigen 3x3 matrix type (e.g. Matrix<Float,3,3>). |
Trans | : any compatible eigen 3x1 matrix type (e.g. Matrix<Float,3,1>). |
Definition at line 89 of file pose3d_eigen2.hpp.
ecl::Pose3D< Float, enable_if< is_float< Float > >::type >::Pose3D | ( | const Pose2D< Float, Storage_ > & | pose | ) | [inline] |
Initialise from a 2D pose.
Essentially converts the 2D pose to a 3D pose, note that any 2D pose object will do.
pose | : the 2d pose. |
Definition at line 102 of file pose3d_eigen2.hpp.
ecl::Pose3D< Float, enable_if< is_float< Float > >::type >::Pose3D | ( | const ecl::linear_algebra::AngleAxis< Float > & | angle_axis, |
const ecl::linear_algebra::MatrixBase< Trans > & | translation | ||
) | [inline] |
Initialise from an eigen AngleAxis and a translation.
angle_axis | : a 3d vector and scalar angle object from eigen. |
translation | : 3x1 translation vector (will compile error if incorrect size). |
Trans | : any compatible eigen 3x1 matrix type (e.g. Matrix<Float,3,1>). |
Definition at line 118 of file pose3d_eigen2.hpp.
ecl::Pose3D< Float, enable_if< is_float< Float > >::type >::Pose3D | ( | const ecl::linear_algebra::Quaternion< Float > & | quaternion, |
const ecl::linear_algebra::MatrixBase< Trans > & | translation | ||
) | [inline] |
Initialise from an eigen Quaternion and a translation.
quaternion | : an eigen quaternion object. |
translation | : 3x1 translation vector (will compile error if incorrect size). |
Trans | : any compatible eigen 3x1 matrix type (e.g. Matrix<Float,3,1>). |
Definition at line 132 of file pose3d_eigen2.hpp.
ecl::Pose3D< Float, enable_if< is_float< Float > >::type >::Pose3D | ( | const Pose3D< Float > & | pose | ) | [inline] |
Copy constructor for 3d poses.
pose | : the pose to be copied. |
Definition at line 141 of file pose3d_eigen2.hpp.
virtual ecl::Pose3D< Float, enable_if< is_float< Float > >::type >::~Pose3D | ( | ) | [inline, virtual] |
Definition at line 146 of file pose3d_eigen2.hpp.
ecl::Pose3D< Float, enable_if< is_float< Float > >::type >::Pose3D | ( | ) | [inline] |
Initialise with zero rotation and zero translation.
Definition at line 75 of file pose3d_eigen3.hpp.
ecl::Pose3D< Float, enable_if< is_float< Float > >::type >::Pose3D | ( | const ecl::linear_algebra::EigenBase< Rot > & | rotation, |
const ecl::linear_algebra::EigenBase< Trans > & | translation | ||
) | [inline] |
Initialise with rotation matrix and translation.
This accepts arbitrary eigen types to use as a rotation matrix and translation vector.
rotation | : 3x3 rotation matrix. |
translation | : 3x1 translation vector (will compile error if incorrect size). |
Rot | : any compatible eigen 3x3 matrix type (e.g. Matrix<Float,3,3>). |
Trans | : any compatible eigen 3x1 matrix type (e.g. Matrix<Float,3,1>). |
Definition at line 90 of file pose3d_eigen3.hpp.
ecl::Pose3D< Float, enable_if< is_float< Float > >::type >::Pose3D | ( | const Pose2D< Float, Storage_ > & | pose | ) | [inline] |
Initialise from a 2D pose.
Essentially converts the 2D pose to a 3D pose, note that any 2D pose object will do.
pose | : the 2d pose. |
Definition at line 102 of file pose3d_eigen3.hpp.
ecl::Pose3D< Float, enable_if< is_float< Float > >::type >::Pose3D | ( | const ecl::linear_algebra::AngleAxis< Float > & | angle_axis, |
const ecl::linear_algebra::MatrixBase< Trans > & | translation | ||
) | [inline] |
Initialise from an eigen AngleAxis and a translation.
angle_axis | : a 3d vector and scalar angle object from eigen. |
translation | : 3x1 translation vector (will compile error if incorrect size). |
Trans | : any compatible eigen 3x1 matrix type (e.g. Matrix<Float,3,1>). |
Definition at line 118 of file pose3d_eigen3.hpp.
ecl::Pose3D< Float, enable_if< is_float< Float > >::type >::Pose3D | ( | const ecl::linear_algebra::Quaternion< Float > & | quaternion, |
const ecl::linear_algebra::MatrixBase< Trans > & | translation | ||
) | [inline] |
Initialise from an eigen Quaternion and a translation.
quaternion | : an eigen quaternion object. |
translation | : 3x1 translation vector (will compile error if incorrect size). |
Trans | : any compatible eigen 3x1 matrix type (e.g. Matrix<Float,3,1>). |
Definition at line 132 of file pose3d_eigen3.hpp.
ecl::Pose3D< Float, enable_if< is_float< Float > >::type >::Pose3D | ( | const Pose3D< Float > & | pose | ) | [inline] |
Copy constructor for 3d poses.
pose | : the pose to be copied. |
Definition at line 141 of file pose3d_eigen3.hpp.
virtual ecl::Pose3D< Float, enable_if< is_float< Float > >::type >::~Pose3D | ( | ) | [inline, virtual] |
Definition at line 146 of file pose3d_eigen3.hpp.
Pose3D<Float> ecl::Pose3D< Float, enable_if< is_float< Float > >::type >::inverse | ( | ) | const [inline] |
Calculate the inverse pose.
This calculates the reverse transformation between frames.
Definition at line 235 of file pose3d_eigen2.hpp.
Pose3D<Float> ecl::Pose3D< Float, enable_if< is_float< Float > >::type >::inverse | ( | ) | const [inline] |
Calculate the inverse pose.
This calculates the reverse transformation between frames.
Definition at line 235 of file pose3d_eigen3.hpp.
Pose3D<Float> ecl::Pose3D< Float, enable_if< is_float< Float > >::type >::operator* | ( | const Pose3D< Float_ > & | pose | ) | const [inline] |
Combine this pose with the incoming pose.
pose | : differential (wrt this pose's frame). |
Definition at line 247 of file pose3d_eigen2.hpp.
Pose3D<Float> ecl::Pose3D< Float, enable_if< is_float< Float > >::type >::operator* | ( | const Pose3D< Float_ > & | pose | ) | const [inline] |
Combine this pose with the incoming pose.
pose | : differential (wrt this pose's frame). |
Definition at line 247 of file pose3d_eigen3.hpp.
Pose3D<Float>& ecl::Pose3D< Float, enable_if< is_float< Float > >::type >::operator*= | ( | const Pose3D< Float_ > & | pose | ) | [inline] |
Transform this pose by the specified input pose.
pose | : a pose differential (wrt this pose's frame). |
Definition at line 260 of file pose3d_eigen2.hpp.
Pose3D<Float>& ecl::Pose3D< Float, enable_if< is_float< Float > >::type >::operator*= | ( | const Pose3D< Float_ > & | pose | ) | [inline] |
Transform this pose by the specified input pose.
pose | : a pose differential (wrt this pose's frame). |
Definition at line 260 of file pose3d_eigen3.hpp.
Pose3D<Float>& ecl::Pose3D< Float, enable_if< is_float< Float > >::type >::operator= | ( | const Pose2D< Float, Storage_ > & | pose | ) | [inline] |
Assign from another Pose2D instance.
pose | : another Pose2D, storage type is irrelevant. |
Definition at line 157 of file pose3d_eigen2.hpp.
Pose3D<Float>& ecl::Pose3D< Float, enable_if< is_float< Float > >::type >::operator= | ( | const Pose2D< Float, Storage_ > & | pose | ) | [inline] |
Assign from another Pose2D instance.
pose | : another Pose2D, storage type is irrelevant. |
Definition at line 157 of file pose3d_eigen3.hpp.
Pose3D<Float>& ecl::Pose3D< Float, enable_if< is_float< Float > >::type >::operator= | ( | const Pose3D< Float > & | pose | ) | [inline] |
Assign from another Pose2D instance.
pose | : another Pose2D, storage type is irrelevant. |
Definition at line 171 of file pose3d_eigen2.hpp.
Pose3D<Float>& ecl::Pose3D< Float, enable_if< is_float< Float > >::type >::operator= | ( | const Pose3D< Float > & | pose | ) | [inline] |
Assign from another Pose2D instance.
pose | : another Pose2D, storage type is irrelevant. |
Definition at line 171 of file pose3d_eigen3.hpp.
Pose3D<Float> ecl::Pose3D< Float, enable_if< is_float< Float > >::type >::relative | ( | const Pose3D< Float_ > & | pose | ) | const [inline] |
Relative pose between this pose and another.
Evaluates and returns the pose of this pose, relative to the specified pose.
pose | : reference frame for the relative pose. |
Definition at line 274 of file pose3d_eigen2.hpp.
Pose3D<Float> ecl::Pose3D< Float, enable_if< is_float< Float > >::type >::relative | ( | const Pose3D< Float_ > & | pose | ) | const [inline] |
Relative pose between this pose and another.
Evaluates and returns the pose of this pose, relative to the specified pose.
pose | : reference frame for the relative pose. |
Definition at line 274 of file pose3d_eigen3.hpp.
void ecl::Pose3D< Float, enable_if< is_float< Float > >::type >::rotation | ( | const RotationMatrix & | rotation | ) | [inline] |
Set the rotational component.
This accepts a rotation matrix to set the rotational part of the pose.
rotation | : input rotation to set. |
Definition at line 186 of file pose3d_eigen3.hpp.
void ecl::Pose3D< Float, enable_if< is_float< Float > >::type >::rotation | ( | const RotationMatrix & | rotation | ) | [inline] |
Set the rotational component.
This accepts a rotation matrix to set the rotational part of the pose.
rotation | : input rotation to set. |
Definition at line 186 of file pose3d_eigen2.hpp.
RotationMatrix& ecl::Pose3D< Float, enable_if< is_float< Float > >::type >::rotation | ( | ) | [inline] |
Definition at line 212 of file pose3d_eigen3.hpp.
RotationMatrix& ecl::Pose3D< Float, enable_if< is_float< Float > >::type >::rotation | ( | ) | [inline] |
Definition at line 212 of file pose3d_eigen2.hpp.
const RotationMatrix& ecl::Pose3D< Float, enable_if< is_float< Float > >::type >::rotation | ( | ) | const [inline] |
Return a mutable handle to the translation vector.
>
Definition at line 214 of file pose3d_eigen2.hpp.
const RotationMatrix& ecl::Pose3D< Float, enable_if< is_float< Float > >::type >::rotation | ( | ) | const [inline] |
Return a mutable handle to the translation vector.
>
Definition at line 214 of file pose3d_eigen3.hpp.
RotationMatrix ecl::Pose3D< Float, enable_if< is_float< Float > >::type >::rotationMatrix | ( | ) | const [inline] |
Return a const handle to the translation vector.
>Representation of the rotation in matrix form.
Definition at line 223 of file pose3d_eigen3.hpp.
RotationMatrix ecl::Pose3D< Float, enable_if< is_float< Float > >::type >::rotationMatrix | ( | ) | const [inline] |
Return a const handle to the translation vector.
>Representation of the rotation in matrix form.
Definition at line 223 of file pose3d_eigen2.hpp.
void ecl::Pose3D< Float, enable_if< is_float< Float > >::type >::translation | ( | const ecl::linear_algebra::MatrixBase< Trans > & | translation | ) | [inline] |
Set the translation vector.
This accepts an arbitrary eigen types to use as a translation vector. Eigen will emit the appropriate compile time error if it is incompatible.
translation | : 3x1 translation vector. |
Trans | : any compatible eigen 3x1 matrix type (e.g. Matrix<Float,3,1>). |
Definition at line 199 of file pose3d_eigen3.hpp.
void ecl::Pose3D< Float, enable_if< is_float< Float > >::type >::translation | ( | const ecl::linear_algebra::MatrixBase< Trans > & | translation | ) | [inline] |
Set the translation vector.
This accepts an arbitrary eigen types to use as a translation vector. Eigen will emit the appropriate compile time error if it is incompatible.
translation | : 3x1 translation vector. |
Trans | : any compatible eigen 3x1 matrix type (e.g. Matrix<Float,3,1>). |
Definition at line 199 of file pose3d_eigen2.hpp.
Translation& ecl::Pose3D< Float, enable_if< is_float< Float > >::type >::translation | ( | ) | [inline] |
Return a mutable handle to the rotational storage component.
>
Definition at line 213 of file pose3d_eigen3.hpp.
Translation& ecl::Pose3D< Float, enable_if< is_float< Float > >::type >::translation | ( | ) | [inline] |
Return a mutable handle to the rotational storage component.
>
Definition at line 213 of file pose3d_eigen2.hpp.
const Translation& ecl::Pose3D< Float, enable_if< is_float< Float > >::type >::translation | ( | ) | const [inline] |
Return a const handle to the rotational storage component.
>
Definition at line 215 of file pose3d_eigen2.hpp.
const Translation& ecl::Pose3D< Float, enable_if< is_float< Float > >::type >::translation | ( | ) | const [inline] |
Return a const handle to the rotational storage component.
>
Definition at line 215 of file pose3d_eigen3.hpp.
OutputStream& operator<< | ( | OutputStream & | ostream, |
const Pose3D< Float_ > & | pose | ||
) | [friend] |
Insertion operator for output streams.
Note that the output heading angle is formatted in degrees.
ostream | : stream satisfying the ecl stream concept. |
pose | : the inserted pose. |
Definition at line 302 of file pose3d_eigen2.hpp.
OutputStream& operator<< | ( | OutputStream & | ostream, |
const Pose3D< Float_ > & | pose | ||
) | [friend] |
Insertion operator for output streams.
Note that the output heading angle is formatted in degrees.
ostream | : stream satisfying the ecl stream concept. |
pose | : the inserted pose. |
Definition at line 302 of file pose3d_eigen2.hpp.
RotationMatrix ecl::Pose3D< Float, enable_if< is_float< Float > >::type >::rot [private] |
Definition at line 285 of file pose3d_eigen2.hpp.
EIGEN_MAKE_ALIGNED_OPERATOR_NEW typedef Float ecl::Pose3D< Float, enable_if< is_float< Float > >::type >::Scalar |
Eigen style declaration of the element type.
Definition at line 65 of file pose3d_eigen2.hpp.
Translation ecl::Pose3D< Float, enable_if< is_float< Float > >::type >::trans [private] |
Definition at line 286 of file pose3d_eigen2.hpp.