orb slam3之BA部分源码解读
提前透露一下,用的是g2o库
Optimizer::GlobalBundleAdjustemnt(mpAtlas->GetCurrentMap(),20); 迭代次数是20
然后进入BundleAdjustment(vpKFs,vpMP,nIterations,pbStopFlag, nLoopKF, bRobust);
vpKFs是所有的keyframes, vpMP是所有的map points, nLoopKF是0, bRobust是true
现在有2个keyframe, 473个map points, 所以nExpectedSize = 2x473=946
g2o的边在这里定义
class EdgeSE3ProjectXYZ: public g2o::BaseBinaryEdge<2, Eigen::Vector2d, g2o::VertexSBAPointXYZ, g2o::VertexSE3Expmap>
4个参数:2:测量值(x,y), Vector2d:测量值的类型, 后面两个是不同顶点的类型
其中误差计算是用_measurement - project(map的估计值),project是把3D相机坐标转像素坐标
注意顶点里面,一个顶点VertexSE3Expmap是相机pose, VertexSBAPointXYZ是map point的3D坐标
pose中的map函数就是R * xyz + t
估计值有nExpectedSize个,
下面又是一个边的定义,它们的区别在于这个边是有一个SE3Quat变量的,在计算误差和判断是否是正深度时,先把估计的pose左乘这个SE3,然后再用这个pose把3D相机坐标转为像素坐标,不知这个body是什么
这个边也是估计值有nExpectedSize个
class EdgeSE3ProjectXYZToBody:
orb slam3之BA部分源码解读相关推荐
- ORB SLAM2源码解读(三):Frame类
文章目录 前言 构造函数 双目相机 RGBD相机 单目相机 ExtractORB:提取特征点 ComputeBoW:计算词袋数据 SetPose:设置相机外参 isInFrustum:判断一个MapP ...
- Bert系列(二)——源码解读之模型主体
本篇文章主要是解读模型主体代码modeling.py.在阅读这篇文章之前希望读者们对bert的相关理论有一定的了解,尤其是transformer的结构原理,网上的资料很多,本文内容对原理部分就不做过多 ...
- Bert系列(三)——源码解读之Pre-train
https://www.jianshu.com/p/22e462f01d8c pre-train是迁移学习的基础,虽然Google已经发布了各种预训练好的模型,而且因为资源消耗巨大,自己再预训练也不现 ...
- linux下free源码,linux命令free源码解读:Procps free.c
linux命令free源码解读 linux命令free源码解读:Procps free.c 作者:isayme 发布时间:September 26, 2011 分类:Linux 我们讨论的是linux ...
- nodeJS之eventproxy源码解读
1.源码缩影 !(function (name, definition) { var hasDefine = typeof define === 'function', //检查上下文环境是否为AMD ...
- PyTorch 源码解读之即时编译篇
点击上方"AI遇见机器学习",选择"星标"公众号 重磅干货,第一时间送达 作者丨OpenMMLab 来源丨https://zhuanlan.zhihu.com/ ...
- Alamofire源码解读系列(九)之响应封装(Response)
本篇主要带来Alamofire中Response的解读 前言 在每篇文章的前言部分,我都会把我认为的本篇最重要的内容提前讲一下.我更想同大家分享这些顶级框架在设计和编码层次究竟有哪些过人的地方?当然, ...
- Feflow 源码解读
Feflow 源码解读 Feflow(Front-end flow)是腾讯IVWEB团队的前端工程化解决方案,致力于改善多类型项目的开发流程中的规范和非业务相关的问题,可以让开发者将绝大部分精力集中在 ...
- spring-session源码解读 sesion
2019独角兽企业重金招聘Python工程师标准>>> spring-session源码解读 sesion 博客分类: java spring 摘要: session通用策略 Ses ...
最新文章
- 2004-10-26+ 用户输入的安全问题
- 手机芯片谁是AI之王?高通、联发科均超华为
- 虚拟机 硬盘容量不够 增大的方法
- OEM/ODM指的是什么?
- Failed to start mongod.service: Unit mongod.service not found
- 【深度学习】图文并茂!用Keras LSTM构建编码器-解码器模型
- C++正整数的素数分解的实现算法(附完整源码)
- hibernate入门总结
- Linux 混合编译opencv与opencv_contrib的android版本
- html5圆形导航菜单,圆滑细腻,那些使用圆形导航菜单的漂亮网页设计
- 架构设计师—你在哪层楼?
- 如何在Mac OS X 10.6.4上卸载Python 2.7?
- kotlin android获取按钮,Kotlin Android按钮
- Kotlin基础(五)Kotlin的类型系统
- vue2.0配置 https://github.com/wike933/vuebook
- 简单的notepad将\n转化为换行
- m6000查看端口状态_M6000常用维护命令
- 微博登录及删除粉丝/转发/评论的脚本[更新中]
- 锁屏状态可以远程连接服务器,锁屏状态下如何远程控制安卓手机? 向日葵远程控制完美诠释...
- Linux 性能监控分析