动态欧拉角与静态欧拉角的区别

看了网上好多的讲解,讲的都不是特别清晰,让人有一种很懵懵的感觉,感觉懂了,又貌似没懂的奇怪感觉,读了那么多的水文,大多都是内容差不多,好多文章之中错误百出,都是稍微提了一点,没有详细对比二者的区别,很难让人从心里真正明白其中含义.由于项目需要,这里对于动态欧拉角和静态欧拉角的区别进行一个整理.

针对于欧拉角的概念,一个点围绕一个轴进行旋转,进而得到另一个点,可以将其视为一维旋转过程.欧拉角就是将这一个点围绕一个轴进行旋转分为围绕三个轴旋转的过程,将原来的一维旋转变换为围绕三个轴三维旋转的过程.

这里采用的右手坐标系进行讲解,就是拿出右爪子,从大拇指开始的三个手指摆出三脚架的样子,如下坐标系为一个右手坐标系.当然方向是可以进行改变的.这里只是举一个例子。

这里取固定的坐标系为oxyz,由于旋转的过程原点o是固定的,其变换过程的坐标系为oX_{1}Y_{1}Z_{1}.(学会一项新技能,CSDN之中插入公式终于不用截图了,使用下面的这个链接Online Equation Editor - standaloneLaTeX equation editor that creates lightweight graphical equations (gif, png, swf, pdf, emf) and produces code to quickly and directly embedding equations into HTML websites, forums or blogs.https://codecogs.com/latex/eqneditor.php转换成LaTeX,进行黏贴就可以转换成为CSDN公式.)

静态/外旋欧拉角

静态欧拉角(又称为外旋欧拉角),就是其旋转轴使用的是静止不动的参考系,比如说世界坐标系,物体在旋转的过程中,坐标轴始终是保持静止,所以称为静态欧拉角,这种欧拉角一般是在地图的构建过程以及地图的导航过程之中使用,因为我们要统一坐标系,统一旋转角度,不可能是拿着相对的坐标系去表征当前的角度.

以旋转过程中,以轴序:x-y-z;,角序: (α,β,γ)为例.其每个旋转的过程是按照固定的坐标轴,x,y,z轴进行一个旋转的过程.

设一点p在原来的坐标系之中的向量为v_{0},旋转矩阵的计算方法如下:r = rz * ry *rx,乘法顺序:从右向左,依次旋转X轴Y轴Z轴.将其旋转过程分为如下几个过程.

  • 第一次旋转:围绕x轴逆时针旋转α度.
    设旋转矩阵为r(x,α),可知p点原始的向量为,v_{0}经过旋转之后所得到的旋转向量为v_{1}=r(x,\alpha )v_{0}
  • 第二次旋转:围绕y轴逆时针旋转β度.
    设旋转矩阵为r(y,β),可知旋转向量v_{1}经过旋转之后所得到的旋转向量为v_{2}=r(y,\beta )v_{1}.
  • 第三次旋转:围绕z轴逆时针旋转γ度.
    设旋转矩阵为r(z,γ),可知旋转向量v_{2}经过旋转之后所得到的旋转向量为v_{3}=r(z,\gamma )v_{2}.

综上所述,三次旋转之后,所对应的原始向量v_{0}变成了v_{3},旋转过程,总而言之,可以表述为v_{3}=r(z,\gamma )r(y,\beta )r(x,\alpha )v_{0},记这里的r(\gamma,\beta,\alpha)=r(z,\gamma )r(y,\beta )r(x,\alpha )为旋转矩阵.
这就是所谓的静态欧拉角的表述过程.

为了更好的理解,建立如下固定坐标系:

 这里我们定义旋转量如下所示:

其旋转矩阵可以表示为:

 通过如上所示,就可以将围绕每个坐标轴旋转的角度进行求取.

动态/内旋欧拉角

动态欧拉角(又称为内旋欧拉角),就是其旋转轴使用的是活动的参考系,绕物体坐标系三个轴的旋转,由于物体旋转过程中坐标轴随着旋转变换运动,所以称为动态欧拉角。这种欧拉角在航空领域中,滚转、俯仰、偏航角有明确的物理意义。

以旋转过程中,初始坐标系与定义的固定oxyz坐标系相同,旋转每次的坐标系分别为oxyz-oX_{1}Y_{1}Z_{1}-oX_{2}Y_{2}Z_{2}-oX_{3}Y_{3}Z_{3}.以轴序:X_{1}-Y_{2}-Z_{3},角序: (α,β,γ)为例.其每个旋转的过程是按照活动的坐标轴进行旋转.

由于直接进行得到旋转矩阵R的过程是非常难以理解的,所以这里是需要使用一个逆向思维进行求解旋转矩阵R,使用的是一个反向求解的过程,分为如下步骤进行:

设原始点为p,经过旋转之后得到向量为v_{0},在原始的坐标系之中.经过oxyz-oX_{1}Y_{1}Z_{1}-oX_{2}Y_{2}Z_{2}-oX_{3}Y_{3}Z_{3}坐标系变换,其向量变换为v_{0}-v_{1}-v_{2}-v_{3}.也就是说要求v_{3}向量

  • 第一次旋转的过程:围绕原来的oxyz轴中的z轴逆向旋转γ,进而得到oX_{1}Y_{1}Z_{1}坐标系.

  • 第二次旋转的过程:围绕oX_{1}Y_{1}Z_{1}坐标系中的y轴旋转β,进而得到oX_{2}Y_{2}Z_{2}坐标系.

  • 第三次旋转的过程:围绕oX_{2}Y_{2}Z_{2}坐标系中的x轴旋转α,进而得到oX_{3}Y_{3}Z_{3}坐标系.

上述的三次旋转过程之后得到的旋转矩阵与静态欧拉角表述得到的旋转矩阵是相同的.也就是R=R(z,\gamma )R(y,\beta )R(x,\alpha ),只不过这里是使用R进行表示的。

二者之间的区别

静态欧拉角是进行一个左乘的过程,动态欧拉角是进行一个右乘的过程,由上面描述的过程可以知道,静态欧拉角的旋转顺序是x-y-z,动态欧拉角的旋转顺序是z-y-x,每个轴旋转角度是相同的,得到的结果却也是相同的。

动态欧拉角的万向节死锁问题

两种表述方式:

①语言描述:在进行动态欧拉角的旋转的过程,首先围绕一个轴1旋转,旋转过后再围绕轴2旋转90度,会导致两个轴平行的过程。

②公式描述:如下所示:

 可见,原来的三个自由度,现在变成了两个自由度,直接失去了一个自由度的过程,我们称之为万向节死锁问题。

旋转矩阵与欧拉角之间的相互转换

旋转矩阵转欧拉角(这里是不需要配置什么什么库的方法,具体的计算过程在前面的静态欧拉角已经写得很明白了)

// Checks if a matrix is a valid rotation matrix.
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;
}// Calculates rotation matrix to euler angles
// The result is the same as MATLAB except the order
// of the euler angles ( x and z are swapped ).
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//由于欧拉角存在奇异性,当pitch为90°时会出现解不稳定的情况因此需要进行特殊处理{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);}

