结合 高翔老师的著作《视觉SLAM十四讲:从理论到实践》,加上小白的工程经验共同完成。建议作为笔记功能反复使用。
一、四元数的定义
旋转矩阵用九个量描述三自由度的旋转,具有冗余性:欧拉角与旋转向量是紧凑的,但是具有奇异性。事实上,我们找不到不带奇异性的三维向量描述方式。
奇异性举例解释为:
当我们想用两个坐标表示地球表面时(如经度和维度),必定存在奇异性(维度为°时经度无意义)。
我们用复数集表示复平面上的向量,而复数的乘法则能表示复平面上的旋转:例如,乘上复数 i 相当于逆时针把一个复向量旋转90度。四元数是Hamilton找到的一种扩展的复数,它既是紧凑的,也没有奇异性。如果说缺点的话,四元数不够直观,其运算稍微复杂一些。
一个四元数 q 拥有一个实部和三个虚部。如:
其中 i , j , k 为四元数的三个虚部。这三个虚部满足关系式:
有时人们也用一个标量和一个向量来表达四元数:
这里s称为四元数的实部,而 v 称为它的虚部。如果一个四元数的实部为零,称之为实四元数。反之,若让门的实部为零,称之为虚四元数。
我们能用单位四元数表示三维空间中任意一个旋转。乘以 i 对应着旋转180度,而 ,意味着绕 i 轴旋转360度后,你得到了一个相反的东西。这个东西要旋转两周才会和它原先的样子相等。
假设某个旋转是绕单位向量 进行了角度 的旋转,那么这个旋转的四元数形式为:
.
反之,我们亦可从单位是四元数中计算出对应旋转轴与夹角。
在四元数中吗,任意的旋转都可以由两个互为相反数的四元数表示。同理,取 为0,则得到一个没有旋转的四元数:
二、四元数的运算
常见的运算有:四则运算、共轭、模长、求逆、数乘、点乘等等。
- 加法减法:
对应位置相加。 - 乘法:
把 的每一项与 每项相乘,最后整理成标准形式,如果写成向量形式并利用内外积运算,该表达式会更加简洁。
注意到,由于最后一项外积的存在,四元数乘法通常是不可交换的,除非 和 在 中贡献,那么外积项为零。 - 共轭
四元数的共轭是把虚部取成相反数。
四元数共轭与本身相乘,会得到一个实四元数,其实部为模长的平方。 - 模长
四元数模长的定义,四个数字分别平方相加后开根号。
两个四元数乘积的模即为模的乘积。 - 求逆
四元数与自己的逆的乘积为实四元数的 1。
如果 q 为单位四元数,逆和共轭就是同一个量。同时,乘积的逆有和矩阵相似的性质。 - 数乘与点乘
和向量相似,四元数可以与数相乘。
点乘是指两个四元数每个位置上的数字分别相乘。
《视觉SLAM十四讲:从理论到实践》 PDF资源
下载链接:Robot_Starscream的资源 仅供各位研究员试读,请购买纸质书籍。