1、设计里程计前端
2、出现的问题并解决
1、简单vo
- Camera 类存储相机的内参和外参,并完成相机坐标系、像素坐标系、和世界坐标系之间的坐标变换v
- Frame 类只提供基本的数据存储和接口。v我们定义了 ID、时间戳、位姿、相机、图像这几个量,在方法中:创建 Frame、寻找给定点对应的深度、获取相机光心、判断某个点是否在视野内等等。
- MapPoint 表示路标点。估计它的世界坐标,并且当前帧提取到的特征点与地图中的路标点匹配,来估计相机的运动,因此还需要存储它对应的描述子。此外,我记录一个点被观测到的次数和被匹配到的次数,作为评价它的好坏程度的指标。
- Map 类管理着所有的路标点,并负责添加新路标、删除不好的路标等工作。 VO 的匹配过程只需要和 Map 打交道即可
- Config 类负责参数文件的读取,并在程序任意地方都可随时提供参数的值。
2、问题一:只利用两帧估计运动不足
2.1 两两帧的vo
- 每一步都有可能失败。例如图片中不易提特征、特征点缺少深度值、误匹配、运动估计出错等等。
2.2 改进一:优化pnp (加入优化)
2.3 改进二:局部地图
- 好处是,我们能够维护一个不断更新的地图。只要地图是正确的,即使中间某帧出了差错,仍有希望求出之后那些帧的正确位置。