36 #include <Eigen/Geometry> 37 #include <opencv2/core/core.hpp> 48 Transform(
float r11,
float r12,
float r13,
float o14,
49 float r21,
float r22,
float r23,
float o24,
50 float r31,
float r32,
float r33,
float o34);
52 Transform(
const cv::Mat & transformationMatrix);
56 Transform(
float x,
float y,
float z,
float qx,
float qy,
float qz,
float qw);
62 float r11()
const {
return data()[0];}
63 float r12()
const {
return data()[1];}
64 float r13()
const {
return data()[2];}
65 float r21()
const {
return data()[4];}
66 float r22()
const {
return data()[5];}
67 float r23()
const {
return data()[6];}
68 float r31()
const {
return data()[8];}
69 float r32()
const {
return data()[9];}
70 float r33()
const {
return data()[10];}
72 float o14()
const {
return data()[3];}
73 float o24()
const {
return data()[7];}
74 float o34()
const {
return data()[11];}
77 const float &
operator[](
int index)
const {
return data()[index];}
79 const float &
operator()(
int row,
int col)
const {
return data()[row*4 + col];}
88 const float *
data()
const {
return (
const float *)data_.data;}
89 float *
data() {
return (
float *)data_.data;}
90 int size()
const {
return 12;}
92 float &
x() {
return data()[3];}
93 float &
y() {
return data()[7];}
94 float &
z() {
return data()[11];}
95 const float &
x()
const {
return data()[3];}
96 const float &
y()
const {
return data()[7];}
97 const float &
z()
const {
return data()[11];}
101 bool isInvertible()
const;
107 cv::Mat rotationMatrix()
const;
108 cv::Mat translationMatrix()
const;
110 void getTranslationAndEulerAngles(
float & x,
float & y,
float & z,
float & roll,
float & pitch,
float & yaw)
const;
111 void getEulerAngles(
float & roll,
float & pitch,
float & yaw)
const;
112 void getTranslation(
float & x,
float & y,
float & z)
const;
113 float getAngle(
float x=1.0
f,
float y=0.0
f,
float z=0.0
f)
const;
114 float getNorm()
const;
115 float getNormSquared()
const;
116 float getDistance(
const Transform & t)
const;
117 float getDistanceSquared(
const Transform & t)
const;
119 void normalizeRotation();
120 std::string prettyPrint()
const;
127 Eigen::Matrix4f toEigen4f()
const;
128 Eigen::Matrix4d toEigen4d()
const;
129 Eigen::Affine3f toEigen3f()
const;
130 Eigen::Affine3d toEigen3d()
const;
132 Eigen::Quaternionf getQuaternionf()
const;
133 Eigen::Quaterniond getQuaterniond()
const;
137 static Transform fromEigen4f(
const Eigen::Matrix4f & matrix);
138 static Transform fromEigen4d(
const Eigen::Matrix4d & matrix);
139 static Transform fromEigen3f(
const Eigen::Affine3f & matrix);
140 static Transform fromEigen3d(
const Eigen::Affine3d & matrix);
141 static Transform fromEigen3f(
const Eigen::Isometry3f & matrix);
142 static Transform fromEigen3d(
const Eigen::Isometry3d & matrix);
145 0.0
f, -1.0
f, 0.0
f, 0.0
f,
146 0.0
f, 0.0
f, 1.0
f, 0.0
f,
147 -1.0
f, 0.0
f, 0.0
f, 0.0
f);}
149 0.0
f, 0.0
f,-1.0
f, 0.0
f,
150 -1.0
f, 0.0
f, 0.0
f, 0.0
f,
151 0.0
f, 1.0
f, 0.0
f, 0.0
f);}
160 static Transform fromString(
const std::string &
string);
161 static bool canParseString(
const std::string &
string);
164 const std::map<double, Transform> & tfBuffer,
165 const double & stamp);
167 const std::map<double, Transform> & tfBuffer,
168 const double & stamp,
169 double * stampDiff),
"Use Transform::getTransform() instead to get always accurate transforms.");
181 transform_(transform),
185 const double &
stamp()
const {
return stamp_;}
GLM_FUNC_DECL T roll(detail::tquat< T, P > const &x)
GLM_FUNC_DECL genType::row_type row(genType const &m, length_t const &index)
GLM_FUNC_DECL T pitch(detail::tquat< T, P > const &x)
GLM_FUNC_DECL tmat2x2< T, P > operator*(tmat2x2< T, P > const &m, T const &s)
GLM_FUNC_DECL bool isNull(detail::tmat2x2< T, P > const &m, T const &epsilon)
GLM_FUNC_DECL detail::tmat4x4< T, P > interpolate(detail::tmat4x4< T, P > const &m1, detail::tmat4x4< T, P > const &m2, T const delta)
GLM_FUNC_DECL bool operator==(tvec1< T, P > const &v1, tvec1< T, P > const &v2)
GLM_FUNC_DECL bool operator!=(tvec1< T, P > const &v1, tvec1< T, P > const &v2)
GLM_FUNC_DECL detail::tquat< T, P > rotation(detail::tvec3< T, P > const &orig, detail::tvec3< T, P > const &dest)
GLM_FUNC_DECL bool isIdentity(matType< T, P > const &m, T const &epsilon)
RTABMAP_EXP std::ostream & operator<<(std::ostream &os, const CameraModel &model)
GLM_FUNC_DECL T yaw(detail::tquat< T, P > const &x)
RTABMAP_DEPRECATED(typedef SensorData Image,"rtabmap::Image class is renamed to rtabmap::SensorData, use the last one instead.")
GLM_FUNC_DECL matType< T, P > inverse(matType< T, P > const &m)