32 Eigen::Quaterniond
normalized(
const Eigen::Quaterniond& q) {
33 Eigen::Quaterniond q2(q);
38 Eigen::Quaterniond&
normalize(Eigen::Quaterniond& q){
48 Eigen::Quaterniond q(R);
49 const double& q0 = q.w();
50 const double& q1 = q.x();
51 const double& q2 = q.y();
52 const double& q3 = q.z();
53 double roll = atan2(2*(q0*q1+q2*q3), 1-2*(q1*q1+q2*q2));
54 double pitch = asin(2*(q0*q2-q3*q1));
55 double yaw = atan2(2*(q0*q3+q1*q2), 1-2*(q2*q2+q3*q3));
64 double sy = sin(yaw*0.5);
65 double cy = cos(yaw*0.5);
66 double sp = sin(pitch*0.5);
67 double cp = cos(pitch*0.5);
68 double sr = sin(roll*0.5);
69 double cr = cos(roll*0.5);
70 double w = cr*cp*cy + sr*sp*sy;
71 double x = sr*cp*cy - cr*sp*sy;
72 double y = cr*sp*cy + sr*cp*sy;
73 double z = cr*cp*sy - sr*sp*cy;
74 return Eigen::Quaterniond(w,x,y,z).toRotationMatrix();
78 Eigen::Quaterniond q(R);
81 return q.coeffs().head<3>();
85 double w = 1-v.squaredNorm();
87 return Matrix3D::Identity();
90 return Eigen::Quaterniond(w, v[0], v[1], v[2]).toRotationMatrix();
97 v.block<3,1>(0,0) = t.translation();
104 v.block<3,1>(0,0) = t.translation();
112 v[3] = q.x(); v[4] = q.y(); v[5] = q.z(); v[6] = q.w();
113 v.block<3,1>(0,0) = t.translation();
120 t.translation() = v.block<3,1>(0,0);
127 t.translation() = v.block<3,1>(0,0);
133 t=Eigen::Quaterniond(v[6], v[3], v[4], v[5]).toRotationMatrix();
134 t.translation() = v.head<3>();
140 SE3Quat result(t.matrix().topLeftCorner<3,3>(), t.translation());
Vector3D toEuler(const Matrix3D &R)
Matrix3D fromCompactQuaternion(const Vector3D &v)
Eigen::Matrix< double, 3, 1, Eigen::ColMajor > Vector3D
Isometry3D fromVectorQT(const Vector7d &v)
Eigen::Matrix< double, 7, 1 > Vector7d
Vector3D toCompactQuaternion(const Matrix3D &R)
SE3Quat toSE3Quat(const Isometry3D &t)
Vector6d toVectorET(const Isometry3D &t)
Eigen::Transform< double, 3, Eigen::Isometry, Eigen::ColMajor > Isometry3D
Eigen::Quaterniond & normalize(Eigen::Quaterniond &q)
Vector6d toVectorMQT(const Isometry3D &t)
const Eigen::Quaterniond & rotation() const
Isometry3D::ConstLinearPart extractRotation(const Isometry3D &A)
Eigen::Matrix< double, 3, 3, Eigen::ColMajor > Matrix3D
Eigen::Quaterniond normalized(const Eigen::Quaterniond &q)
Vector7d toVectorQT(const Isometry3D &t)
Isometry3D fromVectorMQT(const Vector6d &v)
Isometry3D fromVectorET(const Vector6d &v)
Isometry3D fromSE3Quat(const SE3Quat &t)
const Vector3D & translation() const
Matrix< double, 6, 1, Eigen::ColMajor > Vector6d
Matrix3D fromEuler(const Vector3D &v)