视觉SLAM的数学基础 第一篇 3D空间的位置表示

来源:互联网 发布:中国黑客攻击日本网络 编辑:程序博客网 时间:2024/05/18 06:38

视觉SLAM中的数学基础 第一篇 3D空间的位置表示

前言

  转眼间一个学期又将过去,距离我上次写《一起做RGBD SLAM》已经半年之久。《一起做》系列反响很不错,主要由于它为读者提供了一个可以一步步编码、运行的SLAM程序,为读者理解SLAM实现的细节作了详细的介绍。但是我也有很多对它不满意的地方。作为面向实现的介绍,它的代码不够稳定可靠,例如,甚至没有对匹配丢失的情况进行处理,因而只能用于教学。另一方面,对SLAM研究者来说,我只是介绍了编码方面如何调用一些常见的库函数,而没有对这些函数进行深入的,原理上的讲解。这就导致了读者只了解了函数的接口,而没法根据数学原理进行创新。归根到底,研究机器人相关问题,一是要有扎实的数学基础,二是要有强大的动手编程能力,这对大多数刚入门的研究者来说,极具挑战性。我也希望,通过阅读我的博客,你能走进SLAM研究的门槛,有朝一日自己也写出优秀的程序和论文。

  有鉴于此,我准备写一写SLAM相关的数学知识,包括代数、几何、概率、运筹等等。对于重要的算法例如ICP,EKF,细致讨论它的原理,并给出它的实现(原生的代码或在某个库的实现)。由于它们的原理较复杂,我会从最基本的东西开始讲起。但是我毕竟不是在写数学书,我不会像数学书那样写成``定义——定理——推论”的结构。我们不会纠缠于一些定理的严格证明,相反的,我们只在必要的情况下加以说明,告诉读者这些数学公式在SLAM中有何应用,如何应用。

  由于博客编辑器的限制,我们以斜体字xx表示变量,以粗正体AA表示矢量和字母,以黑板粗体RR表示空间。希腊字母没有粗体所以保持原样。向量默认为列向量。其余和普通的数学书一致。 

  小萝卜:师兄,这么严肃不是你的风格啊!

  师兄:啊,数学嘛……


 

刚体运动

  本篇我们讨论一个很基础的问题:如何描述机器人的位姿。这也是研究SLAM的第一个问题。注意这里“位姿”的用语包含了位置和姿态。描述位置是很简单的。如果机器人在平面内运动,那么用两个坐标来描述它的位置:



  • 齐次坐标可以方便地将平移与旋转放在一个矩阵中。

  师兄:这应该是最明显的好处啦!大家都爱用齐次坐标,包括我。有关坐标系怎么用齐次坐标进行变换,后文会详细解释。现在我们能表达点了,还剩下一个姿态。由于2D与3D差别较大,我们分而述之。

2D姿态的描述



 3D变换





0 0
原创粉丝点击