栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

Eigen(2):使用eigen进行四元数与旋转矩阵转换(c++实现)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Eigen(2):使用eigen进行四元数与旋转矩阵转换(c++实现)

1 四元数转旋转矩阵

        使用了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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/879837.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号