目录

1.参考资料

2.变换矩阵/F/H的svd分解或者旋转矩阵、平移矩阵求解

3. 欧拉角和旋转矩阵可同样表示刚体在三维空间的旋转,下面分享这两者互相转换的方法和核心代码


1.参考资料

2.变换矩阵/F/H的svd分解或者旋转矩阵、平移矩阵求解

  • 欧拉角转旋转矩阵 
    欧拉角通过将刚体绕过原点的轴(i,j,k)旋转θ,分解成三步,如下图(蓝色是起始坐标系,而红色的是旋转之后的坐标系) ,12种方法的其中一种分解示意图!
     
    如果将每一个角度用旋转矩阵表示如下: 
     
    所以,容易得到,欧拉角转旋转矩阵如下:

  • 旋转矩阵转欧拉角 
    将旋转矩阵表示如下:
  •  
    则可以如下表示欧拉角:

3. 欧拉角和旋转矩阵可同样表示刚体在三维空间的旋转,下面分享这两者互相转换的方法和核心代码

  • 欧拉角转旋转矩阵
/**
欧拉角计算对应的旋转矩阵
**/
Mat eulerAnglesToRotationMatrix(Vec3f &theta)
{// 计算旋转矩阵的X分量Mat R_x = (Mat_<double>(3,3) <<1,       0,              0,0,       cos(theta[0]),   -sin(theta[0]),0,       sin(theta[0]),   cos(theta[0]));// 计算旋转矩阵的Y分量Mat R_y = (Mat_<double>(3,3) <<cos(theta[1]),    0,      sin(theta[1]),0,               1,      0,-sin(theta[1]),   0,      cos(theta[1]));// 计算旋转矩阵的Z分量Mat R_z = (Mat_<double>(3,3) <<cos(theta[2]),    -sin(theta[2]),      0,sin(theta[2]),    cos(theta[2]),       0,0,               0,                  1);// 合并 Mat R = R_z * R_y * R_x;return R;
}

  • 旋转矩阵转欧拉角
/*** 功能:  检查是否是旋转矩阵**/
bool isRotationMatrix(Mat &R)
{Mat Rt;transpose(R, Rt);Mat shouldBeIdentity = Rt * R;Mat I = Mat::eye(3,3, shouldBeIdentity.type());return  norm(I, shouldBeIdentity) < 1e-6;
}/*** 功能: 通过给定的旋转矩阵计算对应的欧拉角**/
Vec3f rotationMatrixToEulerAngles(Mat &R)
{assert(isRotationMatrix(R));float sy = sqrt(R.at<double>(0,0) * R.at<double>(0,0) +  R.at<double>(1,0) * R.at<double>(1,0) );bool singular = sy < 1e-6; // Iffloat x, y, z;if (!singular) {x = atan2(R.at<double>(2,1) , R.at<double>(2,2));y = atan2(-R.at<double>(2,0), sy);z = atan2(R.at<double>(1,0), R.at<double>(0,0));} else {x = atan2(-R.at<double>(1,2), R.at<double>(1,1));y = atan2(-R.at<double>(2,0), sy);z = 0;}return Vec3f(x, y, z);
}

程序运行结果展示:

参考 
1. 欧拉角详解

2. 欧拉角

暂做记录,后续补充

