30 return Eigen::Quaterniond(
31 Eigen::AngleAxisd(rpy.z(), Eigen::Vector3d::UnitZ()) *
32 Eigen::AngleAxisd(rpy.y(), Eigen::Vector3d::UnitY()) *
33 Eigen::AngleAxisd(rpy.x(), Eigen::Vector3d::UnitX())
40 return q.toRotationMatrix().eulerAngles(2, 1, 0).reverse();
47 const double &q0 = q.w();
48 const double &q1 = q.x();
49 const double &q2 = q.y();
50 const double &q3 = q.z();
52 return std::atan2(2. * (q0*q3 + q1*q2), 1. - 2. * (q2*q2 + q3*q3));