手撕 视觉slam14讲 ch13 代码(1)工程框架与代码结构

news2024/12/23 12:53:52

在学习slam一年之后开始,开始自己理思路,全手敲完成ch13的整个代码

我们按照自己写系统的思路进行,首先确定好SLAM整体系统的流程,见下图,输入为双目图像,之后进入前端位姿估计和后端优化,中间维护一个由关键帧和地图点组成的地图

根据确定好工程框架后,确定我们的代码框架,新建以下文件夹:

1. bin 用来存放可执行的二进制;
2. include/MYSLAM 存放 slam 模块的头文件,主要是.h
3. src 存放源代码文件,主要是 cpp;
4. test 存放测试用的文件,也是 cpp;210
5. lib 存放编译好的库文件;
6. config 存放配置文件;
7. cmake_modules 第三方库的 cmake 文件,在使用 g2o 之类的库中会用到它
8. CMakeLists.txt 用于编译代码;

工程框架与代码结构确定好后,我们开始进一步抽象出一些基本的类

1.Frame(帧类):处理的最基本单元,双目视觉中即表示一对图像
2. Feature(特征点类):2D点,通过对帧提取特征点,实现后续光流追踪
3. MapPoint(地图点类):3D点,通过三角化等方式计算出2d特征点的深度,即获得其3D位置

接下来我们先抽象出这些最基本的类

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/964544.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

滑动窗口实例3(最大连续1的个数Ⅲ)

