日常生活的空间是三维的,因此我们生来就习惯于三维空间的运动。三维空间由三个轴组成,所以一个空间点的位置可以由三个坐标指定。不过,我们现在要考虑刚体,它不光有位置,还有自身的姿态。相机也可以看成三维空间的刚体,于是位置是指相机在空
间中的哪个地方,而姿态则是指相机的朝向。结合起来,我们可以说,“相机正处于空间(0,0,0) 点处,朝向正前方” 这样的话。但是这种自然语言很繁琐,我们更喜欢用数学语言来描述它。

首先是内外积:

对于 ,内积可以写成:

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

外积:

外积的方向垂直于这两个向量,大小为 |a||b|sin〈a,b〉,是两个向量张成的四边形的有向面积。对于外积,我们引入了∧符号,把 a 写成一个矩阵。事实上是一个反对称矩阵(Skew-symmetric),你可以将∧记成一个反对称符号。这样就把外积 a × b,写成了矩阵与向量的乘法 a ∧ b,把它变成了线性运算。这个符号将在后文经常用到,请记住它。外积只对三维向量存在定义,我们还能用外积表示向量的旋转。

考虑两个不平行的向量 a,b,我们要描述从 a 到 b 之间是如何旋转的,如图所示。我们可以用一个向量来描述三维空间中两个向量的旋转关系。在右手法则下,我们用右手的四个指头从 a 转向 b,其大拇指朝向就是旋转向量的方向,事实上也是 a × b 的方
向。它的大小则由 a 和 b 的夹角决定。通过这种方式,我们构造了从 a 到 b 的一个旋转向量。这个向量同样位于三维空间中,在此坐标系下,可以用三个实数来描述它。

 欧式变换

相机运动是一个刚体运动,它保证了同一个向量在各个坐标系下的长度和夹角都不会发生变化。这种变换称为欧氏变换。想象你把手机抛到空中,在它落地摔碎之前,只可能有空间位置和姿态的不同,而它自己的长度、各个面的角度等性质不会有任何变化。这样一个欧氏变换由一个旋转和一个平移两部分组成。首先来考虑旋转。我们设某个单位正交基(e 1 ,e 2 ,e 3 ) 经过一次旋转,变成了 (e′1 ,e′2 ,e′3 )。那么,对于同一个向量 a(注意该向量并没有随着坐标系的旋转而发生运动),它在两个坐标系下的坐标为 [a 1 ,a 2 ,a 3 ] T 和 [a′1 ,a′2 ,a′3 ] T 。根据坐标的定义,有:

坐标变换。对于同一个向量 p,它在世界坐标系下的坐标 pw 和在相机坐标系下的 pc 是不同的。这个变换关系由坐标系间的变换矩阵 T 来描述。

为了描述两个坐标之间的关系,我们对上面等式左右同时左乘那么左边的系数变成了单位矩阵,所以:

我们把中间的阵拿出来,定义成一个矩阵 R。这个矩阵由两组基之间的内积组成,刻画了旋转前后同一个向量的坐标变换关系。只要旋转是一样的,那么这个矩阵也是一样的。可以说,矩阵 R 描述了旋转本身。因此它又称为旋转矩阵。

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

SO(n) 是特殊正交群(Special Orthogonal Group)的意思。我们把解释“群”的内容留到下一讲。这个集合由 n 维空间的旋转矩阵组成,特别的,SO(3) 就是三维空间的旋转了。通过旋转矩阵,我们可以直接谈论两个坐标系之间的旋转变换,而不用再从基开始谈起了。换句话说,旋转矩阵可以描述相机的旋转。由于旋转矩阵为正交阵,它的逆(即转置)描述了一个相反的旋转。按照上面的定义方式,有:

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

其中,t 称为平移向量。相比于旋转,平移部分只需把这个平移量加到旋转之后的坐标上,显得非常简洁。通过上式,我们用一个旋转矩阵 R 和一个平移向量 t 完整地描述了一个欧氏空间的坐标变换关系。

