《视觉SLAM十四讲 第9章设计前端》总结
第9章设计前端讲解了如何设计一个前端,这里自己也做个总结。
1、一个完整的工程项目的文件夹组织框架一般包含以下7个部分。
1)bin: 用来存放二进制文件
2)include/slam: 存放头文件
3)src: 存放源代码
4)test: 存放测试用的文件
5)lib: 存放编译好的库文件
6)config: 存放配置文件
7)cmake_modules:第三方库的cmakes文件,在使用g2o之类的库时会用到它
搭建好文件夹组织框架后,确定基本数据结构,即主要有哪几个类,以及它们之的关系。
2、一个基本的SLAM工程由以下几个基本数据结构0.1版本中介绍类5个类。
Frame:在这个类中定义了ID,时间戳,位姿,相机及图像这几个变量,同时还定义了几个重要的方法:创建Frame(工厂模式定义),寻找定点对应第深度,获取相机光心,判断某个点是否在视野内。
Camera:存储相机的内参及外参,并完成相机坐标系、像素坐标系和世界坐标系之间的坐标转换。
MapPoint:表示路标点,定义了路标点的方向及描述子
Map:管理所有路标点,负责添加新路标点,删除不好的路标等工作,以及添加关键帧。图
Config:读取参数文件,并根据参数名称提供参数值。
3、0.2版本
通过两两帧的特征点匹配估算两帧之间的运动估计。
两两帧的视觉里程计:只关心两个帧间的运动估计,并不优化特征点的位置,把估计得到的位姿串起来,得到一条运动轨迹。只要通过特征点求出了运动,就不再需要这一帧的特征点,就扔掉了。
总体结构如下: