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

前言

还是得学些SLAM相关的内容,在后面的科研中也好用得上。以此为记录督促自己日日有提升。

一、第1讲值得记录的内容

需要记录的只有SLAM的定义:
SLAM是Siumltaneous Localization and Mapping的缩写,中文是同时定位与地图构建。
如果采用相机作为传感器,则称为视觉SLAM。

二、习题

1.提示:从A的维度和秩角度来分析

首先是秩的定义:在线性代数中,一个矩阵A的列秩是A的线性独立的纵列的极大数目。类似地,行秩是A的线性无关的横行的极大数目。即如果把矩阵看成一个个行向量或者列向量,秩就是这些行向量或者列向量的秩,也就是极大无关组中所含向量的个数。通常表示为r(A),rk(A)或rank A。
一直以来都是采用将A和b弄在一起变成增广矩阵之后,进行高斯消元法求解。
设矩阵A的秩为r,且矩阵的行数和列数分别为m和n。r<=min(m,n)。
r=m=n时,此时矩阵的列向量全部线性无关,可以张成维度为n的空间,又b为m1=n1的列向量,故b一定在该空间内,且有且仅有1个系数组合能够满足,即Ax=b有唯一解;
r=m r=n r

2.高斯分布

高斯分布指的就是正态分布,一维的形式如下图学习记录-视觉SLAM十四讲第2版(一)_第1张图片
高维时可以看类似2维的情况如下图
学习记录-视觉SLAM十四讲第2版(一)_第2张图片

3.C++的类

对C++的类有所了解,知道STL,也使用过其中的一些库,如vector、map、list等。

4.书写C++程序

都是根据需求去写C++程序,但是用类用的比较少

5.C++11的标准

老实说了解得不多,主要还是这次这个问题后才特意去查了一下。之前是C++98的旧标准,C++11标准特性包括以下这些:
(1)新的关键字auto、decltype、nullptr 空指针。
(2)序列for循环简化,在C++11 中for循环可以使用类似java的简化的for循环,可以用于遍历数组,容器,string以及由begin和end函数定义的序列。
(3)Lambda表达式:lambda表达式类似Javascript中的闭包,它可以用于创建并定义匿名的函数对象,以简化编程工作。
(4)变长参数的模板:现在增加了tuple,可以用于处理多个不同类型的数据。
(5)更加优雅的初始化方法。

6.Linux

知道linux,也只使用过ubuntu这一种操作系统。

7.Linux目录结构

Linux的目录结构是树状,只知道cd和ls这些基础的指令。对Linux其实还不够熟悉,具体的结构情况可以见Linux系统目录结构

8.Ubuntu软件安装

一直以来只会用2.5种安装方式,1种是通过软件商店,1种是通过apt-get或者apt install进行安装,0.5种是部分软件必须通过源码安装的,在网上搜搜教程也就通过源码安装了。虽然每次都没太弄懂每一步的具体含义。针对这个问题进行检索后才发现还可以通过snap命令和dpkg命令进行安装。一般安装在/usr下。对于只知道模糊软件名称的软件,可以通过apt search来进行搜索,找到自己想要的库再进行安装。

9.Vim

表示刚开始看的时候学了一遍,的确快学了1小时,现在又忘了,还是得多用Ubuntu才行。

总结

第一讲就是过下,有个心理准备,告诉你SLAM会用到什么内容,从上面的9个问题就可以看出来,主要涉及到线性代数、概率论、C++、ubuntu以及在ubuntu下各种库的安装,还有在Linux环境下写代码之类。本文主要总结了视觉SLAM十四讲第二版这本书第一讲的习题内容。

你可能感兴趣的:(学习记录,学习,线性代数,矩阵)