欧拉角转换为旋转矩阵(就是进行一个直接相乘的过程,简单的很)

// Calculates rotation matrix given euler angles.
Mat eulerAnglesToRotationMatrix(Vec3f &theta)
{// Calculate rotation about x axisMat R_x = (Mat_<double>(3,3) <<1,       0,              0,0,       cos(theta[0]),   -sin(theta[0]),0,       sin(theta[0]),   cos(theta[0]));// Calculate rotation about y axisMat R_y = (Mat_<double>(3,3) <<cos(theta[1]),    0,      sin(theta[1]),0,               1,      0,-sin(theta[1]),   0,      cos(theta[1]));// Calculate rotation about z axisMat R_z = (Mat_<double>(3,3) <<cos(theta[2]),    -sin(theta[2]),      0,sin(theta[2]),    cos(theta[2]),       0,0,               0,                  1);// Combined rotation matrixMat R = R_z * R_y * R_x;return R;
}

欧拉角的缺点

欧拉角的表示方式不唯一。给定某个起始朝向和目标朝向,通过相同的旋转但是不同的旋转顺序得到的终值可能相同。

欧拉角的插值比较难。

计算旋转变换时,一般需要转换成旋转矩阵,这时候需要计算很多sin, cos,计算量较大。

补充---正方向的判断

方式①:如果是右手系,旋转轴正方向面对观察者时,逆时针方向的旋转是正、顺时针方向的旋转是负。

方式②:亦可这样描述:使用右手的大拇指指向旋转轴正方向,其他4个手指在握拳过程中的指向便是正方向

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1549676.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