通俗易懂!视觉slam第四部分——slam刚体三维空间运动相关推荐

  1. 【SLAM十四讲--第一讲、第二讲】什么是SLAM?

    <SLAM十四讲>理论部分专栏 <SLAM十四讲>实践部分专栏 目录 一.本文讲些啥 二.什么是SLAM 三.经典视觉SLAM框架 四.SLAM问题的数学描述 一.本文讲些啥 ...

  2. 半闲居士视觉SLAM十四讲笔记(3)三维空间刚体运动 - part 1 旋转矩阵

    本系列文章由 youngpan1101 出品,转载请注明出处. 文章链接: http://blog.csdn.net/youngpan1101/article/details/71086500 作者: ...

  3. 视觉SLAM十四讲 第3讲 三维空间刚体运动(相关知识点汇总)

    视觉SLAM十四讲 第3讲 三维空间刚体运动 1. 刚体 2. 欧氏空间(euclidean space) 2.1 欧氏距离: 2.2 欧氏变换: 3. 笛卡尔坐标系 4. 透视空间 5. 齐次坐标系 ...

  4. 视觉SLAM十四讲(3):三维空间刚体运动

    本章需要掌握的知识点有:旋转矩阵,变换矩阵,四元数,欧拉角定义和数学表达:同时也要掌握Eigen库关于矩阵.几何模块的使用方法. 文章目录 3.1 旋转矩阵 3.1.1 点,向量和矩阵的关系 3.1. ...

  5. 视觉SLAM十四讲笔记-第三讲 刚体运动

    目录 1.两条基本公式:运动方程和观测方程 2.点与坐标系: 3. 旋转矩阵 3.1 两个条件: 4.旋转向量和欧拉角 4.1 旋转向量(Rotation Vector,又称角轴/轴角(Angle A ...

  6. tensorflow 语义slam_研究《视觉SLAM十四讲从理论到实践第2版》PDF代码+《OpenCV+TensorFlow深度学习与计算机视觉实战》PDF代码笔记...

    我们知道随着人工神经网络和深度学习的发展,通过模拟视觉所构建的卷积神经网络模型在图像识别和分类上取得了非常好的效果,借助于深度学习技术的发展,使用人工智能去处理常规劳动,理解语音语义,帮助医学诊断和支 ...

  7. 视觉SLAM十四讲学习笔记-第三讲-相似、仿射、射影变换和eigen程序、可视化演示

    专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习 ...

  8. 视觉SLAM十四讲学习笔记-第三讲-旋转矩阵和Eigen库

    专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习 ...

  9. 视觉SLAM十四讲从理论到实践第二版源码调试笔记(理论基础1-6章)

    2019-2020-2学期机器人工程专业需要开设SLAM技术课程,使用教材为视觉SLAM十四讲从理论到实践第二版. 为方便学生学习课程知识,将Arduino.ROS1.ROS2和SLAM集成到课程定制 ...

最新文章

  1. java gmail smtp_通过JAVA中的Gmail SMTP服务器发送电子邮件
  2. jittor和pytorch 生成网络对比之clustergan
  3. apache 定义日志格式 及日志记录
  4. sku属性组合小例子
  5. python3.6.2安装教程-CentOS 7.2下安装Python 3.6.2
  6. 错误 No package ‘vulkan‘ found 解决办法
  7. C#多线程学习(五) 多线程的自动管理(定时器) (转载系列)——继续搜索引擎研究...
  8. list 根据某个数字所在位置_【Python学习笔记】09、使用list和tuple
  9. 达梦数据查询编码_查询数据库的编码方式
  10. android按钮控件常见问题,Android的基本控件和Activity的应用总结
  11. 一键刷入twrp_小米/红米手机到手了该怎么解锁和刷 twrp
  12. [开心学php100天]第五天:string函数(上)
  13. 洛谷P3048 [USACO12FEB]牛的IDCow IDs
  14. 随想录(网站api的设计)
  15. python爬虫入门四:BeautifulSoup库(转)
  16. 爷青结?诺基亚贝尔实验室官宣转让Plan 9版权!
  17. 浅分享一下zzulioj刷题总结
  18. 数据库管理系统的基本组成
  19. IM通讯系统分析与实战
  20. 2022年【CSDN毎周小结】

热门文章

  1. SAP License:SAP财务管理的认识
  2. 赛锐信息:优化SAP系统运行时的建议
  3. 外部数据源的使用汇总
  4. macOS 上使用 lightgbm 遇到的坑及解决方法
  5. T-SQL: Adding More to Our Queries
  6. python xml.dom模块解析xml
  7. 使用spring的JavaMailSender发送邮件
  8. UINavigationController 基本用法
  9. 告别IE给我们的web开发带来的困扰(使用chrome frame v8引擎)
  10. ASP.NET深入浅出系列3- Page类