1、仿射矩阵
Eigen::Affine3d veh_to_left = Eigen::Affine3d::Identity();
Eigen::Matrix3d mat_vehtoleft;
mat_vehtoleft << -0.00680499, -0.0153215, 0.99985, -0.999977, 0.000334627, -0.00680066, -0.000230383, -0.999883, -0.0153234;
veh_to_left.translation() << 1.64239, 0.247401, 1.58411;
veh_to_left.rotate(mat_vehtoleft);
std::cout << veh_to_left.matrix() << std::endl;
2、旋转向量
Eigen::AngleAxisd rotation_vector(alpha,Vector3d(x,y,z))
Eigen::AngleAxisd roll(-90, Eigen::Vector3d::UnitX());
Eigen::AngleAxisd pitch(0, Eigen::Vector3d::UnitY());
Eigen::AngleAxisd yaw(-90, Eigen::Vector3d::UnitZ());
Eigen::Matrix3d rotation_matrix;
rotation_matrix=rotation_vector.matrix();
rotation_matrix=rotation_vector.toRotationMatrix();
Eigen::Vector3d eulerAngle=rotation_vector.matrix().eulerAngles(0,1,2);
Eigen::Quaterniond quaternion(rotation_vector);
3、欧拉角
Eigen::Vector3d eulerAngle(roll,pitch,yaw);
Eigen::AngleAxisd rollAngle(AngleAxisd(eulerAngle(0),Vector3d::UnitX()));
Eigen::AngleAxisd pitchAngle(AngleAxisd(eulerAngle(1),Vector3d::UnitY()));
Eigen::AngleAxisd yawAngle(AngleAxisd(eulerAngle(2),Vector3d::UnitZ()));
Eigen::AngleAxisd rotation_vector;
rotation_vector=yawAngle*pitchAngle*rollAngle;
Eigen::Matrix3d rotation_matrix;
rotation_matrix=yawAngle*pitchAngle*rollAngle;
Eigen::Quaterniond quaternion;
quaternion=yawAngle*pitchAngle*rollAngle;
4、四元数
Eigen::Quaterniond quaternion(w,x,y,z);
Eigen::AngleAxisd rotation_vector;
rotation_vector=quaternion;
Eigen::Matrix3d rotation_matrix;
rotation_matrix=quaternion.matrix();
rotation_matrix=quaternion.toRotationMatrix();
Eigen::Vector3d eulerAngle=quaternion.matrix().eulerAngles(0,1,2);
quaternion.coeffs();