目录

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. 配置Haproxy增加日志记录功能
  2. Mac上安装hadoop
  3. 1249. 移除无效的括号
  4. GraphQL第一个例子
  5. 前端学习(2607):vue指令
  6. linux中创建目录树,如何在C++/Linux中创建目录树?
  7. Pandas数据排序——【按索引排序sort_index()方法、按值排序sort_value()方法】
  8. netty java开发文档_Netty简明教学文档
  9. pytorch以特征图的输入方式训练LSTM模型
  10. 新中大银色快车数据恢复
  11. java jvm dump文件_各种获取JVM DUMP的方法
  12. 换掉7z-zip默认的ico图标,自定义压缩文件图标更美观。
  13. 计算机断网后显示配置0%,电脑断网后自动报警提醒怎么设置
  14. Python爬取必应图片2
  15. 给移动硬盘装上LINUX全攻略,给移动硬盘装上LINUX全攻略
  16. Mininet-wifi安装和简单使用
  17. 利用连按 5 下 Shift 漏洞破解 win7 开机密码(原理以及实现)
  18. obs 推流编码在哪设置_直播软件OBS推流的设置方法
  19. 杰里混响调MIC增益和深度【篇】
  20. 打开SQL2000安装包没有弹出安装界面

热门文章

  1. linux vscode vim,VSCode Vim进阶操作
  2. 数据存储方式_寻找要操作数据的存储地址的过程称为寻址,几种寻址的方式分享...
  3. 卡片使用_APP必备的设计元素!卡片
  4. mysql查询重复名字的数据都查出来_mysql查出重复的所有数据
  5. jq 直接调用php文件_PHP的函数类别和变量命名
  6. linux firefox xvfb,自动化测试之linux+xvfb+selenium+firefox+python测试环境搭建与测试
  7. java中数组的含义_数组
  8. win2008怎么配置php,Win2008 PHP 配置环境搭建 教程
  9. 不停刷朋友圈的人_刷爆朋友圈的推拉门安装方式 90%的人从没见过
  10. Flume基础及Flume高质量博客合集