使用了normalized()函数和toRotationMatrix()函数
//下面的变量名称自拟
Eigen::Quaterniond q_odom_curr_tmp;//声明一个Eigen类的四元数
//此处进行赋值,使用其他语句以及合理的常数也可
q_odom_curr_tmp.x() = imuVec[imuVec.size()-1].orientation.x;
q_odom_curr_tmp.y() = imuVec[imuVec.size()-1].orientation.y;
q_odom_curr_tmp.z() = imuVec[imuVec.size()-1].orientation.z;
q_odom_curr_tmp.w() =imuVec[imuVec.size()-1].orientation.w;
Eigen::Matrix3d R_odom_curr_tmp;//声明一个Eigen类的3*3的旋转矩阵
//四元数转为旋转矩阵--先归一化再转为旋转矩阵
R_odom_curr_tmp= q_odom_curr_tmp.normalized().toRotationMatrix();
打印输出四元数:
std::cout<<"q_odom_curr_now:"<< q_odom_curr_now.x() <2 旋转矩阵转四元数 下面使用了inverse()--求逆函数,Eigen::Quaterniond()--求四元数,normalize()--归一化
//注:下面的赋值方法及变量名称自己按情况定 Eigen::Matrix3d R_odom_curr_now;//3*3旋转矩阵 R_odom_curr_now=R_odom_curr0.inverse()*R_odom_curr_tmp;//对旋转矩阵进行赋值 q_odom_curr_now=Eigen::Quaterniond(R_odom_curr_now);//旋转矩阵转为四元数 q_odom_curr_now.normalize();//转为四元数之后,需要进行归一化参考链接:讲解四元数、旋转矩阵、欧拉角的转换,很不错:
https://zhuanlan.zhihu.com/p/259999988
讲解了Eigen与矩阵相关的函数和类,也很不错
https://blog.csdn.net/weixin_31707171/article/details/112363668
eigen矩阵索引:
https://blog.csdn.net/xiaoyucyt/article/details/87866445
@meng



