CL关于ORB_SLAM的那些事(Map)

Map部分的学习和总结

看了快一个月的ORB代码了,词袋的部分,后面还得补充学习了,才能把词袋部分的cpp理解清楚,可视化部分的也暂时放一放,后面做实验再来涉及一下吧,主要还是想把这个开源框架的算法都过一遍,最后把整个数据的流动情况做到很清楚,因为后面的毕业论文需要对这里面的代码进行魔改,所以今天的这个cpp,算是这一个月学习阶段的倒数第二个了,很有动力额。最后就是一个关于交流的问题。作为实验室第一代填坑的人,平时的学习也没人交流,整个代码的阅读以及算法、公式的推导,都是自己摸索着,可能会有一些出入,所以你们看到我的博客,觉得我理解得可以,需要交流的话,我今天在最后放出本人的qq二维码,在博客下评论,验证输入你们博客名,就可以了。本人能力有限,所以大家一起学习啦!话不多说,继续Map部分的代码阅读。
老规矩,头文件

.h文件

头文件包含的头文件有:

  1. MapPoint.h
  2. KeyFrame.h
  3. set
  4. 线程锁

头文件中维护的变量有:
存放关键帧指针的容器
更新的线程锁
创建点的线程锁
######下面的变量是protected######
存放MapPoint指针的容器
存放关键帧指针的容器
存放MapPoint指针的参考MapPoint的容器
最大的关键帧ID
大改变的索引值
Map的线程锁

头文件设计的函数方法有:
构造函数
添加关键帧的函数
添加MapPoint的函数
删除MapPoint的函数
删除关键帧的函数
设置参考MapPoint的函数
通知有新的大改变的函数
获取最后大改变的索引的函数
获取地图内所有的关键帧的函数
获取地图内所有的MapPoint的函数
获取地图内参考MapPoint的函数
地图内MapPoint的数量?的函数
地图内关键帧的数量?的函数
获取最大的索引值的函数
清空的函数

function by function

.cpp文件中就包含了自身的头文件

Map()
构造函数
将维护变量中的最大索引值初始化为0,最大变化的索引值初始化为0

AddKeyFrame()
添加关键帧
函数的参数列表:关键帧指针
上锁Map
将传入的关键帧插入关键帧的容器内
如果这帧的帧号大于最大的关键帧帧号,最大的关键帧帧号更改为当前帧的帧号

AddMapPoint()
添加地图点
函数的参数列表:MapPoint的指针
上锁Map
将传入的MapPoint存入维护变量的MapPoint容器内

EraseMapPoint()
删除地图点
函数的参数列表:MapPoint的指针
上锁Map
将传入的MapPoint从维护变量的MapPoint容器内删除

EraseKeyFrame()
删除关键帧
函数的参数列表:关键帧指针
上锁Map
将传入的关键帧从关键帧的容器内删除

SetReferenceMapPoints()
设置参考MapPoint
函数的参数列表:存放MapPoint指针的容器
上锁Map
将传入的容器赋值给维护变量中的参考MapPoint容器

InformNewBigChange()
通知新的大变化
上锁Map
将大变化的索引++

GetLastBigChangeIdx()
获取最后大的变化索引
上锁Map
return 维护变量中的大变化索引

GetAllKeyFrames()
获取所有的关键帧
上锁Map
返回存放所有关键帧的容器

GetAllMapPoints()
获取所有的MapPoints
上锁Map
返回存放所有MapPoint的容器

MapPointsInMap()
获取地图中的MapPoint的数量
上锁Map
返回存放地图点容器的size

KeyFramesInMap()
获取地图中的关键帧的数量
上锁Map
返回存放关键帧容器的size

GetReferenceMapPoints()
获取地图中的参考MapPoint
上锁Map
返回维护变量中的存放参考MapPoint的容器

GetMaxKFid()
获取最大的关键帧ID
上锁Map
返回维护变量中的最大关键帧ID

clear()
清空函数
通过for循环,delete掉MapPoint的指针
通过for循环,delete掉KeyFrame的指针
存放MapPoint的容器清空
存放关键帧的容器清空
最大关键帧的ID赋值为0
存放参考MapPoint的容器清空
存放原始关键帧的容器清空

在这里插入图片描述

时间:2019年09月17日
作者:hhuchen
机构:河海大学机电工程学院

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值