欧拉角、四元数和旋转矩阵

旋转变换

旋转变换最为直观的表示方法是“轴-角”:绕着某一个过原点轴,旋转某一角度。
轴可以用一个单位长度的点 [ w 1 , w 2 , w 3 ] [w_1,w_2,w_3] [w1,w2,w3]表示:原点到该点的射线即为此轴。
使用右手坐标系,拇指指向轴方向,四指方向即为旋转的方向。
一个旋转变换可以用用欧拉角、四元数或者旋转矩阵表示。以下讨论不同表示方法之间的关系,以及旋转变换的合成、取逆等操作。

旋转矩阵

旋转可以看做一种特殊的坐标变换,而坐标变换可以用用 3 × 3 3\times 3 3×3矩阵 R R R来表示。对一个坐标施加旋转的结果是 x ′ = R x x'=Rx x=Rx
旋转矩阵可以在不同坐标系之间进行变换,但不能进行“反演”,即不能在左手系和右手系之间进行变换。
旋转矩阵是正交矩阵,即 ∣ R ∣ = 1 |R|=1 R=1,旋转变换不改变向量的长度。

欧拉角的物理意义

任何一个旋转可以表示为依次绕着三个旋转轴旋三个角度的组合。这三个角度称为欧拉角。
三个轴可以指固定的世界坐标系轴,也可以指被旋转的物体坐标系的轴。三个旋转轴次序不同,会导致结果不同。
本文中提到的欧拉角指:绕着世界坐标系的x,y,z轴,依次旋转的结果。其取值范围如下:
θ x ∈ ( − π , π ) , θ y ∈ ( − π 2 , π 2 ) , θ z ∈ ( − π , π ) \theta_x\in (-\pi,\pi), \theta_y \in (-\frac{\pi}{2}, \frac{\pi}{2}), \theta_z \in (-\pi, \pi) θx(π,π),θy(2π,2π),θz(π,π)

欧拉角 → \to 旋转矩阵

单独绕一个轴旋转 θ \theta θ角度的旋转矩阵为:
这里写图片描述

如果依次绕x轴、y轴、z轴旋转,该变换的旋转矩阵为:
R = R z ⋅ R y ⋅ R x R=R_z \cdot R_y \cdot R_x R=RzRyRx

记三个轴欧拉角的正弦和余弦函数为 s x , c x , s y , c y , s z , c z s_x, c_x, s_y, c_y, s_z, c_z sx,cx,sy,cy,sz,cz。使用matlab的syms功能可以轻松推导旋转矩阵 R R R

[ c y c z c z s x s y − c x s z s x s z + c x c z s y c y s z c x c z + s x s y s z c x s y s z − c z s x − s y c y s x c x c y ] \left[ \begin{matrix} c_yc_z & c_z s_x s_y - c_x s_z & s_x s_z + c_x c_z s_y \\ c_y s_z & c_x c_z + s_x s_y s_z & c_x s_y s_z - c_z s_x \\ -s_y & c_y s_x & c_x c_y \end{matrix}\right] cyczcyszsyczsxsycxszcxcz+sxsyszcysxsxsz+cxczsycxsyszczsxcxcy

旋转矩阵 → \to 欧拉角

设旋转矩阵i行j列元素为 r i j r_{ij} rij。根据旋转矩阵的表达式,利用三角函数可以推导出欧拉角取值:

θ x = a t a n 2 ( r 32 , r 33 ) \theta_x = atan2(r_{32},r_{33}) θx=atan2(r32,r33)

θ y = a t a n 2 ( − r 31 , r 32 2 + r 33 2 ) \theta_y = atan2(-r_{31}, \sqrt{r_{32}^2+r_{33}^2}) θy=atan2(r31,r322+r332 )

θ z = a t a n 2 ( r 21 , r 11 ) \theta_z = atan2(r_{21},r_{11}) θz=atan2(r21,r11)

四元数的物理意义

设有一个通过原点 [ 0 , 0 , 0 ] [0,0,0] [0,0,0]的旋转轴,该轴上单位长度的点为 [ w 1 , w 2 , w 3 ] [w_1,w_2,w_3] [w1,w2,w3]。绕此轴旋转 θ \theta θ角的变换可以用一个向量表示:
[ cos ⁡ θ 2 , w 1 sin ⁡ θ 2 , w 2 sin ⁡ θ 2 , w 3 sin ⁡ θ 2 ] [\cos \frac{\theta}{2}, w_1 \sin \frac{\theta}{2}, w_2 \sin \frac{\theta}{2},w_3 \sin \frac{\theta}{2}] [cos2θ,w1sin2θ,w2sin2θ,w3sin2θ]

