- 博客(142)
- 收藏
- 关注
原创 ORB-SLAM3源码的学习:GeometricTools文件
GeometricTools提供了两种几何计算功能:1.计算两个关键帧之间的基础矩阵、2.通过三角化算法从两个视角恢复三维点。这部分功能在ORB-SLAM2中就已经介绍过了,这里不过多赘述。
2025-02-16 14:29:27
445
原创 ORB-SLAM3的源码学习: Settings.cc:Settings::readImageInfo读取图像信息
这个函数的主要目的是从配置文件中读取和设置与相机图像尺寸相关的各种参数。它会根据需要调整图像的宽度和高度,并根据这些调整更新相机的校准参数。如果是立体相机或带IMU的相机,还会同时更新第二个相机的校准参数。最终,这些调整确保图像和相机校准信息的一致性。
2025-02-16 07:25:48
149
原创 ORB-SLAM3的源码学习: Settings.cc:Settings::readCamera1/readCamera2 从配置文件中加载相机参数
读取相机参数的函数
2025-02-15 15:15:17
473
原创 ORB-SLAM3源码的学习:Atlas.cc②: Atlas:: CreateNewMap创建新地图
简单总结一下地图是何时创建的:构建slam系统时还没有地图就需要创建,当时间戳不对劲时影响数据的同步时需要创建,当跟踪的第一和第二阶段都为失败时都要分别创建,且满足一定要求的地图会保留作为非活跃地图。
2025-02-10 22:37:52
722
原创 ORB-SLAM2源码学习:Tracking.cc:GrabImageStereo、GrabImageRGBD、GrabImageMonocular处理图像
该部分函数在Tracking.cc源文件中定义,用于处理图像。
2025-02-09 19:49:30
353
原创 ORB-SLAM2源码学习: LocalMapping.cc⑥: LocalMapping::KeyFrameCulling关键帧剔除
跟踪线程中插入关键帧相对宽松,主要是提高跟踪的成功率,它能保证在纹理不足、大旋转、快速运动等情况下也能有较好的跟踪。但这些关键帧全都传入到局部建图线程中会使局部BA进行的非常慢,因此需要剔除一些冗余度高的一些关键帧。
2025-02-08 15:05:42
281
原创 ORB-SLAM2源码学习:Tracking.cc⑧:Tracking::UpdateLocalKeyFrames更新局部关键帧
将共视关键帧设置为局部关键帧将共视最高的关键帧设置为参考关键帧
2025-02-08 15:02:03
236
原创 ORB-SLAM2源码学习:KeyFrame.cc⑤: KeyFrame::SetBadFlag删除关键帧
由于关键帧之间的联系比较复杂,因此如果要删除一个关键帧,就会产生“牵一发而动全身”的效应,需要清除和该关键帧相连关键帧的联系,需要清除该关键帧观测到的地图点的联系,需要为该关键帧的子关键帧重新寻找合适的父关键帧。前面两个操作相对容易,第三个操作会比较复杂,它涉及整个关键帧的父子关系,处理不好会造成整个关键帧维护的生成树的断裂或混乱。
2025-02-07 10:55:19
716
原创 ORB-SLAM2源码学习:KeyFrame.cc④: void KeyFrame::UpdateBestCovisibles更新最佳共视
在添加新连接之后就要重新对所有的共视关键帧和权重的那两个列表重新进行降序排列,这样非常容易知道列表的第一位就是最佳共视关键帧和权重。
2025-02-05 15:44:58
171
原创 ORB-SLAM2源码学习:KeyFrame.cc③: void KeyFrame::AddConnection更新连接权重
这是一个简单的更新权重的一个函数,在更新共视关系时被调用。
2025-02-04 18:18:12
376
原创 (十一)机器人系统的仿真——建造机器人模型
对于ROS新手而言,可能会有疑问:学习机器人操作系统,实体机器人是必须的吗?答案是否定的,机器人一般价格不菲,为了降低机器人学习、调试成本,在ROS中提供了系统的机器人仿真实现,通过仿真,可以实现大部分需求,本章主要就是围绕“仿真”展开的。
2025-02-04 18:16:06
1570
原创 ORB-SLAM2源码学习:KeyFrame.cc②: void KeyFrame::UpdateConnections更新共视关系
每次新建关键帧时也需要新建和它相连关键帧的关系。当关键帧的地图点发生变化时,需要更新和它相连关键帧之间的联系。
2025-02-03 07:55:41
325
原创 (十三)导航仿真——导航实现
导航是机器人系统中最重要的模块之一,比如现在较为流行的服务型室内机器人,就是依赖于机器人导航来实现室内自主移动的。
2025-02-03 07:48:31
1187
原创 ORB-SLAM2源码学习:Initializer.cc(13): Initializer::ReconstructF用F矩阵恢复R,t及三维点
这里通过基础矩阵F来恢复位姿和三维点实际上是借助本质矩阵来进行的,相对于用单应矩阵H恢复位姿和三维点来说,它的解的结构较为简单其解的讨论形式也是比较简单的。
2025-01-24 10:28:42
968
原创 ORB-SLAM2源码学习:Initializer.cc(12): Initializer::DecomposeE分解本质矩阵得到R,t
这部分实际上已经固定了求解模式我这里仅仅是做了一些简单的了解。
2025-01-24 10:26:27
226
原创 ORB-SLAM2源码学习:Initializer.cc(11): Initializer::ReconstructH用H矩阵恢复R, t和三维点
位姿可能有多组解,到底哪个才是真正的解呢? 方法是实践出真知。
2025-01-23 09:49:22
743
原创 ORB-SLAM2源码学习:Initializer.cc⑩: Initializer::FindFundamental找到最好的基础矩阵F
随机选取8对特征点进行基础矩阵的计算并对每个计算出来的基础矩阵进行评分通过不断的比较选出一个分数最高的基础矩阵。
2025-01-23 09:48:10
595
原创 ORB-SLAM2源码学习:Initializer.cc⑨: Initializer::FindHomography找到最好的单应矩阵H
随机选取8对特征点进行单应矩阵的计算并对每个计算出来的单应矩阵进行评分通过不断的比较选出一个分数最高的单应矩阵。
2025-01-22 14:31:29
454
原创 ORB-SLAM2源码学习:Initializer.cc⑧: Initializer::CheckRT检验三角化结果
经过上面的三角化我们成功得到了三维点,但是经过三角化成功的三维点并不一定是有效的,需要筛选才能作为初始化地图点。
2025-01-22 13:15:53
1313
原创 ORB-SLAM2源码学习:ORBmatcher.cc⑥: int ORBmatcher::Fuse将地图点投影到关键帧中进行匹配和融合
该函数定义在特征匹配的源文件(ORBmatcher.cc)下,用于将地图点投影到关键帧中进行匹配和融合。
2025-01-17 11:23:01
327
原创 ORB-SLAM2源码学习:LocalMapping.cc⑤: void LocalMapping::SearchInNeighbors检查并融合当前关键帧和相邻帧(两级相邻)的重复地图点
经过共视帧之间重新进行特征匹配,三角化产生新的地图点以及剔除一些不合格的地图点之后,需要对地图点进行整理,最后更新一下地图点的属性(描述子,深度,平均观测方向等属性)。
2025-01-17 11:22:09
172
原创 ORB-SLAM2源码学习:Tracking.cc: void Tracking::CreateNewKeyFrame 创建新的关键帧
这个函数除了利用当前帧构造新的关键帧和将这个关键帧设置为当前帧的参考关键帧外,对于双目和rgbd摄像头还要为当前帧生成新的地图点。
2025-01-17 10:22:05
300
原创 ORB-SLAM2源码学习: Frame.cc: cv::Mat Frame::UnprojectStereo将某个特征点反投影到三维世界坐标系中
这个函数是在跟踪线程中更新上一帧的函数中被调用。
2025-01-16 21:02:58
236
原创 (九)ROS运行管理
1.ROS是多进程(节点)的分布式框架,一个完整的ROS系统实现:可能包含多台主机;每台主机上又有多个工作空间(workspace);每个的工作空间中又包含多个功能包(package);每个功能包又包含多个节点(Node),不同的节点都有自己的节点名称;每个节点可能还会设置一个或多个话题(topic)...2.在多级层深的ROS系统中,其实现与维护可能会出现一些问题,比如,如何关联不同的功能包,繁多的ROS节点应该如何启动?功能包、节点、话题、参数重名时应该如何处理?不同主机上的节点如何通信?
2025-01-14 14:07:02
1460
原创 (八)ROS通信机制进阶
本文详细介绍了ROS中的C++的常用API,包括节点初始化、话题与服务对象创建、回旋函数、时间管理和日志功能。同时,探讨了ROS头文件和源文件的调用,包括自定义头文件和源文件的使用方法。内容涵盖了从节点初始化到程序运行控制的各个方面,是理解ROS程序设计的重要参考资料。
2025-01-12 14:46:51
1299
原创 (七)ROS从入门到实践——通信机制的实战
本节主要是通过ROS内置的turtlesim案例,结合已经介绍ROS命令获取节点、话题、话题消息、服务、服务消息与参数的信息,最终再以编码的方式实现乌龟运动的控制、乌龟位姿的订阅、乌龟生成与乌龟窗体背景颜色的修改。
2025-01-11 13:14:42
768
原创 (五)ROS通信编程——参数服务器
参数服务器在ROS中主要用于实现不同节点之间的数据共享(P2P)。参数服务器相当于是独立于所有节点的一个公共容器,可以将数据存储在该容器中,被不同的节点调用,当然不同的节点也可以往其中存储数据。
2025-01-09 14:24:48
793
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人