欧拉角和旋转矩阵相互转换
目录
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. 欧拉角
暂做记录,后续补充
欧拉角和旋转矩阵相互转换相关推荐
- 四元数,欧拉角,旋转矩阵相互转换
#include <TransForms3d/TransForms.h>/*---------------------------------------角度弧度转换----------- ...
- 卫星轨道推演计算相关知识点总结(含欧拉角、旋转矩阵、及各坐标系转化等)
来源:轨道机动算法的C++实现_shirro123的专栏-CSDN博客 卫星轨道推演计算相关基础知识点总结 一.卫星的运动特性 二.卫星的空间坐标系 ...
- 一文详解四元数、欧拉角、旋转矩阵、轴角如何相互转换
一文详解四元数.欧拉角.旋转矩阵.轴角如何相互转换 简介 欧拉角与旋转矩阵 欧拉角---->旋转矩阵 旋转矩阵---->欧拉角 四元数与旋转矩阵 四元数---->旋转矩阵 旋转矩阵- ...
- 【自动驾驶】欧拉角和旋转矩阵之间的转换
欧拉角和旋转矩阵之间的转换 在使用Eigen时,经常会遇到旋转矩阵,旋转向量,四元数,欧拉角之间的两两相互转换.这里最常见.最容易出错的是欧拉角和旋转矩阵之间的相互转换.下面就欧拉角和旋转矩阵之间的转 ...
- eigen 编译_头条 | 使用eigen实现四元数、欧拉角、旋转矩阵、旋转向量间的转换...
点击上方蓝字,关注本公众号,获得更多资源上一篇文章介绍了四元数.欧拉角.旋转矩阵.轴角如何相互转换,本篇文章介绍如何用eigen来实现. 旋转向量 1,初始化旋转向量:旋转角为alpha,旋转轴为(x ...
- 欧拉角和旋转矩阵的学习心得
1)欧拉角正负: 如果是右手系,旋转轴正方向面对观察者时,逆时针方向的旋转是正.顺时针方向的旋转是负. 即使用右手的大拇指指向旋转轴正方向,其他4个手指在握拳过程中的指向便是正方向. 在使用时,要注意 ...
- 在matlab和python if中的旋转变换(四元数、欧拉角、旋转矩阵)等
在matlab和python tf中的旋转变换(四元数.欧拉角.旋转矩阵等) 目录 1. 基本的认识 2. 变换矩阵 3. 欧拉角 4. 四元数 5. matlab中相互转换 6. python tf ...
- 【自动驾驶】30.c++实现基于eigen实现欧拉角(RPY), 旋转矩阵, 旋转向量, 四元数之间的变换(附代码)
矩阵的使用可参考系列博客:点击此处 原文链接:基于eigen实现欧拉角(RPY), 旋转矩阵, 旋转向量, 四元数之间的变换. 也可以参考另一篇博客:eigen 中四元数.欧拉角.旋转矩阵.旋转向量. ...
- 欧拉角与旋转矩阵的转换关系
欧拉角因为其奇异性,虽然在优化和插值的不会使用,但是当我们对别人描述一个旋转的过程是怎么样的时候,欧拉角还是很有用的,比如,做无人机姿态控制的时候使用的就是欧拉角,但是搞明白欧拉角与旋转矩阵的转换确实 ...
最新文章
- TikTok玩家,路在何方?
- Oracle 变量绑定与变量窥视合集系列一
- Head First HTML与CSS、XHTML++笔记(第四章 WEB镇之旅 第五章 认识媒体)
- 主页面功能的java_6-04-项目实战-主页面显示当前用户退出功能实现
- OS + Linux RedHat 7 / redhat 7 configuration
- HarmonyOS IDE再升级,跨终端开发真的简单了吗?
- 国内最火的 HTML、CSS、JavaScript 开源项目 Top 榜,你知多少?
- A*B Problem II
- facebook加密货币项目_Facebook数字货币:Libra的起源—加密货币(比特币)
- 慕课python七月_【慕课有约】七月老师:关于小程序的那些事
- 三维坐标系旋转——旋转矩阵到旋转角之间的换算
- Redis5.0新特性-集群管理器由redis-trib.rb迁移到redis-cli
- 大咖联袂发布 《慧技术·惠金融——2022金融科技趋势研究报告》开放下载
- (Scrapy框架)爬虫获取新冠疫情数据升级版 | 爬虫案例
- XGBoost 与 信用卡诈骗数据集 三
- android锁屏自动杀死,android 锁屏的防进程被杀
- cocos2d-x lua 框架中 self.super.ctor(self, app) 和 self.super:ctor(app) 的区别
- 印章与印鉴的区别_篆刻与印章有区别
- python 期货现货差价监测_基差,即期货与现货之间价格之差
- 美元指数对黄金市场行情有哪些影响
热门文章
- java中什么是空指针异常_java中空指针异常的问题,是怎么回事?请看代码
- 计算机vb2级知识点,二级考试(VB)知识点细化(针对浙江省计算机等级考试)
- 兹介绍我校计算机科学与技术,清华大学计算机科学与技术系
- android get请求最长字符,Android OKHTTP3的GET和POST方法(带basic auth)
- Linux网络编程实例分析
- MySQL面试题 | 附答案解析(七)
- 使用Python,OpenCV进行形态学操作
- POJ-1041 John's trip
- PPM图片格式及其C读写代码
- 【亲测可用】用Electron和electron-builder打包Vue项目为exe可执行文件安装包(不推荐,个人觉得没有VNISEdit和NW好用,而且有些配置文件还挺脑残!)