首先还是放上LSD SLAM的整个代码框架,以至于读者可以清楚的知道tracking部分在整个SLAM框架中处于一个什么样的位置。

    LSD SLAM 的tracking部分主要做的工作就是解出keyframe与current frame之间的pose(R,t),已知keyframe上高梯度点的3D点,首先可以初始化一个pose(比如利用上一帧的pose作为这一帧的初始化的值),然后通过photometric error来构建一个最小二乘问题,利用优化的方式来优化出pose。

一、主函数调用tracking部分函数的代码:

如上图所示,初始化完成之后直接调用tracking部分中SE3Tracker这个类的成员函数进行track。

二、tracking部分的函数
    tracking部分主要有四个文件,分别是SE3Tracker.cpp,SE3Tracker.h,TrackingReference.cpp,TrackingReference.h。

    其中SE3Tracker是tracking部分最主要的一个类,其中的成员函数trackFrame()实现了一个参考帧和当前帧,以及一个初始的pose估计,输出一个优化好的pose。

具体的实现为:
1、首先调用trackingReference类中的makePointCloud()函数来计算参考帧有深度的点的3D坐标。这个函数主要记录了像素梯度,参考帧的点云个数。
2、然后调用calcResidualAndBuffers()函数来计算两张图对应点光度之间的残差。

这个函数主要输入参考帧上高梯度点的2d坐标和对应的3d点云,还有当前帧以及参考帧到当前帧的pose。首先是将参考帧上的点通过旋转矩阵rotMat 和平移向量transVec进行变换,然后计算出在当前帧下的u,v坐标,然后通过插值的方式找出u,v坐标对应的灰度值,计算出灰度的残差。最后把所以点的残差求个平均,输出一个平均的残差。

3、调用callOptimized()函数进行优化,求得最后一个优化好的SE3

参考文献:
[1] https://blog.csdn.net/lancelot_vim/article/details/51758870
[2] Engel, Jakob, Thomas Schöps, and Daniel Cremers. “LSD-SLAM: Large-scale direct monocular SLAM.” European    Conference on Computer Vision. Springer, Cham, 2014.
[3] https://github.com/tum-vision/lsd_slam

LSD SLAM 的tracking部分的代码解析相关推荐

  1. 3D激光SLAM:ALOAM:异常点剔除机制代码解析

    3D激光SLAM:ALOAM:异常点剔除机制代码解析 前言 LOAM中的异常点 Code 前言 在LOAM的论文中,作者提到了要剔除两种异常点. 平行点 遮挡点 但是在ALOAM的代码中并未写相关的功 ...

  2. 视觉SLAM十四讲CH8代码解析及课后习题详解

    第一版的代码: direct_semidense.cpp #include <iostream> #include <fstream> #include <list> ...

  3. 视觉SLAM十四讲CH10代码解析及课后习题详解

    g2o_viewer问题解决 在进行位姿图优化时候,如果出现g2o_viewer: command not found,说明你的g2o_viewer并没有安装上,打开你之前安装的g2o文件夹,打开bi ...

  4. 视觉SLAM十四讲CH6代码解析及课后习题详解

    gaussNewton.cpp #include <iostream> #include <chrono> #include <opencv2/opencv.hpp> ...

  5. 视觉SLAM十四讲CH3代码解析及课后习题详解

    eigenMatrix.cpp #include <iostream>using namespace std;#include <ctime> // Eigen 核心部分 #i ...

  6. 视觉SLAM开源算法ORB-SLAM3 原理与代码解析

    来源:深蓝学院,文稿整理者:何常鑫,审核&修改:刘国庆 本文总结于上交感知与导航研究所科研助理--刘国庆关于[视觉SLAM开源算法ORB-SLAM3 原理与代码解析]的公开课. ORB-SLA ...

  7. 视觉SLAM总结——LSD SLAM中关键知识点总结

    视觉SLAM总结--LSD SLAM中关键知识点总结 视觉SLAM总结--LSD SLAM中关键知识点总结 1. LSD SLAM的创新点/关键点是什么? 2. LSD SLAM的整体框架是怎样的? ...

  8. 后端优化 | VINS-Mono 论文公式推导与代码解析分讲

    3. 后端优化(紧耦合) VIO 紧耦合方案的主要思路就是通过将基于视觉构造的残差项和基于IMU构造的残差项放在一起构造成一个联合优化的问题,整个优化问题的最优解即可认为是比较准确的状态估计. 为了限 ...

  9. [从零手写VIO|第五节]——后端优化实践——单目BA求解代码解析

    长篇警告⚠⚠⚠ 目录 solver 全流程回顾 Solver三要素 Solver求解中的疑问 核心问题 代码解析 1. TestMonoBA.cpp 2. 后端部分: 2.1 顶点 2.2 边(残差) ...

最新文章

  1. com.tadu.android中文,塔读文学(com.tadu.android) - 6.68 - 应用 - 酷安
  2. Android中Alertdialog对话框点击消失?
  3. Android数据存储与持久化
  4. HDU2041超级楼梯
  5. Leaflet中使用leaflet-echarts插件实现Echarts的Migration迁徙图(带炫光特效)
  6. 《Google官方SEO指南》十一:以恰当的方式推广你的网站
  7. filter-mutate过滤插件
  8. 电商行业最复杂的人货场分析,我用一个案例给你讲清楚
  9. 基于JAVA+SpringMVC+Mybatis+MYSQL的高校勤工助学管理系统
  10. OpenGL ES着色器语言之变量和数据类型(二)(官方文档第四章)
  11. iOS中分段控制器与UIScrollView结合使用
  12. 我与希赛PMP的不解之缘
  13. Git和码云项目平台使用文档
  14. 【无标题】学生成绩管理系统
  15. itextpdf加盖章
  16. Linux IPTABLES 防火墙专题讲座 - 下篇-龙小威-专题视频课程
  17. 黑苹果内置硬盘识别成外置硬盘_拥有希捷这款硬盘更加方便了我们的数据转移、保密和随时随地使用...
  18. python数据分析六个环节_安利6个珍藏的Python数据分析神器
  19. DCDC直流非隔离负高电压输出电源模块12V24V转0-负50v/-150v/-200v/-250v/-300v/-400v/-500v
  20. 微信小程序—map地图实现标记多个位置

热门文章

  1. Ubuntu 16.04 安装后鼠标键盘无反应问题
  2. 听课记录(快速排序、归并排序)
  3. iOS动画进阶(十四)图像IO
  4. How to convert string to wstring?
  5. MongoDB的创建删除数据库,增删改文档
  6. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java基于2023最新SSM计算机毕业设计选题大全(附源码+LW)之JAVA框架的宿舍管理系统z4f2x
  7. 上海公积金管理中心一览表
  8. 虚拟化技术:实现资源高效利用和灵活管理的利器
  9. Python每三位用逗号分隔(千位分隔符)
  10. 美图将手机业务授权给小米背后:全年最高亏12亿 期待减负