zoukankan      html  css  js  c++  java
  • 第3讲--3.1旋转矩阵

    三维空间由3个轴组成,所以一个空间点的位置可以由3个坐标指定。但考虑刚体时,它不仅有位置,还有自身的姿态。借助数学语言,我们可以更好地来描述它。

    3.1.1 点和向量,坐标系

    点和向量

    向量:线性空间中的一个元素,可以把它想象成从原点指向某处的一个箭头。

       注意:不要混淆向量和坐标两个概念,只有在指定这个三维空间中的某个坐标系时,才可以谈论该向量在此坐标下的坐标。

      如果确定了一个坐标系,也就是一个线性空间的基(e1,e2,e3),那么就可以谈论向量a在这组基下的坐标。

    坐标的具体取值,一是和向量本身有关,二是和坐标系的选取有关。

      对于ab∈R3内积可以写成:

      内积可以描述向量间的投影关系

      外积

      外积的方向垂直于这两个向量,大小为是两个向量张成的四边形的有向面积

      外积只对三维向量存在定义,我们还能用外积表示向量的旋转。

    坐标间的欧氏变换

      与向量间的旋转类似,同样可以描述两个坐标间的旋转关系,再加上平移,统称为坐标系间的变换关系。

    举例:

      在机器人的运动过程中,常见的做法是设定一个惯性坐标(或者叫世界坐标系),可认为它是固定不动的,如下图定义的坐标系。同时,相机或机器人则是一个移动坐标系。

    相机视野中某个向量p,它的坐标为Pc,在世界坐标系下看,它的坐标是Pw。这两者转换:先得到该点针对机器人坐标系的坐标值,再根据机器人位姿转换到世界坐标系中,这个转换关系由一个矩阵T来描述。

    相机运动是一个刚体运动,它保证了同一个向量在各个坐标系下的长度和夹角都不会发生变化。这种变换称为欧氏变换

     欧氏变换由一个旋转和一个平移两部分组成。

    首先,考虑旋转。

    设某个单位正交基(e1,e2,e3)经过一次旋转变成了。那么,对于同一个向量a(注意:该向量并没有随着坐标系的旋转而发生运动),它在两个坐标系下的坐标为。根据坐标的定义,有:

    为了描述两个坐标之间的关系,等式两边同时左乘,得:

      R由两组基之间得内积组成,刻画旋转前后同一个向量得坐标变换关系。矩阵R描述了旋转本身,因此称为旋转矩阵

    旋转矩阵有一些特别的性质:事实上,它是一个行列式为1的正交矩阵。反之,行列式为1的正交矩阵也是一个旋转矩阵。因此,旋转矩阵的集合定义如下:

      SO(n)是特殊正交群(Special Orthogonal Group),这个集合由n维空间的旋转矩阵组成,特别的,SO(3)是三维空间的旋转。通过这个旋转可以直接讨论两个坐标系之间的旋转变换,而

    不用再从基谈起。换句话说,旋转矩阵可以描述相机的旋转

      由于旋转矩阵是正交矩阵,它的逆(即转置)描述了一个相反的旋转,

      在欧氏变换中,除了旋转之外还有平移。考虑世界坐标系中的向量a,经过一次旋转(用R描述)和一次平移t后,得到了a',把旋转和平移合到一起,有:

     

    t称为平移向量。通过上式,用一个旋转矩阵R和一个平移向量t完整地描述了一个欧氏空间的坐标变换关系

       3.1.3 变换矩阵与齐次坐标

      假设进行两次变换:R1,t1和R2,t2,满足

    从a 变换到c:

      这样的形式在变换多次后会过于复杂,因此,我们引入齐次坐标和变换矩阵:

    这是一个数学技巧:在一个三维向量的末尾添加1,将其变成了四维向量,称为齐次坐标

    对于这个四维向量,我们可以把旋转和平移写在一个矩阵里面,使得整个关系变成线性关系。该式中,T称为变换矩阵(Transform Matrix)。

     关于变换矩阵T,它有比较特别的结构:左上角为旋转矩阵,右侧为平移向量,左下角为0向量,右下角为1。这种矩阵又称为特殊欧氏群(Special Euclidean Group).

      齐次坐标,是射影几何的概念。通过添加最后一维,我们用4个实数描述了一个三维向量,这显然多了一个自由度,但允许我们把变换写成线性的形式。

    在齐次坐标中,某个点x的每个分量同乘一个非零常数k后,仍然表示同一个点。因此,一个点的具体坐标值不是唯一的

      但最后一项不为零时,我们总可以除以最后一项,强制最后一项为1,从而得到一个点唯一的坐标表示(也就是转换为非齐次坐标):

     

  • 相关阅读:
    MATLAB 和 armadillo 数据转换
    macOS gcc g++ c++ cc
    Sublime-Text macOS 编译运行armadillo
    macOS BLAS LAPACK
    Rsyslog 日志相关内容
    构建基于虚拟用户的vsftpd服务器
    对Servlet执行流程的初步认识
    对Servlet执行流程的初步认识
    android studio 开发环境的搭建
    android studio 开发环境的搭建
  • 原文地址:https://www.cnblogs.com/yfqh/p/11025470.html
Copyright © 2011-2022 走看看