参考:https://blog.csdn.net/weicao1990/article/details/86148828
欧拉角转其他初始化欧拉角(Z-Y-X,即RPY, 先绕x轴roll,再绕y轴pitch,最后绕z轴yaw)
Eigen::Vector3d ea(0.785398, -0, 0);
欧拉角转换为旋转矩阵
Eigen::Matrix3d rotation_matrix3; rotation_matrix3 = Eigen::AngleAxisd(ea[0], Eigen::Vector3d::UnitZ()) * Eigen::AngleAxisd(ea[1], Eigen::Vector3d::UnitY()) * Eigen::AngleAxisd(ea[2], Eigen::Vector3d::UnitX()); cout << "rotation matrix3 =\n" << rotation_matrix3 << endl;
欧拉角转换为四元数,
Eigen::Quaterniond quaternion3; quaternion3 = Eigen::AngleAxisd(ea[0], Eigen::Vector3d::UnitZ()) * Eigen::AngleAxisd(ea[1], Eigen::Vector3d::UnitY()) * Eigen::AngleAxisd(ea[2], Eigen::Vector3d::UnitX()); cout << "quaternion3 x: " << quaternion3.x() << endl; cout << "quaternion3 y: " << quaternion3.y() << endl; cout << "quaternion3 z: " << quaternion3.z() << endl;
欧拉角转换为旋转向量
Eigen::AngleAxisd rotation_vector3; rotation_vector3 = Eigen::AngleAxisd(ea[0], Eigen::Vector3d::UnitZ()) * Eigen::AngleAxisd(ea[1], Eigen::Vector3d::UnitY()) * Eigen::AngleAxisd(ea[2], Eigen::Vector3d::UnitX()); cout << "rotation_vector3 " << "angle is: " << rotation_vector3.angle() * (180 / M_PI)<< " axis is: " << rotation_vector3.axis().transpose() << endl;
作者:BetterEthan