旋转矩阵、旋转向量、欧拉角、四元数【SLAM】

本文探讨了三维旋转的不同表示形式,包括n维旋转矩阵的定义、SO(n)特殊正交群、旋转向量(轴角)的使用及其与矩阵之间的转换,以及欧拉角和四元数(特别是JPL与Hamilton四元数)的优势和奇异性。着重介绍了四元数在紧凑表示旋转并避免奇异性中的作用。
摘要由CSDN通过智能技术生成

1、旋转矩阵

n n n维旋转矩阵的集合定义:
S O ( n ) = { R ∈ R n × n ∣ R R T = I , d e t ( R ) = 1 } SO(n) = \{ R \in \mathbb{R}^{n \times n} \mid RR^{T} = I, det(R) = 1 \} SO(n)={RRn×nRRT=I,det(R)=1}
S O ( n ) SO(n) SO(n)是特殊正交群(Special Orthogonal Group)。 R R R是正交矩阵,满足 R R T = I RR^{T} = I RRT=I。行列式为 1 1 1是人为定义的,实际行列式可以为 ± 1 \pm1 ±1,行列式为 − 1 -1 1的称为瑕旋转,即一次旋转加一次反射,三维矩阵行列式的意义是变换后的体积与原体积的比,行列式为 1 1 1说明体积不变,旋转变换就是体积不变。

缺点:
1、 S O ( 3 ) SO(3) SO(3)的旋转矩阵有 9 9 9个量,一次旋转只有 3 3 3个自由度,所以这种表达方式是冗余的。
2、旋转矩阵自身带有约束,必须满足正交矩阵和行列式为 1 1 1,在优化旋转矩阵的情况中给求解带来困难。

2、旋转向量

用旋转轴和旋转角来表示一个旋转。使用一个向量,方向与旋转轴一致,长度等于旋转角,称为旋转向量,或轴角/角轴(Axis-Angle)。

旋转向量与旋转矩阵的转换

θ n \theta \mathbf{n} θn为旋转向量,转换为旋转矩阵用罗德里格斯公式
R = c o s θ I + ( 1 − c o s θ ) n n T + s i n θ n ∧ R = cos\theta I + (1 - cos\theta)nn^{T} + sin\theta n^{\wedge} R=cosθI+(1cosθ)nnT+sinθn

旋转矩阵 R R R转换为旋转向量:
θ = a r c c o s t r ( R ) − 1 2 \theta = arccos \frac{tr(R) - 1}{2} θ=arccos2tr(R)1
n \mathbf{n} n是矩阵 R R R特征值为 1 1 1的特征向量。

3、欧拉角

把一个旋转分解成三次绕不同的轴旋转。
缺点:万向锁问题,例如ZYX欧拉角,Y为90度时,Z和X在旋转时是同一个直线上的轴,使系统丢失一个自由度。理论上可以证明,只要想用3个实数表达三维旋转就会碰到奇异性问题,旋转向量也具有奇异性,发生在转角 θ \theta θ超过 2 π 2\pi 2π而产生周期性时。

4、四元数

旋转矩阵表示有冗余性,旋转向量和欧拉角表示具有奇异性。四元数是紧凑的,且没有奇异性。四元数分为JPL四元数和Hamilton四元数,JPL四元数是 i j = − k ij=-k ij=k,Hamilton四元数是 i j = k ij=k ij=k,这里用Hamilton四元数。

三维旋转用单位四元数表示。
三维空间点 p p p用虚四元数表示,给一个旋转变换 q q q,结果为:
p ′ = q p q − 1 p' = qpq^{-1} p=qpq1
结果一定是虚四元数。

四元数到旋转矩阵的变换

单位四元数 q = [ s , v T ] T q=[s, \mathbf{v}^{T}]^{T} q=[s,vT]T,旋转矩阵为:
R = v v T + s 2 I + 2 s v ∧ + ( v ∧ ) 2 R=\mathbf{v}\mathbf{v}^{T} + s^{2}I + 2s\mathbf{v}^{\wedge} + (\mathbf{v}^{\wedge})^{2} R=vvT+s2I+2sv+(v)2

四元数到旋转向量的变换

θ = 2 a r c c o s ( s ) \theta = 2arccos(s) θ=2arccos(s)
n = v s i n θ 2 \mathbf{n} = \frac{\mathbf{v}}{sin \frac{\theta}{2}} n=sin2θv

旋转向量到四元数的变换

q = [ c o s θ 2 , n T s i n θ 2 ] T q = [cos \frac{\theta}{2}, \mathbf{n}^{T} sin \frac{\theta}{2}]^{T} q=[cos2θ,nTsin2θ]T

  • 12
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值