视觉SLAM十四讲---03三维空间刚体运动02

本文详细介绍了三维空间中的旋转表示,包括旋转向量的概念,如何从旋转向量转换为旋转矩阵,以及欧拉角的ZYX分解和万向锁问题。接着探讨了四元数的定义、运算以及如何用四元数表示旋转,最后提及了在SLAM中的应用和Eigen几何模块。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

3、旋转向量和欧拉角

(1)旋转向量

问题的引入:
①旋转矩阵R3x3 用9个量来表示3个自由度, 变换矩阵T4x4 用16个量来表示6个自由度,表达方式过于冗余。
②旋转矩阵和变换矩阵自身带有约束,使得估计或优化较难。

使用一个三维向量,其方向同旋转轴一致,而长度等于旋转角,即用旋转向量来描述一次旋转。

使用一个旋转向量和一个平移向量来表达一次变换,即用一个六维向量来描述变换。

  • 旋转向量到旋转矩阵的变换

假设有一个旋转轴为n, 角度为θ的旋转,对应的旋转向量为θn

罗德里格斯公式(Rodrigues’s Formula) 可以得到旋转矩阵为:

在这里插入图片描述

  • 旋转矩阵到旋转向量的变换
    对应转角θ,有:
    在这里插入图片描述

证明如下:
在这里插入图片描述

由于“旋转轴经过旋转之后不变”,可有 Rn = n。故,转轴n是矩阵R特征值1对应的特征向量。

(3)欧拉角
  • “偏航-俯仰-滚转”(yaw-pitch-roll)即ZYX转角分解
    • 绕物体的Z轴旋转,得到偏航角yaw
    • 绕旋转之后的Y轴旋转,得到俯仰角pitch
    • 绕旋转之后的X轴旋转,得到滚转角roll
      用[r,p,y]T来描述任意旋转。
  • 万向锁问题
    在俯仰角为±90°时,第一次旋转与第三次旋转使用同一个轴,使得系统失去了一个自由度。
    在这里插入图片描述
    使用三个实数来表达三维旋转都为遇到这样的问题,故欧拉角不适合插值和迭代,也很少在SLAM中直接使用欧拉角。

4、四元数

(1)四元数定义

为了解决三维向量奇异性(万向锁)的问题,Hamilton找到一种扩展的复数四元数

  • 一个四元数q定义如下:

    q = q0 + q1i + q2j + q3k
    其中i,j,k为四元数的三个虚部,且满足
    i2 = j2 = k2 = -1
    ij = k, ji = -k
    jk = i, kj = -i
    ki = j, ik = -j

    q = [s, v], s = q0 ∈ R, v = [q1, q2, q3]T ∈ R3
    也可以简化为用一个标量和一个向量来表达四元数。

  • 使用单位四元数来描述三维空间中的旋转
    假设某个旋转是绕单位向量n = [nx, ny, nz]T进行了角度为θ的旋转,那么这个旋转的四元数形式为:

    q = [cos(θ/2),nxsin(θ/2), nysin(θ/2), nzsin(θ/2)]T

    (令θ=θ+2π可以得到相同的旋转,但此时四元数为-q,故任意的旋转都可以由两个互为相反数的四元数表示
    则可以计算出对应旋转轴与夹角:

    θ = 2arccos q0
    [nx, ny, nz]T = [q1, q2, q3]T/sin(θ/2)

(2)四元数的运算

qa = [sa, va] = sa + xai + yaj + zak,qb = [sb, vb] = sb + xbi + ybj + zbk,则有:

  • 加减法

qa ± qb = [sa±sb, va±vb]

  • 乘法

qaqb = [sasb - vaTvb, savb + sbva + va x vb]

  • 共轭

qa* = [sa, -va] = sa - xai - yaj - zak
q*q =

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值