学习记录-视觉SLAM十四讲第2版(四)


前言

这篇文章主要讲下视觉SLAM十四讲第2版中第三讲的3.1,3.3-3.5的相关知识点和3.2在Ubuntu20.04上的实践。


一、第三讲3.1旋转矩阵

1.点、向量和坐标系

向量内积:
在这里插入图片描述
向量外积:
在这里插入图片描述
尤其是要区分,内积的最后结果是一个数值,但外积的最后结果是一个跟a、b向量都垂直的向量,大小为|a||b|sin<a,b>,且上面最后和b向量相乘的矩阵是一个反对称矩阵(反对称矩阵A满足AT= -A),此时我们可以引入反对称符号^,将a x b这个外积转化为a ^ b的矩阵和向量的乘法。
Ps:内外积在不知道坐标的情况下,还是可以计算的。书上讲了内积的情况,就是直接通过|a||b|cos<a,b>计算即可得到内积的结果。同样的道理,对于外积,其方向是与a,b都垂直的方向,其长度为|a||b|sin<a,b>的向量即是外积的结果。

2.坐标系间的欧式变换

刚体运动:两个坐标系之间的运动可以通过一个旋转+一次平移表示的运动。
欧式变换:由旋转和平移组成。
在这里插入图片描述
正如书上所说:通过左乘一个矩阵可以实现仅发生旋转的两个坐标系之间的同一个点坐标的转化。如上图中间的这个矩阵就是旋转矩阵,记为R。又由于基向量的长度都为1,实际上矩阵各分量是各基向量夹角的余弦值,因此矩阵也叫方向余弦矩阵。
旋转矩阵R有2个很重要的性质:

2.1 R是一个正交矩阵

正交矩阵即逆为自身转置的矩阵
第一种证明可参考:旋转矩阵的正交性证明
第二种证明则直接将R和RT 进行相乘,验证结果是否为单位矩阵即可,这一种方式非常狗血。反正我是证明了好久才算出来了。设结果矩阵为A。因为如果是单位矩阵,其实只需要证明对角线上的值为1和非对角线上的值为0即可。
这里仅以A(1,1)和A(1,2)的证明为例:
A(1,1)=( e 1 T e 1 ’ e_1^Te_1^’ e1Te1)2 +( e 1 T e 2 ’ e_1^Te_2^’ e1Te2)2 + ( e 1 T e 3 ’ e_1^Te_3^’ e1Te3)2
设e1 e 1 ’ e 2 ’ e 3 ’ e_1^’e_2^’e_3^’ e1e2e3坐标轴中的坐标为(x,y,z),又 e 1 T e 1 ’ e_1^Te_1^’ e1Te1 = e1 e 1 ’ e_1^’ e1处的投影,数值为 x x 2 + y 2 + z 2 \frac{x}{\sqrt{x^2+y^2+z^2} } x2+y2+z2 x又因为e1 为基,长度为1,即 x 2 + y 2 + z 2 = 1 x^2+y^2+z^2 = 1 x2+y2+z2=1
所以A(1,1)=( e 1 T e 1 ’ e_1^Te_1^’ e1Te1)2 +( e 1 T e 2 ’ e_1^Te_2^’ e1Te2)2 + ( e 1 T e 3 ’ e_1^Te_3^’ e1Te3)2 = x 2 + y 2 + z 2 = 1 x^2+y^2+z^2 = 1 x2+y2+z2=1

初步化简可得A(1,2)= e 1 T e 1 ’ e 2 T e 1 ’ + e 1 T e 2 ’ e 2 T e 2 ’ + e 1 T e 3 ’ e 2 T e 3 ’ e_1^Te_1^’e_2^Te_1^’+e_1^Te_2^’e_2^Te_2^’ + e_1^Te_3^’e_2^Te_3^’ e1Te1e2Te1+e1Te2e2Te2+e1Te3e2Te3
类似的设e1 e 1 ’ e 2 ’ e 3 ’ e_1^’e_2^’e_3^’ e1e2e3坐标轴中的坐标为 ( x 1 , y 1 , z 1 ) (x_1,y_1,z_1) x1,y1,z1,e2 e 1 ’ e 2 ’ e 3 ’ e_1^’e_2^’e_3^’ e1e2e3坐标轴中的坐标为 ( x 2 , y 2 , z 2 ) (x_2,y_2,z_2) x2,y2,z2,此时可知 e 1 T e 1 ’ e_1^Te_1^’ e1Te1 = e1 e 1 ’ e_1^’ e1处的投影,数值为 x 1 x 1 2 + y 1 2 + z 1 2 \frac{x_1}{\sqrt{x_1^2+y_1^2+z_1^2} } x12+y12+z12 x1又因为e1 为基,长度为1,即 x 1 2 + y 1 2 + z 1 2 = 1 x_1^2+y_1^2+z_1^2 = 1 x12+y12+z12=1,又因为所以 e 1 e_1 e1 e 2 e_2 e2相互垂直,所以
A(1,2)= e 1 T e 1 ’ e 2 T e 1 ’ + e 1 T e 2 ’ e 2 T e 2 ’ + e 1 T e 3 ’ e 2 T e 3 ’ = x 1 x 2 + y 1 y 2 + z 1 z 2 = 0 e_1^Te_1^’e_2^Te_1^’+e_1^Te_2^’e_2^Te_2^’ + e_1^Te_3^’e_2^Te_3^’=x_1x_2+y_1y_2+z_1z_2=0 e1Te1e2Te1+e1Te2e2Te2+e1Te3e2Te3=x1x2+y1y2+z1z2=0
同理可求得其他位置坐标,故结果为单位矩阵得证。
参考文献:一个向量的三个方向角余弦平方和