也记为 q = [ q 0 , q 1 , q 2 , q 3 ] q=[q_0,q_1,q_2,q_3] q=[q0,q1,q

  • 25
    点赞
  • 150
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
### 回答1: 欧拉角四元数旋转矩阵和轴角都是表示三维旋转的不同方式。 欧拉角是由三个轴角组成,按照顺序分别表示绕x轴旋转的角度、绕y轴旋转的角度、绕z轴旋转的角度。 四元数是由四个实数组成,表示旋转的方向和角度。 旋转矩阵是由3*3的实数组成的矩阵,表示旋转的线性变换。 轴角就是由一个单位向量和一个角度组成,表示绕着该单位向量旋转角度的意思。 它们之间可以相互转换。具体方法需要根据需要选择相应的公式进行转换. ### 回答2: 欧拉角四元数旋转矩阵和轴角是用于表示物体在三维空间中旋转的常见方法。它们可以相互之间进行转换。 首先,欧拉角是使用三个旋转角度来描述物体的旋转。通常使用的欧拉角包括俯仰角(pitch angle)、偏航角(yaw angle)和滚转角(roll angle)。欧拉角的转换通常涉及将欧拉角转换为旋转矩阵四元数,并且转换顺序也很重要。 其次,四元数是一种用于表示旋转的数学工具,可以使用具有四个实数部分的向量进行表示。四元数的转换通常涉及将四元数转换为旋转矩阵欧拉角,或者将旋转矩阵欧拉角转换为四元数旋转矩阵是一个3x3矩阵,用于表示物体的旋转。它是通过将欧拉角四元数转换为矩阵来实现的,也可以将矩阵转换为欧拉角四元数。 轴角是用于表示旋转的方法之一。它由一个向量和一个表示旋转角度的标量组成。轴角可以通过将轴角转换为旋转矩阵来实现,也可以通过将旋转矩阵转换为轴角来实现。使用轴角进行旋转时,常用的转轴包括x轴、y轴和z轴。 总结起来,欧拉角四元数旋转矩阵和轴角可以相互转换来表示物体的旋转。这些转换过程在计算机图形学、机器人学和游戏开发等领域经常被使用。理解它们之间的转换关系可以帮助我们更好地理解和应用旋转的概念。 ### 回答3: 欧拉角四元数旋转矩阵、轴角都是用于描述物体在三维空间中的旋转变换的方法,它们之间可以相互转换。 欧拉角是指通过绕着三个坐标轴的旋转来实现的旋转变换。通常使用三个连续的旋转角度来表示,在航空航天领域经常使用俯仰角、偏航角和滚转角来描述。但欧拉角存在万向锁问题,即在某些情况下会导致旋转变换不唯一。 四元数是一种四维复数,可以用一个实部和三个虚部来表示。它们可以直接表示旋转变换,并且不存在万向锁问题。通过四元数的乘法运算可以实现旋转变换的组合。同时,由于四元数是一个四维向量,所以它们的存储空间比旋转矩阵小。 旋转矩阵是一个3x3的矩阵,用于表示旋转变换。在旋转矩阵中,每一列表示一个旋转后的坐标轴方向。旋转矩阵可以通过将三个坐标轴绕着相应的角度进行旋转得到。但旋转矩阵存在正交性约束,即必须是正交矩阵,并且行列式为1,不满足时需要进行正则化处理。 轴角表示旋转轴和旋转角度的方法。它将旋转变换转化为绕着一个轴旋转一定角度的方式来描述。轴角与旋转矩阵之间的转换比较直观,可以通过旋转矩阵的特征向量和特征值得到旋转轴和旋转角度。但轴角存在方向的不唯一性,即旋转轴可以有两个相反的方向与同一个旋转变换对应。 以上是欧拉角四元数旋转矩阵、轴角之间的转换方法及特点的简介。它们在三维空间中描述旋转变换时各有优劣,可以根据具体需求选择合适的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值