sd-slam源码解读第六篇:GlobalMapping

# lsd-slam源码解读第六篇:GlobalMapping

标签(空格分隔): lsd-slam


地图优化可以说是整个技术里面最简单的一部分了,核心其实就是g2o,可以看到这个里面代码也不多,总共加起来不到1000行,实际上就是这些工作,都是在为g2o服务

g2oTypeSim3Sophus

这个文件里面定义了图优化需要使用的基本定点class VertexSim3 : public g2o::BaseVertex<7, Sophus::Sim3d>和边class EdgeSim3 : public g2o::BaseBinaryEdge<7, Sophus::Sim3d, VertexSim3, VertexSim3>
在这之前,我们需要知道优化的对象是什么,请看论文中的公式
2016-07-02-161458_1161x147_scrot.png-22kB
实际上可以从代码和论文中明白,优化的是sim3(顶点),代表的是相机坐标的位置,通过约束sim3((边),代表的是两个坐标之间的变换关系,他们是g2o的基本元素,请自行研究g2o库的使用方法,即明白这里的函数都有什么作用

TrackableKeyFrameSearch

这个类主要是用于查找可用可keyFrame的,让我们直接进入函数

TrackableKeyFrameSearch::findCandidates

不得不说这是一个返回值及其扭曲的函数,下面这么长一串全部是它的返回值

std::unordered_set<Frame*, std::hash<Frame*>,
                std::equal_to<Frame*>,
                Eigen::aligned_allocator< Frame* > >

看起来比较难受,其实是返回了一个hash_set,调用的是std::hash的方法吧指针hash,应该会调用这个模板(我没仔细看,不过十有八九是这个)

template<typename _Tp>
  static size_t
  hash(const _Tp& __val)
  { return hash(&__val, sizeof(__val)); }

比较方法是std::equal_to,实际上就是调用了下面这个模板

template<typename _Tp>
struct equal_to : public binary_function<_Tp, _Tp, bool>
{
  bool
  operator()(const _Tp& __x, const _Tp& __y) const
  { return __x == __y; }
};

最后一个是空间配置器࿰

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值