旋转矩阵、欧拉角

旋转矩阵、欧拉角 注&#xff1a;下面为学习空间机器人技术系列课程笔记&#xff0c;加上一些自己的整理&#xff0c;方便复习。 一、旋转矩阵的引出 下面坐标系0的基向量为 ( x 0 &#xff0c; y 0 ) (x_{0}&#xff0c;y_{0}) (x0​&#xff0c;y0​)&#xff0c;坐标系1的基…

对于双欧拉角(正反欧拉角)的一些理解和思考

文章目录 一、正反欧拉角定义二、相关文献阐述三、对正反欧拉角的思考四、参考代码五、参考文献 最近看到有人讨论“双欧拉角”或者“正反欧拉角”的问题&#xff0c;因为自己之前没听说过这个概念&#xff0c;为了避免无知&#xff0c;因此找了一些文献进行学习和理解。不过基…

matlab 欧拉角 方向余弦,旋转矩阵、欧拉角之间转换

学习过程中涉及欧拉角和旋转矩阵的转换,索性整理学习一下欧拉角四元数和旋转矩阵的概念以及matlab中的互相转换 本文摘自各大课本,博客,自己学习整理使用,侵删 MATLAB矩阵乘法从左到右依次相乘 用R表示旋转矩阵。 yaw(偏航) pitch(俯仰) roll(横滚)分别表示Z Y X轴的转…

欧拉角旋转

欧拉角是一种表示三维旋转的描述方法&#xff0c;欧拉角的计算需要借助旋转矩阵&#xff0c;关于旋转矩阵的知识可先参考之前的文章&#xff1a;3维旋转矩阵推导与助记 欧拉角旋转 静态定义 对于在三维空间里的一个参考系&#xff0c;任何坐标系的取向&#xff0c;都可以用三…

欧拉角的理解

1 欧拉角概念 百度百科&#xff1a;欧拉角&#xff0c;用来确定定点转动刚体位置的3个一组独立角参量&#xff0c;欧拉角由章动角θ、旋进角&#xff08;即进动角&#xff09;ψ和自转角Φ组成。欧拉角为欧拉首先提出而得名。维基百科&#xff1a;Euler angles&#xff0c;莱昂…

四元数转欧拉角

四元数转欧拉角_在线测试工具 在线测试C程序工具 #include <stdio.h> #include <cmath>//四元数 struct Quaternion {double w, x, y, z; };//欧拉角 struct EulerAngles {double roll, pitch, yaw; };EulerAngles ToEulerAngles(Quaternion q) {EulerAngles angl…

详解 欧拉角与四元数

一、欧拉角 1.1 静态的定义 对于在三维空间里的一个参考系&#xff0c;任何坐标系的取向&#xff0c;都可以用三个欧拉角来表现。参考系又称为实验室参考系&#xff0c;是静止不动的。而坐标系则固定于刚体&#xff0c;随着刚体的旋转而旋转。 如图所示。设定xyz-轴为参考系…

四元数与欧拉角的转换

前言 一般情况下&#xff0c;每个领域都有自己默认是欧拉角定义。经典力学使用zxz&#xff0c;航空航天使用zyx/zxy。本文以无人机为对象讲解&#xff0c;使用zyx/zxy旋转顺序。为什么不同专业选用的欧拉角不同呢&#xff1f;一个是传统&#xff0c;另一重要的原因是不同的转序…

欧拉角转换四元数

欧拉角绕轴有x、y、z三个轴&#xff0c;旋转有不同的顺序。确定了不同的欧拉角矩阵。 针对绕轴的不同&#xff0c;欧拉角转换为四元数也不同。 绕x轴旋转 ϕ \phi ϕ角 四元数为 [ ( s i n ϕ 2 , 0 , 0 ) , c o s ( ϕ 2 ) ] T [(sin\frac{\phi}{2},0,0),cos(\frac{\phi}{…

欧拉角

欧拉角&#xff08;Euler Angles&#xff09;用来描述坐标轴的旋转。 坐标轴 原始坐标轴记为 x − y − z x-y-z x−y−z&#xff0c;旋转后坐标轴记为 X − Y − Z X-Y-Z X−Y−Z&#xff0c;坐标轴原点记为 O O O。 N ⃗ \vec{N} N 轴为 X Y XY XY与 x y xy xy两平面的交线&…

欧拉角及相关概念

