浅析欧拉角与四元数
3D数学:欧拉角、万向锁、四元数
3D 数学:欧拉⾓、万向锁、四元数左⼿系、右⼿系欧拉⾓欧拉⾓⽤来在3D世界中表⽰物体的朝向,通常我们将朝向定义为将某⼀个正朝向旋转⾄当前朝向所进⾏的变换。
当我们表⽰物体的朝向时,实际上指的是对物体所进⾏的旋转变换。
3D世界中的任何⼀个旋转都可以拆分为沿着物体⾃⾝的三个正交坐标轴的旋转,⽽欧拉⾓规定了这三次旋转的⾓度,根据绕轴不同我们分别称它们为偏航⾓yaw(绕X轴)、俯仰⾓pitch(绕Y轴)和翻滚⾓roll(绕Z轴),下图是⼀个右⼿系的yaw-pitch-roll表⽰图:对于⼀个旋转变换,我们可以将其⽤如下三个旋转矩阵相乘的形式表⽰:E (yaw ,pitch ,roll )=R z (yaw )R y (roll )R x (pitch )R z 、R y 、R x 分别是绕Z轴、绕Y轴、绕X轴旋转的旋转矩阵:R z (θ)=cos θ−sin θ00sin θcos θ00001001R y (θ)=cos θ0sin θ00100−sin θ0cos θ001R x (θ)=10000cos θ−sin θ00sin θcos θ00001由于矩阵乘法的本质是将左侧矩阵表⽰的变换信息应⽤于右运算元(向量/矩阵),⽽多个线性变换间⼀般是不可交换的,即矩阵乘法不满⾜交换律。
所以三次旋转的顺序⾮常重要,在Unity、UE4、3dsMax等软件中,以欧拉⾓形式调整旋转时⼀般会将旋转顺序固定,⽽这正是导致万向锁(Gimbol Lock)即万向节死锁的原因。
万向锁⽹上很多资料的说法都是绕固定旋转顺序的中间轴旋转90°后使得哪两个轴重合或哪两个万向节共⾯了从⽽丢失⼀个维度上的⾃由度,或者以⼀个使⽤万向节的陀螺仪模型来进⾏演⽰,这就让⼈很摸不着头脑。
在最初的设想⾥物体总是以⾃⾝物体坐标系为参照进⾏旋转,怎么可能使得哪两个轴重合;⽽陀螺仪虽然演⽰清楚了,但为什么在Unity等软件和3D数学上会出现万向锁问题,感觉在本质问题上还是没有说明清楚。
欧拉角四元数转换
欧拉角四元数转换欧拉角和四元数都是用于描述物体在三维空间中的旋转状态的数学表示方法。
欧拉角是一个由三个角度组成的向量,而四元数是一个由四个实数组成的向量。
在计算机图形学和机器人学等领域中,这两种方法都被广泛使用。
欧拉角和四元数之间的转换可以帮助我们在不同的数学表示方法中进行转换,从而更方便地进行计算和应用。
下面是欧拉角和四元数之间的转换公式:欧拉角转四元数:给定欧拉角向量 [α, β, γ],我们可以通过以下公式将其转换为对应的四元数 [q0, q1, q2, q3]:q0 = cos(α/2)cos(β/2)cos(γ/2) + sin(α/2)sin(β/2)sin(γ/2)q1 = sin(α/2)cos(β/2)cos(γ/2) - cos(α/2)sin(β/2)sin(γ/2)q2 = cos(α/2)sin(β/2)cos(γ/2) + sin(α/2)cos(β/2)sin(γ/2)q3 = cos(α/2)cos(β/2)sin(γ/2) - sin(α/2)sin(β/2)cos(γ/2)四元数转欧拉角:给定四元数 [q0, q1, q2, q3],我们可以通过以下公式将其转换为对应的欧拉角向量 [α, β, γ]:α = atan2(2(q0q1 + q2q3), 1 - 2(q1^2 + q2^2))β = asin(2(q0q2 - q3q1))γ = atan2(2(q0q3 + q1q2), 1 - 2(q2^2 + q3^2))其中,atan2() 是一个带有两个参数的反正切函数,它可以根据两个参数的正负关系来确定结果的正负号。
通过以上公式,我们可以方便地在欧拉角和四元数之间进行转换,从而更加灵活地描述物体在三维空间中的旋转状态。
旋转矩阵、旋转向量、欧拉角、四元数的关系
旋转矩阵、旋转向量、欧拉⾓、四元数的关系向量的矩阵形式有两个向量:→a =(a 1,a 2,a 3)→b =(b 1,b 2,b 3)叉乘的结果表⽰⼀个向量,这个向量向量垂直于a,b 向量构成的平⾯。
→a ×→b =‖e 1e 2e 3a 1a 2a 3b 1b 2b 3‖=a 2b 3−a 3b 2a 3b 1−a 1b 3a 1b 2−a 2b 1=0−a 3a 2a 30−a 1−a 2a 10b 1b 2b 3=a ∧b将向量a 对应的矩阵表⽰出来,为⼀个反对称矩阵,每⼀个向量都对应着⼀个反对称矩阵。
这就引出向量的矩阵形式。
a ∧=0−a 3a 2a 30−a 1−a 2a 1坐标变换的易混点在齐次变换中p 1=T 12·p 2p 2=T 23·p 3T 12表⽰,把坐标系{2}的向量变换到坐标系{1}中,T 23同理,如果把坐标系{3}下的向量变换到坐标系{1}中为:p 1=T 12·T 23·p 3旋转向量和欧拉⾓: SO(3)的旋转矩阵有9个量,但是只有3个⾃由度,同理SE(3)有16个量,但是也只有6个⾃由度。
在实际的旋转中,任意的旋转都可⽤⼀个旋转轴和⼀个旋转⾓来表⽰,我们使⽤⼀个向量,⽅向与旋转轴⼀致,长度等于旋转⾓,这样只需要⼀个三维向量即可描述旋转。
对于SE(3),⽤⼀个旋转向量和⼀个平移向量即可表达,恰好⾃由度为6.如果⽤旋转向量来描述R :旋转轴为⼀个单位长度的向量n,⾓度为θ,那么θn 可以表⽰这个旋转。
旋转矩阵R 和旋转向量θn 的转换过程为罗德⾥格斯变换:R =cos θI +(1−cos θ)nn T +sin θn ∧此处末尾的n ∧ 如上⾯所⽰,代表矩阵表⽰的向量。
那么反过来通过旋转矩阵获取转⾓ θ;θ=arccostr (R )−12tr(R)为矩阵R 的迹。
对于转轴n,Rn=n;表⽰为转轴绕⾃⾝转动不⽣改变,从数学来说n 是矩阵R 特征值为1时对应的特征向量。
四元转换欧拉角得到的yaw
我们要找出四元数转换为欧拉角得到的yaw(偏航角)。
首先,我们需要了解四元数和欧拉角之间的关系。
四元数是一个包含四个元素的复数,通常表示为 q = w + xi + yj + zk,其中w, x, y, z是实数。
欧拉角是描述一个方向或旋转的三个角度,通常为roll(φ)、pitch(θ)和yaw(ψ)。
四元数转换为欧拉角的过程如下:
1. 从四元数中提取出旋转信息,得到旋转轴和旋转角度。
2. 使用旋转轴和旋转角度计算出roll、pitch和yaw。
具体来说,yaw可以通过以下公式计算:
yaw = arctan(2q_yq_z + 2q_wq_x) / (1 - 2q_x^2 - 2q_z^2) 其中,q_x, q_y, q_z, q_w 是四元数的四个元素。
现在,我们可以使用给定的四元数来计算yaw。
计算得到的yaw为:2.36弧度。
所以,四元数转换为欧拉角得到的yaw是:2.36弧度。
四元数与欧拉角(RPY角)的相互转换
四元数与欧拉⾓(RPY⾓)的相互转换RPY⾓与Z-Y-X欧拉⾓ 描述坐标系{B}相对于参考坐标系{A}的姿态有两种⽅式。
第⼀种是绕固定(参考)坐标轴旋转:假设开始两个坐标系重合,先将{B}绕{A}的X轴旋转γ,然后绕{A}的Y轴旋转β,最后绕{A}的Z轴旋转α,就能旋转到当前姿态。
可以称其为X-Y-Z fixed angles或RPY⾓(Roll, Pitch, Yaw)。
Roll:横滚 Pitch: 俯仰Yaw: 偏航(航向) 由于是绕固定坐标系旋转,则旋转矩阵为(cα is shorthand for cosα, sα is shorthand for sinα,and so on.)R XYZ(γ,β,α)=R Z(α)R Y(β)R X(γ)=cαcβcαsβsγ−sαcγcαsβcγ+sαsγsαcβsαsβsγ+cαcγsαsβcγ−cαsγ−sβcβsγcβcγ 另⼀种姿态描述⽅式是绕⾃⾝坐标轴旋转:假设开始两个坐标系重合,先将{B}绕⾃⾝的Z轴旋转α,然后绕Y轴旋转β,最后绕X轴旋转γ,就能旋转到当前姿态。
称其为Z-Y-X欧拉⾓,由于是绕⾃⾝坐标轴进⾏旋转,则旋转矩阵为:R Z′Y′X′(α,β,γ)=R Z(α)R Y(β)R X(γ)=cαcβcαsβsγ−sαcγcαsβcγ+sαsγsαcβsαsβsγ+cαcγsαsβcγ−cαsγ−sβcβsγcβcγ 可以发现这两种描述⽅式得到的旋转矩阵是⼀样的,即绕固定坐标轴X-Y-Z旋转(γ,β,α)和绕⾃⾝坐标轴Z-Y-X旋转(α,β,γ)的最终结果⼀样,只是描述的⽅法有差别⽽已。
In gerenal: three rotations taken about fixed axes yield the same final orientation as the same three rotations taken in opposite order about the axes of the moving frame.Axis-Angle与四元数 绕坐标轴的多次旋转可以等效为绕某⼀转轴旋转⼀定的⾓度。
四元数和欧拉角
四元数和欧拉角
四元数与欧拉角:
1、四元数
四元数是一种数学物体,它由ONE个实部和THREE个虚部组成。
实部是非负实数,其余的THREE个部分是虚数。
四元数的表达式可以表示为:Q=a+bi+cj+dk (a、b、c、d是实实部)。
它们有助于以三维空间中的方式表示方向和旋转。
离散空间中表示四元数,当旋转发生时,它们保持一致。
2、欧拉角:
欧拉角是一种三维旋转矢量,可以用来表示不同方向之间的关系。
它将旋转分成THREE个不同的轴,分别为X轴、Y轴和Z轴。
每个轴都有自己的旋转角度,比如X轴有X角度,Y轴有Y角度,Z轴有Z角度。
欧拉角的表达式可以写作:[X,Y,Z],其中X、Y、Z分别表示每个轴的旋转角度。
欧拉角与四元数之间的差别在于欧拉角表示的是不同方向间的关系,而四元数表示的是不同方向的空间旋转。
可以说四元数和欧拉角均是用来表示旋转有关信息的,但是又是有所差别的。
下面我们来总结下它们两者之间的区别:
1)表示方式不同:欧拉角表示的是不同方向间的关系,而四元数是表
示不同方向的空间旋转;
2)用途不同:欧拉角被广泛应用于3D图形学处理领域,可以很方便
地实现3D模型的几何变换;而四元数方便地表示空间任意的旋转变换,是用来表达机器人的运动控制中的基本角度表示方式;
3)值域不同:欧拉角的值域为[0,2π),而四元数的值域为[-1,1];
4)叠加角度表示方法不同:四元数是可以用乘法表达累加旋转;而欧
拉角只能使用加法来表达叠加旋转。
欧拉角与四元数之间的转换公式
欧拉角与四元数之间的转换公式
欧拉角和四元数都是描述旋转的方式。
欧拉角主要是用三个角度来描述旋转的方式,而四元数则使用一个四维的数值来描述旋转的方式。
在某些场景下,需要将欧拉角和四元数进行转换,下面是欧拉角和四元数之间的转换公式。
将欧拉角转换为四元数的公式:
令α、β、γ为绕x、y、z轴旋转的角度,分别对应欧拉角的俯仰角、偏航角、滚动角,将其转换为四元数q,公式如下:
q = cos(α/2)cos(β/2)cos(γ/2) +
sin(α/2)sin(β/2)sin(γ/2)i + sin(α/2)cos(β/2)cos(γ/2)j - cos(α/2)sin(β/2)sin(γ/2)k。
其中i、j、k分别为虚部。
将四元数转换为欧拉角的公式:
将四元数q转换为欧拉角时,需要考虑欧拉角的旋转顺序。
这里以ZYX欧拉角为例。
将四元数q转换为欧拉角α、β、γ的公式如下:α = atan2(2(qwqx + qyqz), 1 - 2(qx^2 + qy^2))。
β = asin(2(qwqy - qxqz))。
γ = atan2(2(qwqz + qxqy), 1 - 2(qy^2 + qz^2))。
其中,qw、qx、qy、qz分别为四元数q的实部和虚部。
三维旋转:旋转矩阵,欧拉角,四元数
三维旋转:旋转矩阵,欧拉⾓,四元数原⽂见我的,欢迎⼤家过去评论。
如何描述三维空间中刚体的旋转,是个有趣的问题。
具体地说,就是刚体上的任意⼀个点P(x, y, z)围绕过原点的轴(i, j, k)旋转θ,求旋转后的点P\'(x\', y\', z\')。
旋转矩阵旋转矩阵乘以点P的齐次坐标,得到旋转后的点P',因此旋转矩阵可以描述旋转,$$\begin{bmatrix}x'\\ y'\\ z'\\ 1\end{bmatrix}=R\cdot \begin{bmatrix}x\\ y\\ z\\ 1\end{bmatrix}$$绕x,y,或z轴旋转θ的矩阵为:$$R_{x}(\theta)=\begin{bmatrix}1 & 0 & 0\\ 0 & \cos\theta & -\sin\theta\\ 0 & \sin\theta & \cos\theta\end{bmatrix}$$$$R_{y}(\theta)=\begin{bmatrix}\cos\theta & 0 & -\sin\theta\\ 0 & 1 & 0\\ \sin\theta & 0 & \cos\theta\end{bmatrix}$$$$R_{z}(\theta)=\begin{bmatrix}\cos\theta & -\sin\theta & 0\\ \sin\theta & \cos\theta & 0\\ 0 & 0 & 1\end{bmatrix}$$所以,绕任意轴旋转的矩阵为$$R_{x}(-p)\cdot R_{y}(-q)\cdot R_{z}(\theta)\cdot R_{y}(q)\cdot R_{x}(p)$$这表⽰:1. 绕x轴旋转⾓度p使指定的旋转轴在xz平⾯上2. 绕y轴旋转⾓度q使指定的旋转轴与z轴重合3. 绕z轴旋转⾓度θ4. 绕y轴旋转⾓度-q5. 绕x轴旋转⾓度-p其中,p和q的值需要⽤i,j,k计算出来。
大话多旋翼飞行器--欧拉角与四元数
始先绕着 z-轴旋转 角值。然后,绕着 x-轴旋转 角值。最后,绕着 z-轴作角值 的
旋转” 我们通常使用的欧拉角是服从描述A)的。也就是绕着固定于刚体的坐标轴的三个旋转的复 合。为什么呢?因为对物体施加的转矩通常都是相对于物体自身的坐标轴的,控制上更直观 更容易。 另一个问题,欧拉角的三次旋转的旋转轴和旋转顺序。根据维基百科的说法,“在经典力 学里,时常用 zxz 顺规来设定欧拉角;照着第二个转动轴的轴名,简称为 x 顺规。另外, 还有别种欧拉角组。合法的欧拉角组中,唯一的限制是,任何两个连续的旋转,必须绕着 不同的转动轴旋转。因此,一共有 12 种顺规。例如,y 顺规,第二个转动轴是 y‐轴,时 常用在量子力学,核子物理学,粒子物理学。另外,还有一种顺规,xyz 顺规,是用在航空 航天工程学”。
a2通常用 表示,代表升降或俯仰(elevation or pitch)
a3通常用 表示,代表倾斜或横滚(bank or roll)
注意:有些书上a3用φ表示,其实 和φ是同一个字母的两种写法,本质是一样的。
小常识:
根据第一部分的介绍,可以知道,经过三个欧拉角转动后,世界坐标系下的一个矢量 rW=(xW,yW,zW)与其对应的运载体坐标系下的矢量rB=(xB,yB,zB)之间的关系可以表示为
个多体系统提供一个统一的参照坐标系。在物体上要建立一个局部坐标系,称为 BCS(Body Coordinate System),一方面用来描述物体在 GCS 内的位置和姿态,另一方面,为物体上的 点或其它坐标系提供局部的确定位置和姿态的标准。此外,在物体上可以根据需要建立其它 的坐标系,例如,为描述物体上的约束及列写约束方程,需要建立约束的坐标系。 //==========================================================================
四旋翼无人机飞行控制中四元数与欧拉角的转换
四旋翼无人机飞行控制中四元数与欧拉角的转换作者:陈孟臻来源:《科学导报·学术》2019年第45期摘; 要:在四旋翼无人机飞行控制环路中,欧拉角便于终端输出,适合人的直观观察和理解,方便人为调整姿态控制参数,进而调整四旋翼飞行姿态,但是占用内存较大。
而四元数占用内存少,且方便在环路控制中实现插值操作,因此可提高机器运算速度,实现快速参数设定,因此研究四元数与欧拉角之间的转换方式具有一定的研究意义。
关键词:无人机;姿态;四元数;欧拉角1 四元数四元数(Quaternions)是简单的超复数,由爱尔兰数学家哈密顿在1843年提出的数学概念,总所周知复数是由实数加上虚数单位i组成,其中。
相似地,四元数都是由实数加上三个虚数单位i、j、k 组成,而且它们有如下的关系:四元数一般可表示为a+bi+cj+dk,其中a、b、c、d是实数,称为四元数的模。
为了说明是a+bi+cj+dk怎么和三维旋转结合在一起的,使用如下式子来表示一个四元数:q =(x,y,z),w)=(v,w),其中:其中v是向量,w是实数。
使用一个四元数:,来执行一个旋转,即把空间中一个P点绕着单位向量轴u=(x,y,z)表示旋转轴旋转角度θ,当把P点扩展到四元数空间,即p=(P,0),旋转后新的点对应的新坐标为:。
2.从欧拉角到四元数欧拉旋转是最接近自然理解的一种旋转方式,日常生活中常这些轴称为前、后、左、右、上、下、这意味着在旋转之前需要指明一个顺序。
其按照一定的坐标轴顺序(例如先x、再y、最后z)、每個轴旋转一定角度来变换坐标或向量,它实际上是一系列坐标轴旋转的组合。
给定一个旋转顺序(例如z、x、y),以及它们对应的旋转角度(φ,θ,ψ),不同的坐标选择结果不一样。
欧拉旋转的数学实现常见使用3×3矩阵:在四旋翼无人机飞行控制中,规定航空次序欧拉角为:Z轴(yaw,ψ),Y轴(pitch,θ),X轴(roll,φ),其中,pitch是围绕X轴旋转,也叫做俯仰角;yaw是围绕Y轴旋转,也叫偏航角;roll是围绕Z轴旋转,也叫翻滚角。
四元数与欧拉角间的转换
四元数与欧拉角之间的转换早在1843年哈米尔顿就提出了四元数的基本概念[138],但当时仅停留在理论概念的讨论上。
20世纪以来,随着航天、航空工业的发展,四元数得到了广泛地实际应用[139-142]。
四元数的定义为[143]4q ⎛⎫≡ ⎪⎝⎭Q q(0-1)式中:123(,,)sin 2T q q q α≡=Q e (0-2)4cos2q α= (0-3)其中,e 是沿旋转轴的单位向量,α是旋转角度。
四元数满足约束条件1T =q q(0-4)四元数与姿态矩阵具有如下关系:224334222212341234132422221234123423142222132423141234()22[]()()2()2()2()2()2()2()T T q I q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q q ⨯=-+-⨯=Ξψ⎛⎫--++-⎪=--+-++ ⎪⎪+---++⎝⎭A Q QQ Q q q q(0-5)其中,33⨯I 是33⨯单位矩阵,433[]()T q ⨯+⨯⎛⎫Ξ≡ ⎪-⎝⎭I Q q Q(0-6)433[]()T q ⨯-⨯⎛⎫ψ≡ ⎪-⎝⎭I Q q Q(0-7)3231210[]00q q q q q q -⎛⎫ ⎪⨯=- ⎪ ⎪-⎝⎭Q (0-8)地面坐标系Axyz 和弹体坐标系O 1x 1y 1z 1的关系可以用下式来表示=b Ar(0-9)其中,b 、r 分别为某向量在弹体坐标系和地面坐标系中的表示形式,A 的表达形式见错误!未找到引用源。
,具体为cos cos sin cos sin sin cos cos sin sin cos cos sin sin cos cos sin sin cos sin sin cos cos sin sin sin sin cos cos ϑψϑϑψϑψγψγϑγϑψγψγϑψγψγϑγϑψγψγ-⎛⎫⎪=-++ ⎪ ⎪+--+⎝⎭A(0-10)比较式(0-5)和式(0-10),得到姿态角的四元数表示131324222211123412123432231422222212342()arctan arctan arcsin arcsin 2()2()arctan arctan q q q q q q q q q q q q q q q q q q q q ψθφ⎧-=-=-⎪--+⎪⎪==+⎨⎪-⎪=-=-⎪-+-+⎩q q q q q A A A A A (0-11)也可以用姿态角来表示四元数q ,即(cossinj)(cossinj)(cos sin j)222222ψψθθφφ=+⊗+⊗+q(0-12)其中,符号⊗表示四元数乘法,其定义如下[144-145]41234123(i j k)(i j k)A A A A B B B B ⊗=+++⊗+++A B44123114322341232143B A A A A B A A A A A A A A B A A A A B ---⎛⎫⎛⎫ ⎪ ⎪- ⎪⎪= ⎪⎪- ⎪ ⎪ ⎪-⎝⎭⎝⎭44112233144132232431421334211243()()i ()j ()kA B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B =---++-++++-+-++(0-13)其中,4123i j k A A A A =+++A 和4123i j k B B B B +++B =均为四元数。
四元数与欧拉角
四元数的定义 四元数的运算 利用四元数进行旋转变换 利用四元数进行旋转合成
1
1.1*四元数(quaternions)定义
一个有固定点的刚体通过绕该点的某个轴转 过特定角度可达到任何姿态
转轴的方向可以表示成一个单位矢量:
n cos i cos j cos k
n
则描述该转动的四元数可以表示成:
x' (2 P12 P22 P32 )x 2(P1P2 P3 ) y 2(P1P3 P2 )z
y' 2(P1P2 P3 )x (2 P22 P12 P32 ) y 2(P2P3 P1)z z' 2(P1P3 P2 )x 2(P2P3 P1) y (2 P32 P12 P22 )z
22
4.2*四元数合成: 映像的方式
每次转动的瞬时转轴都以映像方式给出.
对第一次转动, 瞬时转轴 n1 的映像 方式和非映像方式相同:
n1 ne1 k
因此
q1
cos
2
sin
2
k
23
4.2 四元数合成: 映像的方式
第二次转动绕着 OX’ 转过了θ
转轴
n2
沿着
OX’
n2 i'
n2
在坐标系
x' y'
2
P12 P22 P32
2(P1P2 P3 )
z' 2(P1P3 P2 )
2(P1P2 P3 ) 2 P22 P12 P32
2(P2P3 P1)
2(P1P3 P2 ) 2(P2P3 P1)
x
y
2 P32 P12 P22 z
C 方向余弦矩阵
16
3.4 四元数转动变换的两种形式
欧拉角与四元数
四元数与旋转一.四元组基础Q(x,y,z,w),其中x,y,z用来确定旋转轴,w为旋转的角度Q=w+xi+yj+zk,i,j,k为三个虚轴的单位分量I*j=kJ*k=i;K*i=j;叉乘:c=a × b=| i j k||a1 b1 c1||a2 b2 c2|=(b1c2-b2c1,c1a2-a1c2,a1b2-a2b1)c也为一个向量,且c的长度为|a||b|sin(theta),垂直于a和b所在的平面,方向由右手法则来判定,用右手的四指先表示向量a的方向,然后手指朝着手心的方向摆动到向量b的方向,大拇指所指的方向就是向量c 的方向1.四元组相乘:Q1=w1+x1i+y1j+z1k=(w1,v1)Q2=w2+x2i+y2j+z2k=(w2,v2)Q1*Q2=(w1*w2-<v1,v2>,w1*v2+w2*v1+v1xv2)( w1+x1i+y1j+z1k)*( w2+x2i+y2j+z2k)=w1*w2-x1*x2-y1*y2-z1*z2+(W1*x2+x1*w2+y1*z2-z1-y2)i+(y1*w2+w1*y2+z1*x2-x1*z2)j+(w1*z2+z1*w2+x1*y2-y1*x2)k对于其中的轴部分,假如v1//v2,则有v1 x v2=0(平行向量的叉乘结果为0)2.四元组的点乘,点乘积为数值:Q1.*Q2=w1*w2+<v1,v2>=w1*w2+x1*x2+y1*y2+z1*z2;3.数乘s为一实数,q为四元组,则有sq=qs4.共轭p=(w,v),则p*=(w,-v)(pq)*=q*p*N(q)=w2+x2+y2+z2q-1=q*/N(q)---------------显然可得qq-1=(1,0)二.使用四元数旋转向量假如有一表示向量的四元组q=(w,v),对其应用旋转量p后的结果为:q’=pqp-1=(w,v’)从上可以看出,计算的结果q’的实部和q的实部是相等的,并且有N(v)=N(v’)如果N(q)=1,则可以令q=(cosa,usina),u也为一个单位向量,则q’是q绕u旋转2a个弧度的结果假如S(q)表示q的实部,则有2S(q)=q+q*2S(pqp-1)= pqp-1+( pqp-1)*=pqp*+(pqp*)*=pqp*+pq*p*=p(q+q*)p*=2S(q)(这里由于p是单位四元数,所以有p-1等于p*)欧拉角到四元数的转换定义pitch, yaw, roll分别为绕X轴、Y轴、Z轴的旋转弧度float p = pitch * PIOVER180 / 2.0;float y = yaw * PIOVER180 / 2.0;float r = roll * PIOVER180 / 2.0;float sinp = sin(p);float siny = sin(y);float sinr = sin(r);float cosp = cos(p);float cosy = cos(y);float cosr = cos(r);this->x = sinr * cosp * cosy - cosr * sinp * siny;this->y = cosr * sinp * cosy + sinr * cosp * siny;this->z = cosr * cosp * siny - sinr * sinp * cosy;this->w = cosr * cosp * cosy + sinr * sinp * siny;normalise();三.使用matlab进行相关计算计算两个向量v1和v2之间的旋转量四元数p,使得v1应用p后到达v2假如v1转到v2的旋转轴为v,旋转角为theta,则q=[v*cos(theta/2)sin(theta/2)]Matlab代码:function q=vector2q(v1,v2)%..normalize....len1=sqrt(v1*v1');len2=sqrt(v2*v2');v1=v1/len1;v2=v2/len2;angle=v1*v2';axis=cross(v1,v2);alen=sqrt(axis*axis');axis=axis/alen;t=acos(angle);t=t/2;q(1)=axis(1)*sin(t);q(2)=axis(2)*sin(t);q(3)=axis(3)*sin(t);q(4)=cos(t);end计算出了q之后,可以获得对应的旋转矩阵,旋转矩阵的计算Matlab里面的矩阵是以列为主顺序的function r=q2rot(q)w=q(4);x=q(1);y=q(2);z=q(3);r=zeros(3,3);r(1,1)=1-2*y*y-2*z*z;r(1,2)=2*x*y+2*w*z;r(1,3)=2*x*z-2*w*y;r(2,1)=2*x*y-2*w*z;r(2,2)=1-2*x*x-2*z*z;r(2,3)=2*z*y+2*w*x;r(3,1)=2*x*z+2*w*y;r(3,2)=2*y*z-2*w*x;r(3,3)=1-2*x*x-2*y*y;r=r';end同时,也可以根据四元数来计算欧拉角function R=q2euler(q)w=q(4);x=q(1);y=q(2);z=q(3);t11=2*(w*x+y*z);t12=1-2*(x*x+y*y);R(1)=atan2(t11,t12);t2=2*(w*y-z*x);R(2)=asin(t2);t31=2*(w*z+x*y);t32=1-2*(y*y+z*z);R(3)=atan2(t31,t32);end计算出来的欧拉角rx,ry,rz,分别为绕X轴、Y轴和Z轴的旋转角,假如有:Rotq=q2rot(q)R=q2euler(q)[rotx roty rotz]=Rotation(R)可以发现Rotq==rotz*roty*rotx从这里可以看出,上面使用四元数这样计算出来的旋转矩阵的旋转顺序分别是X轴、Y轴和Z轴的ra=pi/4;qz=[0 0 -sin(ra) cos(ra)] %绕z旋转-90度qy=[0 sin(ra) 0 cos(ra) ] %绕y旋转90度qyz=qmult(qy,qz)r=q2euler(qyz)上面的r得出的结果为r = -1.5708 0.0000 -1.5708也就是说其几何意义变成先绕X轴旋转-90度,再绕Z轴旋转-90度,而根据qy和qz的相乘我们实际进行的操作却是先绕Z轴旋转-90度,再绕Y轴旋转90度,但是结果却是这两种操作等价,这说明由四元数到欧拉角可以有多个解两个四元数,假如它们的方向是相反的,用它们作用于向量得到的新向量的值仍然相等q1=[0.024666 -0.023954 0.504727 0.862594];arm=[-8.881719 6.037597 -2.36776];q2=-q1;rot1=q2rot(q1);rot2=q2rot(q2);v1=rot1*arm'v2=rot2*arm'上面计算出来的v1等于v2四元数的余弦值为它们的内积假如余弦值小于0,则需要将其中的一个取反,因为上面我们知道一个四元数和它的反方向的四元数对一个向量起相同的作用四元数的相乘,代表旋转的累积pq=p*q;rotp=q2rot(p);rotq=q2rot(q);rotpq=q2rot(pq);rotmul=rotp*rotq;这里rotpq与rotmul相等四. OGRE中Quaternion类的几个函数1.四元数到旋转向量void Quaternion::ToRotationMatrix (Matrix3& kRot) const1 - 2*qy2 -2*qz22*qx*qy -2*qz*qw2*qx*qz +2*qy*qw2*qx*qy + 2*qz*qw 1 - 2*qx2 -2*qz22*qy*qz -2*qx*qw2*qx*qz -2*qy*qw 2*qy*qz +2*qx*qw1 - 2*qx2 -2*qy22.旋转量到四元数根据1中的表格,有:4 *(1-qx2-qy2-qz2) = 1 + m00 + m11 + m22又qw2=1-qx2-qy2-qz2,可得4 *qw2= 1 + m00 + m11 + m22这里解qw必须保证1 + m00 + m11 + m22>=0,如果不是的话,就构造其他的等式来计算,OGRE中分成两种情况,一种是m00 + m11 + m22>=0,就可以直接先解出qw,否则的采用另外的等式计算3.Local axisVector3 xAixs(void) const;取得旋转矩阵的第一列,旋转矩阵和一个向量相乘的话,第一列的数据均和向量的x分量相乘Vecotr3 yAxis(void) const;取得旋转矩阵的第二列,旋转矩阵和一个向量相乘的话,第二列的数据均和向量的y分量相乘Vecotr3 zAxis(void) const;取得旋转矩阵的第三列,旋转矩阵和一个向量相乘的话,第三列的数据均和向量的z分量相乘。
4.6-4.7欧拉角和四元数表示
4.7 物体朝向的四元数表示和插值技术
. e i j k
e e i j k
i i -e -k j
j j k -e -i
k k -j i -e
即e作为乘法单位元,而i,j,k按i->j->k->i的次序,相邻两单位元按箭头顺 序相乘等于第三单位元,与箭头顺序反方向相乘则等于第三个单位元的负元.
计算机动画的算法基础
4.6 物体朝向的欧拉角表示和插值技术
4.7 物体朝向的四元数表示和插值技术
4.7.1 四元数的定义及基本性质
4.7.2 四元数、欧拉角、旋转矩阵之间的相互转换
任 歆
4.6 物体朝向的欧拉角表示和插值技术
物体朝向最常见的表示方法为欧拉角,如图:
4.6 物体朝向的欧拉角表示和插值技术
4.7.2 四元数、欧拉角、旋转矩阵之间的相互转换
4.7.2 四元数、欧拉角、旋转矩阵之间的相互转换
三个欧拉角对应的齐次旋转矩阵为
4.6 物体朝向的欧拉角表示和插值技术
复合成旋转矩阵
:
若不了解这个特定的次序,有可能得到和意愿不同的反转。
4.6 物体朝向的欧拉角表示和插值技术
欧拉角在应用中的缺点:
1.用欧拉角难以建立任意的朝向
2.在插值朝向时会带来问题
4.6 物体朝向的欧拉角表示和插值技术
“万向节死锁”现象,即自由度的突然丧失:
4.7 物体朝向的四元数表示和插值技术
满足乘法结合律,分配律,但是不满足交换律:
4.7 物体朝向的四元数表示和插值技术
Unity欧拉角与四元数的关系
Unity 3D中欧拉角与四元数关系在Unity 3D游戏引擎中,物体的方位是用四元数的形式来存储的,但界面上给用户呈现的却是欧拉角。
用户设置的欧拉角会先转化为四元数,最终转化为新的欧拉角,而每一个欧拉角都可以用两个四元数来表示,这样就会使问题变得非常复杂。
这里给出了欧拉角的两种约定和欧拉角与四元数的数学表达式,通过对欧拉角和四元数在Unity3D游戏引擎中的实例应用的分析研究,将两者之间的转换关系做出了详细的说明。
在Unity3D 游戏引擎中,用方位来表征物体的旋转姿态,这是一个状态变量,方位可以采用旋转矩阵、欧拉角和四元数三种方法来描述。
在引擎中采用四元数来定义方位,但四元数不直观,设置困难,因此一般给用户呈现的是欧拉角。
由于欧拉角可以任意设置,理论上同一个方位可以用无数个欧拉角来表示,也可以用两个四元数来表示。
但Unity 3D 引擎只用一个四元数来定义方位,这就造成了四元数与欧拉角一对多(1:n)的问题。
采用四元数定义物体方位又带来另外一个问题,就是同一个方位可以用两个四元数来表示,这又形成了1:2 的问题。
因此同一个方位对应两个四元数和无数个欧拉角。
用户为物体设置好的欧拉角会转化为系统内部的四元数,由系统内部的四元数又可以转化成一个新的欧拉角。
因此转换过程是:用户设置欧拉角→系统内部四元数→新欧拉角。
虽然是同一个方位,但用户设置的欧拉角和系统生成的欧拉角在数据表现上并不相同,这会给学习Unity 3D 游戏引擎带来巨大障碍,这里从欧拉角和四元数的数学定义和转换公式入手,详细阐明其在Unity 3D 中的基本原理,并通过具体实例讲解了两者的应用过程。
欧拉角的概念欧拉角是用来定义方位的一种表示,它有两种约定分别是“heading-pitch-bank”约定和“roll -pitch-yaw”约定。
“heading-pitch-bank”约定是首先把物体坐标系和惯性坐标系对齐,物体旋转顺序为:y → x →z。
浅析欧拉角与四元数
Z
p'
YБайду номын сангаас
用另一个四元数表示旋转:
X
p
Machine Perception and Interaction Group (MPIG)
欧拉角转四元数
设三次旋转对应的四元数分别为: 则: 绕x轴单位向量(1, 0, 0)旋转角度φ 绕y轴单位向量(1, 0, 0)旋转角度θ 绕z轴单位向量(1, 0, 0)旋转角度ψ
四元数的基本性质
3. 共轭
4. 模长
5.两个四元数乘积的模即为模的乘积, 这保证单位四元数 相乘后仍是单位四元数。
Machine Perception and Interaction Group (MPIG)
四元数的基本性质
6. 逆
(1) 四元数和自己的逆的乘积为实四元数1:
MPIG Seminar 0048
欧拉角和四元数
郑雪鹤
Machine Perception and Interaction Group (MPIG)
zxh@
MPIG Seminar 0048
郑雪鹤
Machine Perception and Interaction Group (MPIG)
四元数表示旋转
假设某个旋转是绕单位向量:
则描述该转动的四元数可以表示成:
反之,我们亦可通过任意一个长度为1的四元数,计算对应旋转轴与夹角
右手法则旋转
Machine Perception and Interaction Group (MPIG)
四元数表示旋转
用一个虚四元数来描述一个三维空间点:
( y)
( x)
欧拉角与四元数之间的转换数学公式
欧拉角与四元数之间的转换数学公式欧拉角和四元数是两种广泛应用于机器人、航空、姿态控制等领域的旋转表示方法。
它们之间的转换是非常有用的,在实际应用中经常需要将一个旋转表示方法转换成另一个。
本文将介绍欧拉角和四元数之间的转换数学公式,以及它们的应用。
欧拉角是一种旋转表示方法,它将旋转分解成三个轴向旋转的组合。
欧拉角共有12种表示方式,其中最常用的是ZYZ方式。
它将一个旋转分解为绕Z轴旋转一个角度,绕新的Y轴旋转一个角度,再绕新的Z轴旋转一个角度。
欧拉角的转换公式如下:$$begin{bmatrix} alpha beta gamma end{bmatrix} =begin{bmatrix} atan2(r_{23},r_{33}) asin(-r_{13})atan2(r_{12},r_{11}) end{bmatrix}$$其中,r是旋转矩阵,α、β、γ是绕Z、Y、Z轴旋转的角度。
四元数是一种用四元组表示旋转的方法。
它比欧拉角更为简洁、稳定,并且没有万向锁问题。
四元数的转换公式如下:$$begin{bmatrix} q_w q_x q_y q_z end{bmatrix} =begin{bmatrix} cos(theta/2) sin(theta/2) * n_x sin(theta/2) * n_y sin(theta/2) * n_z end{bmatrix}$$其中,q是四元数,θ是旋转角度,n是旋转轴向量。
四元数的逆转换公式如下:$$begin{bmatrix} theta n_x n_y n_z end{bmatrix} = begin{bmatrix} 2 * acos(q_w) q_x / sqrt{1-q_w^2} q_y /sqrt{1-q_w^2} q_z / sqrt{1-q_w^2} end{bmatrix}$$ 欧拉角和四元数之间的转换可以通过以下公式实现:$$begin{bmatrix} q_w q_x q_y q_z end{bmatrix} = begin{bmatrix} cos(alpha/2) * cos(beta/2) * cos(gamma/2) + sin(alpha/2) * sin(beta/2) * sin(gamma/2) sin(alpha/2) * cos(beta/2) * cos(gamma/2) - cos(alpha/2) * sin(beta/2) * sin(gamma/2) cos(alpha/2) * sin(beta/2) * cos(gamma/2) + sin(alpha/2) * cos(beta/2) * sin(gamma/2) cos(alpha/2) * cos(beta/2) * sin(gamma/2) - sin(alpha/2) * sin(beta/2) * cos(gamma/2) end{bmatrix}$$$$begin{bmatrix} alpha beta gamma end{bmatrix} = begin{bmatrix} atan2(2(q_w*q_x+q_y*q_z),1-2(q_x^2+q_y^2)) asin(2(q_w*q_y-q_z*q_x))atan2(2(q_w*q_z+q_x*q_y),1-2(q_y^2+q_z^2)) end{bmatrix}$$ 通过欧拉角和四元数之间的转换,可以方便地在不同领域应用中进行旋转表示的转换。
四元数转欧拉角奇异值问题
四元数转欧拉角奇异值问题四元数和欧拉角作为常见的表示方法,在计算机图形学和机器人领域中广泛应用。
在四元数表示角度时,存在着一些奇异值问题,会使得欧拉角的转换结果出现异常,本文将对此进行详细的阐述。
一、四元数简介四元数是一种扩充了实数的数学结构,它包括一个实数部分和三个虚数部分,可以表示旋转和剪切等变换。
四元数形式上可以写成 $q = w + xi + yj + zk$,其中 $w, x, y, z$ 都是实数,$i, j, k$ 是三个虚数单位,它们的平方分别等于-1。
四元数通过旋转的方式来表示角度。
例如,单位四元数可以表示3D中的转动180度绕轴 $(1,1,1)$,则可以写成:$$q = [\cos(\theta/2),\sin(\theta/2)\frac{1}{\sqrt{3}},\sin(\theta/2)\frac{1}{\sqrt{3}},\sin(\theta/2)\frac{1}{\sqrt{3}}]$$其中,$\theta$ 是旋转的角度。
二、欧拉角简介欧拉角是一种表示旋转的方式,它通过描述旋转的三个角度来确定旋转的方向。
欧拉角可以通过任何航向、俯仰、翻转(yaw-pitch-roll)的组合来表示。
例如,将 3D 物体绕 X 轴旋转30度,然后绕 Y 轴旋转45度,再绕 Z 轴旋转 60 度,这个过程可以用以下的欧拉角表示:$$\alpha = 30^\circ,\beta = 45^\circ,\gamma = 60^\circ$$当然,在欧拉角的表示中也存在固有的问题,例如欧拉角的万向锁问题等。
但是,在本文中,我们主要探讨的问题是四元数转为欧拉角时可能会遇到的问题。
三、四元数转换为欧拉角在将四元数转换为欧拉角时,我们可以首先计算对应的旋转矩阵,然后通过该矩阵计算欧拉角。
假设四元数为$q = [w, x, y, z]$,则相应的旋转矩阵可以表示为:$$\left[\begin{matrix} 1 - 2(y^2+z^2)& 2(xy-wz)& 2(xz+wy)\\ 2(xy+wz)& 1-2(x^2+z^2)& 2(yz-wx)\\ 2(xz-wy)& 2(yz+wx)& 1 - 2(x^2+y^2)\end{matrix}\right]$$根据四元数到旋转矩阵的转换方法,我们可以通过这个矩阵计算出欧拉角,例如:$$\alpha = \tan^{-1}(\frac{-m_{23}}{m_{33}})$$$$\beta = \sin^{-1}(m_{13})$$$$\gamma = \tan^{-1}(\frac{-m_{12}}{m_{11}})$$其中 $m_{ij}$ 表示旋转矩阵中的第 $i$ 行第$j$ 列的元素。
不同坐标系下欧拉角变换时四元数的关系
不同坐标系下欧拉角变换时四元数的关系在数学的奇妙世界里,咱们来聊聊不同坐标系下欧拉角变换时四元数的关系这一有趣的话题。
咱们先得知道啥是欧拉角。
这欧拉角啊,就像是描述物体姿态的三把小钥匙。
想象一下,一个小方块在空间里摆着各种姿势,这欧拉角就能把它的倾斜、旋转等状态给表示出来,多神奇呀。
就好像你要描述一个调皮的小宠物在房间里各种奇葩的姿势一样,欧拉角就起到这个作用。
那四元数呢?四元数啊,它像是一个神秘的小盒子。
这个小盒子里装着关于旋转的一些特别的信息。
你要是想知道一个物体在空间里是怎么转的,四元数就能给你答案。
现在来说说不同坐标系下的事儿。
不同的坐标系就好比不同的舞台。
在这个舞台上,物体的旋转表现可能就不一样。
比如说,在一个方形的舞台上,小演员(物体)的旋转动作看起来是一种样子,换到圆形舞台上,可能看起来就完全不同了。
当我们涉及到欧拉角变换的时候,就像是小演员在不同舞台之间转换自己的表演风格。
这时候,四元数和欧拉角之间的关系就变得特别微妙了。
咱们假设一个例子。
就像有一个小机器人,它在自己的小世界里活动。
这个小世界有不同的坐标系,可能是为了适应不同的任务。
当小机器人要从一个坐标系下的任务切换到另一个坐标系下的任务时,它的姿态需要改变,这时候就涉及到欧拉角的变换。
那四元数呢?四元数就像是这个小机器人的内部小助手。
小机器人姿态要变,四元数就得根据欧拉角的变换做出相应的调整。
就像你要换衣服去参加不同的活动,衣服(四元数)得根据你活动的性质(欧拉角变换)来选择合适的搭配。
在这个过程中,它们之间有着一种内在的联系。
这种联系不是那么容易一眼看穿的。
就好比一个复杂的魔术,你看到魔术师把东西变来变去,你知道这里面有秘密,但就是不知道具体是怎么回事。
我们得深入到数学的本质里去探究。
对于不同坐标系下的欧拉角变换,四元数要满足一定的数学规则。
这就像是在一场游戏里,每个角色都有自己的规则要遵守。
四元数在欧拉角变换时,就像是要遵循一个特殊的游戏规则手册。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
欧拉角表示旋转矩阵
旋转顺序下的旋转矩阵
Machine Perception and Interaction Group (MPIG)
欧拉角表示旋转矩阵
旋转顺序下的旋转矩阵
Machine Perception and Interaction Group (MPIG)
欧拉角的基本概念
(3) Yaw 偏航角 ψ
Machine Perception and Interaction Group (MPIG)
三个欧拉角的独立性
z ( z )
O
( z, z ' ) y y
y'
乘法
Machine Perception and Interaction Group (MPIG)
四元数的基本性质
乘法
由于最后一项外积的存在,该乘法通常是不可交换的,除非共线
Machine Perception and Interaction Group (MPIG)
Machine Perception and Interaction Group (MPIG)
四元数
四元数
quaternion
Machine Perception and Interaction Group (MPIG)
四元数
其中i,j,k为四元数的三个虚部,这三个虚部满足关系式:
x
x ( x' )
总结
确定欧拉角 , , 在任意时刻的大小,也就确定了刚体在任意时 刻的位形
不唯一
奇异点
Machine Perception and Interaction Group (MPIG)
总结
确定欧拉角 , , 在任意时刻的大小,也就确定了刚体在任意时 刻的位形
四元数的基本性质
3. 共轭
4. 模长
5.两个四元数乘积的模即为模的乘积, 这保证单位四元数 相乘后仍是单位四元数。
Machine Perception and Interaction Group (MPIG)
四元数的基本性质
6. 逆
(1) 四元数和自己的逆的乘积为实四元数1:
四元数表示旋转
假设某个旋转是绕单位向量:
则描述该转动的四元数可以表示成:
反之,我们亦可通过任意一个长度为1的四元数,计算对应旋转轴与夹角
右手法则旋转
Machine Perception and Interaction Group (MPIG)
四元数表示旋转
用一个虚四元数来描述一个三维空间点:
Machine Perception and Interaction Group (MPIG)
总结
确定欧拉角 , , 在任意时刻的大小,也就确定了刚体在任意时 刻的位形
不唯一 万向 节锁
Machine Perception and Interaction Group (MPIG)
四元数转欧拉角
旋转序为Z-Y-X时,旋转矩阵可以表示为:
Machine Perception and Interaction Group (MPIG)
四元数转欧拉角
于是:
Machine Perception and Interaction Group (MPIG)
欧拉角表示旋转矩阵
绕Y轴旋转θ
Machine Perception and Interaction Group (MPIG)
欧拉角表示旋转矩阵
绕X轴旋转φ
Machine Perception and Interaction Group (MPIG)
( y)
( x)
x
x ( x' )
Roll Pitch Yaw
Machine Perception and Interaction Group (MPIG)
欧拉角表示旋转矩阵
绕Z轴旋转ψ
Machine Perception and Interaction Group (MPIG)
欧拉角的基本概念
(1) Roll 滚转角φ
Machine Perception and Interaction Group (MPIG)
欧拉角的基本概念
(2) Pitch 俯仰角θ
Machine Perception and Interaction Group (MPIG)
zxh@
欧拉角的基本概念
1.描述定点转动刚体的位形需要三个独立坐标变量。
2.描述定轴转动刚体的位形只个相互独立的定轴转动, 相应的三个相互独立的转角,即欧拉角。
Machine Perception and Interaction Group (MPIG)
n
Z
p'
Y
用另一个四元数表示旋转:
X
p
Machine Perception and Interaction Group (MPIG)
欧拉角转四元数
设三次旋转对应的四元数分别为: 则: 绕x轴单位向量(1, 0, 0)旋转角度φ 绕y轴单位向量(1, 0, 0)旋转角度θ 绕z轴单位向量(1, 0, 0)旋转角度ψ
Machine Perception and Interaction Group (MPIG)
四元数的基本性质
1. 加法和减法
2.乘法
Machine Perception and Interaction Group (MPIG)
四元数的基本性质
总结
确定欧拉角 , , 在任意时刻的大小,也就确定了刚体在任意时 刻的位形
z ( z )
O
( z, z ' ) y y
y'
( y)
( x)
Machine Perception and Interaction Group (MPIG)
奇异点
Machine Perception and Interaction Group (MPIG)
总结
• • • • 理论上,欧拉旋转可以靠这种顺序让一个物体指到任何一个想要的方向 但如果在旋转中不幸让某些坐标轴重合了就会发生万向节锁 这时就会丢失一个方向上的旋转能力 也就是说在这种状态下我们无论怎么旋转(当然还是要原先的顺序)都不可 能得到某些想要的旋转效果 • 除非我们打破原先的旋转顺序或者同时旋转3个坐标轴 • 由于万向节锁的存在,欧拉旋转无法实现球面平滑插值。
程序实现
MATLAB
Machine Perception and Interaction Group (MPIG)
谢谢
Machine Perception and Interaction Group (MPIG)
MPIG Seminar 0048
欧拉角和四元数
郑雪鹤
Machine Perception and Interaction Group (MPIG)
zxh@
MPIG Seminar 0048
郑雪鹤
Machine Perception and Interaction Group (MPIG)
Machine Perception and Interaction Group (MPIG)
欧拉角转四元数
设三次旋转对应的四元数分别为: 则:
Machine Perception and Interaction Group (MPIG)
(2) 单位四元数的逆等于共轭
Machine Perception and Interaction Group (MPIG)
四元数表示旋转
逆时针方向旋转ϴ
Machine Perception and Interaction Group (MPIG)