2.2 R的行列式为1

证明参照:行列式相关内容介绍

2.3 加上平移后

向量a在两个坐标系下的坐标为 a 1 a_1 a1 a 2 a_2 a2,它们之间的转化关系为: a 1 = R 12 a 2 + t 12 a_1=R_{12}a_2+t_{12} a1=R12a2+t12
R 12 R_{12} R12是指将坐标系2的向量变换到坐标系1中, t 12 t_{12} t12是对应坐标系1原点指向坐标系2原点的向量,在坐标系1下取的坐标。这里主要是因为 R 12 R_{12} R12只是让对应的点完成了旋转,此时该点的坐标与坐标系1还差一个平移,即由坐标系1到坐标系2的平移,必须加上才能得到在坐标系1下对应的坐标。 t 12 t_{12} t12 t 21 t_{21} t21并不是相反数的关系,原因是它们是分别在坐标系1和坐标系2下的取值,跟两个坐标系之间的旋转还有关系。不能直接取相反数,如果两个坐标系只发生了平移则两者为相反数。

3.变换矩阵和齐次坐标

在三维向量后面增加1,将其变为四维向量,这种方式称为齐次坐标,从而可以将旋转和平移放在同个矩阵中来表达,这个矩阵就叫做变换矩阵,如下图中间的矩阵
在这里插入图片描述
它的逆代表反向变换:
在这里插入图片描述
最后介绍两个群,特殊正交群SO(3)和特殊欧式群SE(3):
在这里插入图片描述
在这里插入图片描述

二、第三讲3.2实践:Eign

照着指令走就好了,但是搜索Eigen头文件是感觉很无语,updatedb指令找不到,locate指令安装了mlocate后就可以使用了,但是弹出来了超多东西,看到头都大了。整个文件直接执行就好了,没有什么问题,可以看到三个时间越来越短。
在这里插入图片描述

三、第三讲3.3-3.5理论部分

由于旋转矩阵和变换矩阵表达的冗余性和旋转矩阵求解困难。因此人们提出了旋转向量、欧拉角和四元数来替代它们。

1.旋转向量

三维向量表示旋转:利用一个方向和旋转轴一致,而长度等于旋转角的向量来表达旋转。
六维向量表示变换:一个旋转向量+一个平移向量。
旋转向量和旋转矩阵的转换关系可以看后面的习题4。
旋转向量的奇异性,当转角θ超过2π而产生周期性时。

2.欧拉角

欧拉角将旋转分为了3次绕不同轴的旋转,比起旋转向量和旋转矩阵更直观一些。
常用的定义为ZYX轴的旋转,具体旋转过程如下:
1、绕物体的Z轴旋转,得到偏航角yaw;
2、绕旋转之后的Y轴旋转,得到俯仰角pitch;
3、绕旋转之后的X轴旋转,得到滚转角roll。
可以使用[r,p,y]T 这个三维向量来表示任意旋转,只是rpy角是最常用的之一。
欧拉角的奇异性是万能锁问题:在俯仰角为±90°时,会丢失一个自由度,即第一次和第三次旋转使用同一个轴。

3.四元数

由于找不到不带奇异性的三维向量描述方式,这里提出了一种紧凑且没有奇异性的表达——四元数。
三维旋转可以用单位四元数来表达。具体如下:
在这里插入图片描述
如果s=0,则这个四元数是个虚四元数;反之v=0时,为实四元数。
对于四元数的运算,大多比较简单,值得一记的是它的逆: q − 1 = q ∗ / ∣ ∣ q ∣ ∣ 2 q^{-1} = q^*/||q||^2 q1=q/∣∣q2
所以四元数和自己的逆的乘积是实四元数的1: q q − 1 = q − 1 q = 1 qq^{-1}=q^{-1}q=1 qq1=q1q=1
因此当q为单位四元数时,逆和共轭就相等了。

4.相似、仿射、射影变换

这部分内容主要看下表就可以了。
相似变换:多了s这个自由度,所以有7个自由度;
仿射变换:A这个矩阵有9个自由度,加上t这个向量,所以一共是12个自由度;
射影变换:比起仿射变换多了aT 这个向量的3个自由度,所以一共是15个自由度。
在这里插入图片描述


总结

本文对第三讲中的3.1-3.5进行回顾和总结。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值