题目: 给定一个二进制数组 nums 和一个整数 k,如果可以翻转最多 k 个 0 ,则返回 数组中连续 1 的最大个数 。 示例 1: 输入:nums [1,1,1,0,0,0,1,1,1,1,0], K 2 输出:6 解释:[1,1,1,0,0,1,1…

stable diffusion实践操作-宽高设置以及高清修复

系列文章目录 stable diffusion实践操作 文章目录 系列文章目录前言一、SD宽高怎么设置?1.1 宽高历史 二、高清修复总结 前言 主要介绍SD的宽高设置以及高清修复 一、SD宽高怎么设置? 1.1 宽高历史 SD生成256256图片效果最好。512512是SD一直使用的画…

【管理运筹学】第 7 章 | 图与网络分析(1,图论背景以及基本概念、术语)

文章目录 引言一、图与网络的基本知识1.1 图与网络的基本概念1.1.1 图的定义1.1.2 图中相关术语1.1.3 一些特殊图类1.1.4 图的运算 写在最后 引言 按照正常进度应该学习动态规划了,但我想换换口味,而且动态规划听说也有一定难度,还不一定会考…

设计模式—简单工厂

目录 一、前言 二、简单工厂模式 1、计算器例子 2、优化后版本 3、结合面向对象进行优化(封装) 3.1、Operation运算类 3.2、客户端 4、利用面向对象三大特性(继承和多态) 4.1、Operation类 4.2、加法类 4.3、减法类 4…

VTK——使用ICP算法进行模型配准

ICP算法 迭代最近点(Iterative Closest Point,ICP)算法是一种用于两个三维形状之间几何对齐(也叫做配准)的计算方法。通常,这两个形状至少有一个是点云数据。ICP算法用于最小化源点云与目标点云之间点到点…

【设计模式】Head First 设计模式——构建器模式 C++实现

设计模式最大的作用就是在变化和稳定中间寻找隔离点,然后分离它们,从而管理变化。将变化像小兔子一样关到笼子里,让它在笼子里随便跳,而不至于跳出来把你整个房间给污染掉。 设计思想 ​ 将一个复杂对象的构建与其表示相分离&…

【两个有序数组合并】

问题描述: 给定两个有序整数数组 A 和 B,将B合并到A中,使得 A 成为一个有序数组。 说明: 初始化 A 和 B 的元素数量分别为 m 和 n。A有足够的空间(空间大小大于或等于 m n)来保存 B 中的元素。默认升序。 输入输出描述&#xf…

大数据组件-Flume集群环境的启动与验证

🥇🥇【大数据学习记录篇】-持续更新中~🥇🥇 个人主页:beixi 本文章收录于专栏(点击传送):【大数据学习】 💓💓持续更新中,感谢各位前辈朋友们支持…

《YOLOv5:从入门到实战》专栏介绍 专栏目录

🌟YOLOv5:从入门到实战 | 目录 | 使用教程🌟 本专栏涵盖了丰富的YOLOv5算法从入门到实战系列教程,专为学习YOLOv5的同学而设计,堪称全网最详细的教程!该专栏从YOLOv5基础知识入门到项目应用实战都提供了详细…

JavaWeb_LeadNews_Day10-Xxljob, Redis实现定时热文章

JavaWeb_LeadNews_Day10-Xxljob, Redis实现定时热文章 xxl-job概述windows部署调度中心docker部署调度中心 xxl-job入门案例xxl-job分片广播热点文章定时计算思路分析具体实现热文章计算定时计算 查询文章接口改造来源Gitee xxl-job概述 windows部署调度中心 运行 xxl-job\do…

【数据结构】队列---C语言版(详解!!!)

文章目录 🐸一、队列的概念及结构🍄1、队列的概念定义🍄2、动图演示 🐸二、队列的实现🐸三、链表结构队列详解🍎创建队列的结构⭕接口1:定义结构体(QNode、Queue)⭕接口2…

LeetCode 23 合并 K 个升序链表

LeetCode 23 合并 K 个升序链表 来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/merge-k-sorted-lists/description/ 博主Github:https://github.com/GDUT-Rp/LeetCode 题目: 给你一个链表数组…

中心差分法-学习笔记《结构动力学-陈政清》

激励分段解析法仅仅对外载荷进行了离散,但对运动方程还是严格满足的,体系的运动在时间轴上依然是满足运动微分方程。然而,一般的时域逐步积分法进一步放松要求,不仅仅对外荷载进行离散化处理,也对体系的运动进行离散化…

前端Vue仿企查查天眼查高管信息列表组件

随着技术的不断发展,传统的开发方式使得系统的复杂度越来越高。在传统开发过程中,一个小小的改动或者一个小功能的增加可能会导致整体逻辑的修改,造成牵一发而动全身的情况。为了解决这个问题,我们采用了组件化的开发模式。通过组…

PCL 判断四点共面(三维空间)

文章目录 一、简介二、实现代码三、实现效果参考资料一、简介 这里仍然沿用之前的方式来判断三维空间中四个顶点的共面性,三维空间中四个顶点可以构成三条线段(共用同一个顶点),这三条线段所代表的矢量可以组成一个立方空间,如下图所示: 这个立方体的体积其实就是由这三个…

Blender里复制对象动画

假设在Blender里有2个对象,其中一个添加了动画,另外一个没有添加动画,那么如何把已有的动画拷贝到没有动画的对象上呢? 分为2步: 先选中没有动画的对象,再按shift键选中有动画的对象,此时2个对…

【论文精读】Learning Transferable Visual Models From Natural Language Supervision

Learning Transferable Visual Models From Natural Language Supervision 前言Abstract1. Introduction and Motivating Work2. Approach2.1. Creating a Sufficiently Large Dataset2.2. Selecting an Efficient Pre-Training Method2.3. Choosing and Scaling a Model2.4. P…

给Hexo添加说说功能

首发博客地址 官网地址 效果 👀 前言 GitHub 仓库:Artitalk.js 🎉 特性 增删查改全方面支持 支持针对每条说说的评论 支持 Markdown/html 语法 支持图片上传 🚀 快速使用 下列主题已将本项目整合进去,可以直接使用。 感…

Linux——常用命令大汇总(带你快速入门Linux)

纵有疾风起,人生不言弃。本文篇幅较长,如有错误请不吝赐教,感谢支持。 💬文章目录 一.终端和shell命令解析器终端和shell命令解析器概述终端提示符的格式常用快捷键 二.Linux命令格式帮助文档:man 三.目录基础知识Wind…

什么是RTC

参考: https://zhuanlan.zhihu.com/p/377100294 RTC(Real time communication)实时通信,是实时音视频的一个简称,我们常说的RTC技术一般指的是WebRTC技术,已经被 W3C 和 IETF 发布为正式标准。由于几乎所…