欧拉角和旋转矩阵相互转换相关推荐

  1. 四元数,欧拉角,旋转矩阵相互转换

    #include <TransForms3d/TransForms.h>/*---------------------------------------角度弧度转换----------- ...

  2. 卫星轨道推演计算相关知识点总结(含欧拉角、旋转矩阵、及各坐标系转化等)

    来源:轨道机动算法的C++实现_shirro123的专栏-CSDN博客 卫星轨道推演计算相关基础知识点总结 一.卫星的运动特性             二.卫星的空间坐标系               ...

  3. 一文详解四元数、欧拉角、旋转矩阵、轴角如何相互转换

    一文详解四元数.欧拉角.旋转矩阵.轴角如何相互转换 简介 欧拉角与旋转矩阵 欧拉角---->旋转矩阵 旋转矩阵---->欧拉角 四元数与旋转矩阵 四元数---->旋转矩阵 旋转矩阵- ...

  4. 【自动驾驶】欧拉角和旋转矩阵之间的转换

    欧拉角和旋转矩阵之间的转换 在使用Eigen时,经常会遇到旋转矩阵,旋转向量,四元数,欧拉角之间的两两相互转换.这里最常见.最容易出错的是欧拉角和旋转矩阵之间的相互转换.下面就欧拉角和旋转矩阵之间的转 ...

  5. eigen 编译_头条 | 使用eigen实现四元数、欧拉角、旋转矩阵、旋转向量间的转换...

    点击上方蓝字,关注本公众号,获得更多资源上一篇文章介绍了四元数.欧拉角.旋转矩阵.轴角如何相互转换,本篇文章介绍如何用eigen来实现. 旋转向量 1,初始化旋转向量:旋转角为alpha,旋转轴为(x ...

  6. 欧拉角和旋转矩阵的学习心得

    1)欧拉角正负: 如果是右手系,旋转轴正方向面对观察者时,逆时针方向的旋转是正.顺时针方向的旋转是负. 即使用右手的大拇指指向旋转轴正方向,其他4个手指在握拳过程中的指向便是正方向. 在使用时,要注意 ...

  7. 在matlab和python if中的旋转变换(四元数、欧拉角、旋转矩阵)等

    在matlab和python tf中的旋转变换(四元数.欧拉角.旋转矩阵等) 目录 1. 基本的认识 2. 变换矩阵 3. 欧拉角 4. 四元数 5. matlab中相互转换 6. python tf ...

  8. 【自动驾驶】30.c++实现基于eigen实现欧拉角(RPY), 旋转矩阵, 旋转向量, 四元数之间的变换(附代码)

    矩阵的使用可参考系列博客:点击此处 原文链接:基于eigen实现欧拉角(RPY), 旋转矩阵, 旋转向量, 四元数之间的变换. 也可以参考另一篇博客:eigen 中四元数.欧拉角.旋转矩阵.旋转向量. ...

  9. 欧拉角与旋转矩阵的转换关系

    欧拉角因为其奇异性,虽然在优化和插值的不会使用,但是当我们对别人描述一个旋转的过程是怎么样的时候,欧拉角还是很有用的,比如,做无人机姿态控制的时候使用的就是欧拉角,但是搞明白欧拉角与旋转矩阵的转换确实 ...

最新文章

  1. TikTok玩家,路在何方?
  2. Oracle 变量绑定与变量窥视合集系列一
  3. Head First HTML与CSS、XHTML++笔记(第四章 WEB镇之旅 第五章 认识媒体)
  4. 主页面功能的java_6-04-项目实战-主页面显示当前用户退出功能实现
  5. OS + Linux RedHat 7 / redhat 7 configuration
  6. HarmonyOS IDE再升级,跨终端开发真的简单了吗?
  7. 国内最火的 HTML、CSS、JavaScript 开源项目 Top 榜,你知多少?
  8. A*B Problem II
  9. facebook加密货币项目_Facebook数字货币:Libra的起源—加密货币(比特币)
  10. 慕课python七月_【慕课有约】七月老师:关于小程序的那些事
  11. 三维坐标系旋转——旋转矩阵到旋转角之间的换算
  12. Redis5.0新特性-集群管理器由redis-trib.rb迁移到redis-cli
  13. 大咖联袂发布 《慧技术·惠金融——2022金融科技趋势研究报告》开放下载
  14. (Scrapy框架)爬虫获取新冠疫情数据升级版 | 爬虫案例
  15. XGBoost 与 信用卡诈骗数据集 三
  16. android锁屏自动杀死,android 锁屏的防进程被杀
  17. cocos2d-x lua 框架中 self.super.ctor(self, app) 和 self.super:ctor(app) 的区别
  18. 印章与印鉴的区别_篆刻与印章有区别
  19. python 期货现货差价监测_基差,即期货与现货之间价格之差
  20. 美元指数对黄金市场行情有哪些影响

热门文章

  1. java中什么是空指针异常_java中空指针异常的问题,是怎么回事?请看代码
  2. 计算机vb2级知识点,二级考试(VB)知识点细化(针对浙江省计算机等级考试)
  3. 兹介绍我校计算机科学与技术,清华大学计算机科学与技术系
  4. android get请求最长字符,Android OKHTTP3的GET和POST方法(带basic auth)
  5. Linux网络编程实例分析
  6. MySQL面试题 | 附答案解析(七)
  7. 使用Python,OpenCV进行形态学操作
  8. POJ-1041 John's trip
  9. PPM图片格式及其C读写代码
  10. 【亲测可用】用Electron和electron-builder打包Vue项目为exe可执行文件安装包(不推荐,个人觉得没有VNISEdit和NW好用,而且有些配置文件还挺脑残!)