9 #include <SpaceVecAlg/SpaceVecAlg>
25 inline Eigen::Matrix3d
rpyToMat(
const double & r,
const double & p,
const double & y)
27 MC_RTC_diagnostic_push
29 return sva::RotX(r) * sva::RotY(p) * sva::RotZ(y);
40 inline Eigen::Matrix3d
rpyToMat(
const Eigen::Vector3d & rpy)
42 return rpyToMat(rpy(0), rpy(1), rpy(2));
52 inline sva::PTransformd
rpyToPT(
const Eigen::Vector3d & rpy)
54 return sva::PTransformd(
rpyToMat(rpy(0), rpy(1), rpy(2)));
68 inline sva::PTransformd
rpyToPT(
const double & r,
const double & p,
const double & y)
70 return sva::PTransformd(
rpyToMat(r, p, y));
83 inline Eigen::Vector3d
rpyFromMat(
const Eigen::Matrix3d & E)
85 double roll = atan2(E(1, 2), E(2, 2));
86 double pitch = -asin(E(0, 2));
87 double yaw = atan2(E(0, 1), E(0, 0));
88 return Eigen::Vector3d(roll, pitch, yaw);
103 inline Eigen::Vector3d
rpyFromQuat(
const Eigen::Quaterniond & quat)
112 if constexpr(std::is_same_v<T, Eigen::Quaterniond>) {
return rpyFromQuat(value); }