氢键H-H
此人不算懒,并不是什么都没有写
展开
-
SLAM ORB-SLAM2(28)PnP估计姿态过程
分析了 ORB-SLAM2 中的 PnPsolver 的迭代过程。原创 2024-07-28 12:15:00 · 52 阅读 · 0 评论 -
SLAM ORB-SLAM2(27)词袋模型
分析了 ORB-SLAM2 所用的 DBoW2 的词袋模型基本结构和词袋向量,并详究了候选关键帧的计算过程:1. 找出和当前帧具有公共单词的所有关键帧;2. 找出和当前帧最多公共单词的关键帧;3. 剔除共享单词数较少的关键帧;4. 计算关键帧的共视关键帧组的总得分;5. 剔除共视关键帧组相似度较少的关键帧。原创 2024-06-23 16:01:47 · 122 阅读 · 0 评论 -
SLAM ORB-SLAM2(26)重定位过程
先介绍了词袋模型的基本思想,然后介绍了重定位的详细过程:1. 计算当前帧特征点的词袋向量;2. 根据用词袋查找相似的候选关键帧;3. 通过词袋模型进行初步匹配;4. 查询较匹配的关键帧(通过PnP投影估计姿态>对内点进行BA优化位姿>不够数就通过投影方式寻找更多匹配点>找到较匹配的关键帧)原创 2024-05-31 23:45:00 · 7978 阅读 · 0 评论 -
SLAM ORB-SLAM2(25)相机位姿优化
在《SLAM ORB-SLAM2(23)运动模型跟踪》中的运动模型跟踪过程在根据匀速运动模型估计位姿后,利用用上一帧地图点进行投影匹配在《SLAM ORB-SLAM2(24)地图点投影匹配》找到了足够多的匹配点时就会调用根据匹配特征点构建优化器修正相机位姿/* 4. 利用3D-2D投影关系,优化当前帧位姿 */原创 2024-04-06 00:45:00 · 12417 阅读 · 0 评论 -
SLAM GMapping(1)ROS封装
SLAM GMapping ROS封装 代码注释原创 2022-01-01 00:14:23 · 11107 阅读 · 11 评论 -
SLAM GMapping(2)传感器
传感器基础类、里程计传感器、激光传感器原创 2022-01-03 22:30:46 · 9880 阅读 · 10 评论 -
SLAM GMapping(3)地图结构
地图是整个SLAM建图过程中维护的对象,简单解析GMapping中的扫描匹配地图数据结构ScanMatcherMap原创 2022-01-08 10:48:55 · 9927 阅读 · 0 评论 -
SLAM GMapping(4)SLAM处理器
SLAM处理器以激光传感器的扫描数据和里程计位姿作为输入,通过Raw-Blackwellized粒子滤波器完成SLAM任务(运动更新,扫描匹配,权重更新,重采样)。原创 2022-01-16 00:23:18 · 8831 阅读 · 0 评论 -
SLAM GMapping(5)运动模型
根据运动模型、最新和历史里程位姿数据、噪声项进行运动估算更新原创 2022-01-16 15:21:41 · 8547 阅读 · 0 评论 -
SLAM GMapping(6)扫描匹配器
扫描匹配器中的爬山优化,似然度和匹配度的计算,以及地图更新。原创 2022-01-16 18:34:33 · 9056 阅读 · 0 评论 -
SLAM GMapping(7)粒子和轨迹
粒子滤波器中的粒子和轨迹结构体定义,第三步权重更新中的更新粒子轨迹权重函数,该函数包括了粒子权重归一化、重置轨迹树和更新轨迹树权重。原创 2022-01-21 23:49:53 · 7852 阅读 · 0 评论 -
SLAM GMapping(8)重采样
粒子滤波器的重采样实现原创 2022-01-22 14:26:23 · 7634 阅读 · 0 评论 -
SLAM GMapping(9)粒子滤波
SLAM GMapping 粒子滤波 简述原创 2023-02-12 17:24:18 · 9929 阅读 · 0 评论 -
SLAM Cartographer(1)框架与安装
Cartographer的框架、安装和试用。通过最优位姿估计,实时的把激光扫描数据添加到当前维护的局部地图中,并在后台进行进行闭环检测对整个地图和历史轨迹进行优化,得到较为准确的全局地图信息。原创 2022-02-22 00:17:13 · 6642 阅读 · 1 评论 -
SLAM Cartographer(2)ROS封装
了解cartographer_ros的目录结构,了解到核心节点cartographer_node的入口main函数定义在node_main.cc原创 2022-02-27 16:11:53 · 6255 阅读 · 0 评论 -
SLAM Cartographer(3)定位和子图构建节点
对节点cartographer_node的源文件node_main.cc分析,了解系统的业务逻辑函数Run,包括其中的对象map_builder用于完成建图和ROS封装对象node原创 2022-02-27 20:18:09 · 6036 阅读 · 0 评论 -
SLAM Cartographer(4)对象Node
了解Node对象相关的源码,了解其构造函数、订阅传感器消息的机制、消息回调函数以及服务响应函数原创 2022-03-05 11:48:11 · 5773 阅读 · 0 评论 -
SLAM Cartographer(5)地图构建器桥梁
了解地图构建器桥梁map_builder_bridge_对象的构造函数、成员函数添加一个新的轨迹、传感器桥梁和一些重要的成员变量原创 2022-03-05 20:45:43 · 5558 阅读 · 0 评论 -
SLAM Cartographer(6)传感器桥梁
了解ROS系统和Cartographer中激光和IMU数据的表示方式,其数据转换以及数据处理函数,最后均通过由map_builder提供的轨迹跟踪器trajectory_builder_对象加载入Cartographer原创 2022-03-06 20:54:18 · 6581 阅读 · 0 评论 -
SLAM Cartographer(7)地图构建器
map_builder对象用trajectory_builders_在前端跟踪运动轨迹完成局部的子图构建,并用pose_graph_在后端完成闭环检测和全局的地图优化。同时解析了创建一个新轨迹跟踪器的函数AddTrajectoryBuilder,通过 CreateGlobalTrajectoryBuilder2D 函数构建了一个具有闭环功能的SLAM对象。原创 2022-03-12 23:22:58 · 6883 阅读 · 0 评论 -
SLAM Cartographer(8)连接前端与后端的桥梁
在GlobalTrajectoryBuilder的成员变量中,了解到前端子图构建LocalTrajectoryBuilder2D、后端闭环检测PoseGraph2D。 还有其接口类GlobalTrajectoryBuilder中的接口处理点云数据函数。原创 2022-03-13 09:19:05 · 5422 阅读 · 0 评论 -
SLAM Cartographer(9)局部轨迹生成器
局部轨迹生成器类LocalTrajectoryBuilder2D包含了Local SLAM的核心要素以及实现这些要素的对象,添加传感器数据、扫描匹配、运动滤波、更新子图等相关的功能。原创 2022-03-13 13:05:09 · 5906 阅读 · 0 评论 -
SLAM Cartographer(10)子图
维护的子图仅包括旧新两个子图,其中旧图用于扫描匹配,新图作为储备。 当新图中插入的数据达到一定程度之后,就替换旧图进行扫描匹配,并重新创建一个新图。还有子图类。原创 2022-03-13 16:03:48 · 5835 阅读 · 0 评论 -
SLAM Cartographer(11)占用栅格
子图是一种ProbabilityGrid占用栅格形式的地图,其父类2D栅格地图Grid2D则定义了栅格单元的存储方式, 并通过类MapLimits来描述占用地图的作用范围。了解了插入器对象range_data_inserter_,介绍了栅格单元的占用概率更新原理,并分析了查找表的构建方法和光线投射方式更新栅格地图。原创 2022-03-13 22:52:01 · 6284 阅读 · 0 评论 -
SLAM Cartographer(12)Local SLAM的主线业务
Local SLAM的主线业务逻辑, 由两个函数决定。函数AddRangeData主要是在筛选激光点云并将它们划分为hit点和miss点,函数AddAccumulatedRangeData则主要调用函数ScanMatch进行扫描匹配和函数InsertIntoSubmap完成子图更新原创 2022-03-18 23:16:11 · 5725 阅读 · 0 评论 -
SLAM Cartographer(13)基于Ceres库的扫描匹配器
基于ceres的扫描匹配器CeresScanMatcher2D,要求hit点在占用栅格上出现的概率最大化(即代价为hit点占据空间出现空闲栅格概率最小)之外, 还通过两个残差项(平移和角度)来约束了优化后的估计位姿在先验位姿的附近原创 2022-03-19 14:14:32 · 5383 阅读 · 0 评论 -
SLAM Cartographer(14)Global SLAM的主线业务
在Cartographer中的位姿图是由轨迹节点和子图构成的二部图,图中的约束描述的是轨迹节点与子图之间的位置关系。后端优化就是估计轨迹节点与子图在世界坐标系下的位姿,最小化全局估计与局部估计之间的偏差原创 2022-03-19 16:49:12 · 5020 阅读 · 0 评论 -
SLAM Cartographer(15)位姿图
了解位姿图PoseGraph2D的构造过程,以及它是如何将前端输出的子图更新信息以及激光雷达扫描的点云数据添加到位姿图中的,并通过一个约束构建器在后台完成闭环检测。每当前端有输出的时候,不一定立即计算约束更新位姿图的,而是放到一个工作队列中,当闭环检测结束后在调度工作队列完成更新。原创 2022-03-19 19:02:49 · 5232 阅读 · 0 评论 -
SLAM Cartographer(16)约束构建器
了解约束构建器的MaybeAdd(计算局部/全局约束)-NotifyEndOfNode(添加约束完成)-WhenDone(闭环检测完成)调用循环和它们的接口实现,看到它借助线程池在后台并行地完成了闭环检测和INTER_SUMMAP类型的约束计算。在后台线程中完成子图与路径节点之间可能的约束计算中先通过基于分支定界算法的匹配器进行粗匹配,然后再通过Ceres进行细匹配。原创 2022-03-19 21:14:21 · 5063 阅读 · 0 评论 -
SLAM Cartographer(17)分支定界闭环检测
深度优先的分支定界搜索算法高效地计算激光点云与子图的匹配度,粗略估计采集点云时机器人相对于子图的位姿原创 2022-03-20 08:51:49 · 5347 阅读 · 0 评论 -
SLAM Cartographer(18)后端优化问题求解器
了解经过闭环检测构建了子图与节点之间的约束之后,通过后端优化求解器进行优化求解。核心是基于Ceres库进行SPA(Sparse Pose Adjustment)的优化方法,把后端优化问题描述成为一个最小二乘的问题求解原创 2022-03-20 10:43:49 · 5277 阅读 · 0 评论 -
SLAM ORB-SLAM2(1)总体框架
ORB-SLAM2的框架和三大线程(运动轨迹跟踪、更新局部地图和闭环检测)的介绍原创 2023-09-10 12:44:39 · 11741 阅读 · 0 评论 -
SLAM ORB-SLAM2(2)编译安装
ORB-SLAM2的源码编译安装原创 2023-09-10 17:47:50 · 11189 阅读 · 0 评论 -
SLAM ORB-SLAM2(3)例程试用
ORB-SLAM2的单目和RGB-D demo例程试用原创 2023-10-10 23:15:00 · 11032 阅读 · 0 评论 -
SLAM ORB-SLAM2(4)工程了解
ORB-SLAM2 目录结构和编译文件了解原创 2023-10-15 10:15:00 · 10542 阅读 · 0 评论 -
SLAM ORB-SLAM2(5)例程了解
了解TUM 数据集的构成,然后了解单目和深度相机demo源码原创 2023-10-22 00:45:00 · 10666 阅读 · 0 评论 -
SLAM ORB-SLAM2(6)系统对象
简单查看了System类型内部定义的成员变量和成员函数,分析了它的构造函数和三种相机的跟踪接口。在分析的过程中,可以看到通过三个任务对象mpTracker、mpLocalMapper和mpLoopCloser 分别完成了轨迹跟踪、局部建图和闭环检测。原创 2023-10-23 00:15:00 · 10262 阅读 · 0 评论 -
SLAM ORB-SLAM2(7)轨迹跟踪器
介绍轨迹跟踪器的成员变量、成员函数、构造函数和一些函数原创 2023-11-11 10:34:31 · 12399 阅读 · 0 评论 -
SLAM ORB-SLAM2(8)局部建图器
介绍局部建图器的成员变量、成员函数、构造函数和一些函数原创 2023-11-12 09:56:54 · 12005 阅读 · 0 评论 -
SLAM ORB-SLAM2(9)闭环检测器
介绍闭环检测器的成员变量、成员函数、构造函数和一些函数原创 2023-11-26 00:45:00 · 11242 阅读 · 0 评论