欧拉角定义 欧拉角表示的是刚体的姿态变换。空间中的任意一点都可以用该点到对应坐标轴的垂直距离组成的三维向量描述&#xff0c;同理对某个物体的姿态&#xff0c;也可以用三个角度表示&#xff0c;三个角度分别为围绕对应坐标轴&#xff08;x,y,z&#xff09;旋转的…

欧拉角的概念理解和欧拉角旋转矩阵推导

欧拉角用来计算空间中刚体的旋转位置&#xff0c;目的是改变刚体的朝向. 具体来说,空间中有一个点p和一根轴k&#xff0c;点p绕轴k旋转θ角度到p,求p的坐标.这就是欧拉角要解决的问题. 只不过,欧拉角将1个点绕1根轴旋转1个角"转化为"1个点绕3个轴连续旋转3个角&quo…

欧拉角(Euler angles)

前言&#xff1a;本人也就英语4级水平&#xff0c;由于本篇中存在大量学术词汇&#xff0c;翻译时必然会有不当之处&#xff0c;原文可以在下面的链接中找到&#xff0c;具体意义各位可以自行斟酌 标红的部分是已发现存疑的翻译&#xff0c;也请各位指正。 维基百科-欧拉角 欧…

欧拉角(易理解)

欧拉角是什么 欧拉角是用来 唯一的 确定定点转动刚体位置的 三个一组的 独立角参量。 由章动量θ、旋进角&#xff08;即进动角&#xff09;ψ和自转角φ组成&#xff0c;为欧拉首先提出而得名。 通俗来讲的话有&#xff1a; eg&#xff1a;你去问路得到了两种回答 1 往东经…

欧拉角,轴角,四元数与旋转矩阵详解

入门小菜鸟&#xff0c;希望像做笔记记录自己学的东西&#xff0c;也希望能帮助到同样入门的人&#xff0c;更希望大佬们帮忙纠错啦~侵权立删。 目录 一、欧拉角 1、静态定义 2、欧拉角的表示 3、欧拉角表示的优缺点 4、欧拉角的万向节死锁&#xff08;静态不存在万向锁的问…

三星SAMSUNG CLP-320N 驱动

三星SAMSUNG CLP-320N 驱动是官方提供的一款打印机驱动&#xff0c;本站收集提供高速下载&#xff0c;用于解决打印机与电脑连接不了&#xff0c;无法正常使用的问题&#xff0c;本动适用于&#xff1a;Windows XP / Windows 7 / Windows 8 / Windows 10 32/64位操作系统。有需…

三星Samsung ML-3470D 打印机驱动

三星Samsung ML-3470D 打印机驱动是官方提供的一款打印机驱动&#xff0c;本站收集提供高速下载&#xff0c;用于解决打印机与电脑连接不了&#xff0c;无法正常使用的问题&#xff0c;本动适用于&#xff1a;Windows XP / Windows 7 / Windows 8 / Windows 10 32/64位操作系统…

三星Samsung ML-2950ND 驱动

三星Samsung ML-2950ND 驱动是官方提供的一款打印机驱动&#xff0c;本站收集提供高速下载&#xff0c;用于解决打印机与电脑连接不了&#xff0c;无法正常使用的问题&#xff0c;本动适用于&#xff1a;Windows XP / Windows 7 / Windows 8 / Windows 10 32/64位操作系统。有需…

救砖用三星i9300官方4.1.2固件刷机包下载港版和国行版 手机天堂-软件世界 | 手机天堂-软件世界...

说明&#xff1a;这些固件包是官方的4.1.2版本的固件线刷包&#xff0c;都是五件套系列&#xff0c;如果有需要五件套系列的可以下载下来备用了&#xff0c;包内有详细的刷机教程和root教程&#xff0c;下载下来解压出来&#xff0c;然后采用odin工具刷入即可。 一&#xff1a…

三星 linux 电视软件下载中心,三星 SF-565P 多功能一体机驱动下载(ver.1.0.156) 版For Linux...

三星 SF-565P 多功能一体机驱动下载(ver.1.0.156) 版For Linux (2012-07-11 16:09:05) 标签&#xff1a; 12.04 ubuntu 三星 打印机 驱动 it 这是一篇之前收藏的文章&#xff0c;是关于安装三星打印机驱动程序的问题&#xff0c;有使用三星打印机的可以参考一下 安装三星 SF-56…