三维刚体运动

Rigid body motion in three dimensions

1.点与坐标系

  • 2D 的情况下:用两个坐标加旋转角表达,即 (x,y,θ)

  • 3D 的情况下:则使用 (x,y,z) 来表平移,而旋转则有很多其他的表示方式,例如欧拉角,旋转向量,四元数,旋转矩阵等,后面将分别介绍。

  • 向量的运算

    • 内积

      ab=aTb=i=13=|a| |b| cosa,b

    • 外积

      a×b=[ijka1a2a3b1b2b3]=[a2b3a3b2a3b1a1b3a1b2a2b1]=[0a3a2a30a1a2a10] bab

      其中 a 成为向量 a 的反对陈矩阵。

  • SLAM 中,世界坐标系是固定,而和机器人坐标系则是移动的,同时还有很多传感器坐标系。那么如何描述坐标系之间的一个变化呢,直观上来说分为两个部分

    1. 原点之间的平移
    2. 三个轴的旋转

2. 旋转矩阵

考虑一次旋转:

  • 坐标系 (e1,e2,e3) 发生了旋转,变成了 (e1),(e2),(e3),但是向量 a 不动,那么他们的坐标系如何变化。具体的变化过程用数学的方式展现如下所示:

    a=[e1e2e3] [a1a2a3]=[e1e2e3][a1a2a3]a=[a1a2a3]=[e1Te1e1Te2e1Te3e2Te1e2Te2e2Te3e3Te1e3Te2e3Te3]=[a1a2a3]Ra

​ 无论坐标系如何变化,其实世界坐标系也只是相对的,一个真实世界中的障碍物,无论在任何一个坐标系下的障碍物,其映射到真实世界中其实都应当是一个。

​ 上式中从上到下的一个变换是等式左右两边同时左乘了矩阵:

[e1Te2Te3T]

[e1 e2 e3] 乘该矩阵后为单位矩阵,则左边还是 a.

​ 其中 R 成为旋转矩阵,可以验证:

  • R 是一个正交矩阵 -> RTR=I RT=R1

  • R 的行列式为 1 -> det(R)=1

满足这两个性质的矩阵称为旋转矩阵,可以扩展到 N 维空间:

SO(n)={RRn×n|R RT=I, det(R)=1}

其中 SO(n) 即我们通常所叫的特殊正交群 (SpecialOrthogonalGroup)

于是,1到2的旋转可表达为:

a1=R12a2

反之:

a2=R21a1

矩阵关系:

R21=R121=R12T

其中 Rcw 表示的则是从 c 系到 w 系的旋转矩阵。

旋转加平移可以表示为:

a=Ra+t

欧拉定理(Eulersrotationtheorem):刚体在三维空间里的一般运动,可分解为刚体上方某一点的平移,以及绕经过此点的旋转轴的转动。

在实际的使用过程中我们一般使用的是齐次坐标的形式进行表示,其将二维空间中的坐标为度扩展到三维,将三维空间中的坐标扩展到四维,增加的一个维度一般用 1 来代替。则上式的齐次形式可以表示为:

[a1]=[Rt0T1][a1]T[a1]

其中,R的维度为 3×3 , t 的维度为 3×10 的维度为 1×31的维度为 1×1

变换矩阵的集合称为特殊欧氏群SE(3)SpecialEuclideanGroup

SE(3)={T=[Rt0T1]R4×4RSO(3),tR3}

逆形式:

T1=[RTRTt0T1]

3. 旋转向量与欧拉角

​ 除了旋转矩阵/变换矩阵之外,还存在其他的表示方式,旋转矩阵 R 有九个元素,但仅有三个自由度,能否以更少的元素表达旋转?答案是可以的。

3.1 旋转向量

  • 方向为旋转轴,长度为转过的角度

  • 称为角轴/轴角(AngleAxis)或旋转向量(RotationVector

  • 旋转向量与矩阵的不同:

    • 仅有三个量
    • 无约束
    • 更直观
  • 旋转向量与旋转矩阵之间的变化关系可以通过罗格里德斯公式给出,在已知旋转向量的情况下得到旋转矩阵:

    R=cosθI+(1cosθ)nnT+sinθn

  • 旋转矩阵转向量:

    θ=arccos(tr(R)12)Rn=n

    第二个公式则是因为在旋转矩阵为正交矩阵,且 n 本身为旋转轴,旋转之后 n 是不变的。

3.2 欧拉角

将旋转分解为三个方向上的转动例,按 ZYX 顺序转动轴可以是定轴或动轴,顺序亦可不同常见的有 yawpitchroll ,东北天不同领域的习惯有所不同。

  1. 绕物体的Z轴旋转,得到偏航角yaw;
  2. 绕旋转之后的Y轴旋转,得到俯仰角pitch;
  3. 绕旋转之后的X轴旋转,得到滚转角roll;

4.四元数

四元数其实才是当今 SLAM 中使用最多的旋转表示方式,其只是殿太过于庞大,笔者也是花得了大量时间查阅证明进行理解,这里放出笔者认为目前网络上最好的一个全部证明,供大家参考:

posted @   weihao-ysgs  阅读(232)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
点击右上角即可分享
微信分享提示