Eigen的用法总结

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、旋转向量

//初始化旋转向量 旋转角为alpha(顺时针),旋转轴为(x,y,z)
Eigen::AngleAxisd rotation_vector(alpha,Vector3d(x,y,z))
Eigen::AngleAxisd roll(-90, Eigen::Vector3d::UnitX()); //绕x轴
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();

//旋转向量转欧拉角(xyz,即RPY)
Eigen::Vector3d eulerAngle=rotation_vector.matrix().eulerAngles(0,1,2);

//旋转向量转四元数
Eigen::Quaterniond quaternion(rotation_vector);

3、欧拉角

//初始化欧拉角(xyz,即RPY)
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();

//四元数转欧拉角(xyz,即RPY)
Eigen::Vector3d eulerAngle=quaternion.matrix().eulerAngles(0,1,2);
//输出四元数
quaternion.coeffs();   // coeffs的顺序是(x,y,z,w),w为实部,前三者为虚部
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值