- 博客(593)
- 资源 (16)
- 收藏
- 关注

原创 ORB-SLAM2中关键知识点理解( 地图点、关键帧、图结构)
0.1. ORB SLAM2的总体框架是怎样的?下图是论文里的原图,ORB SLAM2一共有三个线程,分别是Tracking,Local Mapping和Loop Closing,其中Tracking是负责提取关键点进行帧间匹配,并且初选关键帧,Loop Mapping是进行关键帧筛选和地图点剔除,同事进行一个局部优化,Loop Closing主要是进行回环检测。2. ORB SLAM2是怎样完成初始化的?在ORB SLAM2进行跟踪前,需要先进行初始化,初始化包括相机初始帧位姿,新建地图,新建关
2022-05-01 01:23:41
5123

原创 SVO(SVO: fast semi-direct monocular visual odometry)
SVO(SVO: fast semi-direct monocular visual odometry)翻译文章目录SVO(SVO: fast semi-direct monocular visual odometry)翻译1、介绍2、系统概述3、符号4、运动估计4.1、 基于稀疏模型的图像对齐4.2、 通过特征对齐松弛4.3、 姿态和结构优化4.4、 讨论5、建图6、 实施细节7、实验结果8、结论1、介绍摘要——半直接法消除了运动估计中昂贵的特征提取和匹配技术的需要,直接在像素级上操作,做到了在高帧
2021-11-23 08:42:20
5373

原创 ORB-SLAM2代码框架梳理与详细解析(共11章)
ORB-SLAM2代码详解文章目录ORB-SLAM2代码详解1. ORB-SLAM2代码详解01_ORB-SLAM2代码运行流程1 运行官方Demo1.2. 阅读代码之前你应该知道的事情1.2.1 变量命名规则1.3 理解多线程1.3.1 为什么要使用多线程?1.3.2 多线程中的锁1.4 SLAM主类`System`1.4.1 System`类是ORB-SLAM2系统的主类,先分析其主要的成员函数和成员变量:1.4.2 构造函数1.4.3 跟踪函数2. ORB-SLAM2代码详解02_特征点提取器ORB
2021-09-23 22:34:50
7781
1
原创 【MSCKF】UpdaterSLAM::delayed_init 和 FeatureInitializer::single_triangulation
摘要: 本文分析了SLAM特征点延迟初始化的流程与条件,聚焦于UpdaterSLAM::delayed_init和FeatureInitializer::single_triangulation两个核心函数。初始化过程分为四级筛选:1)预处理阶段要求特征点至少2个有效测量且位于当前时间窗内;2)几何验证阶段需成功三角化(满足条件数、深度范围等约束),可选高斯牛顿优化;3)统计验证阶段通过卡方检验和雅可比矩阵检查;4)状态融合阶段将特征点加入系统状态。关键设计包括分级过滤机制、自适应特征表示(ARUCO/SL
2025-06-03 18:55:57
540
原创 【Tools】CPU 分析
在客户端计算机上,Windows 总体上分配较短的量子,但为与当前的前台窗口关联的线程提供更长的量子。当线程正在运行或已准备好运行时,除非有足够的处理器可以同时运行这两个线程,否则不能运行较低优先级线程,或者除非较高优先级线程限制为仅在可用处理器的子集上运行。如果处理器处于空闲状态,或者准备好的线程的优先级高于当前正在运行的线程,则准备好的线程可以直接切换到“正在运行”状态。如果线程是可执行的,并且其优先级高于当前正在运行的线程,则较低优先级线程会立即被抢占,较高优先级线程会进行上下文切换。
2025-05-14 16:03:29
1088
原创 【Tools】Dependency Walker,分析Windows应用程序的依赖关系的工具
Dependency Walker 是一款专为Windows应用程序设计的依赖关系分析工具。它能够深入分析可执行文件(.exe或.dll)所依赖的动态链接库(DLL)文件,并进一步追踪这些DLL文件的依赖关系。该工具在诊断应用程序启动失败或运行时错误时尤为有用,能够帮助用户识别缺失或不兼容的DLL文件。其主要功能包括:分析依赖关系、诊断问题、检查DLL文件版本、显示导出和导入函数,以及生成详细的错误报告。用户可以通过访问官方网站 http://www.dependencywalker.com/ 下载最新版本
2025-05-12 15:45:38
162
原创 【SLAM】svo 的深度滤波和 msckf 的后端的点的优化的差异是什么?delayinit和depthfilter之间的差异是什么?
每个特征点独立维护一个深度滤波器(如高斯分布或Beta分布),每次新帧到来时,通过极线搜索找到匹配点并计算候选深度,将其作为观测值对先验分布进行贝叶斯更新。• 核心思想:在多状态约束卡尔曼滤波框架中,维护滑动窗口内的相机状态(位姿、速度、IMU偏差等),利用多帧观测构建几何约束,直接优化系统状态。• 对每个已初始化的特征点,维护其深度的概率分布(如高斯+均匀混合模型)。• 精度高,能联合优化位姿与地图点,考虑多视图的一致性和传感器的紧耦合。• 假设各特征点的深度估计独立,可能忽略多视图几何中的联合约束。
2025-04-30 11:21:58
713
原创 【XR】MR芯片 和 VR芯片之争
MR芯片的核心挑战在于实时融合虚拟内容与现实环境,需集成多传感器处理、空间计算和低延迟交互,而VR芯片更专注于封闭虚拟场景的高效渲染。简言之,MR芯片是VR芯片的“超集”,在感知、环境理解和能效上要求更为严苛。
2025-04-30 10:11:53
1000
原创 【MSCKF中的 零空间的作用是什么 】
在VIO(视觉惯性里程计)中,IMU和视觉的联合估计存在某些不可观测的状态(如绝对位置和全局航向)。一句话描述:MSCKF中,视觉残差(如特征点重投影误差)的雅可比矩阵会被投影到其零空间的正交补空间上,更新仅作用于可观测部分,抑制了零空间中的虚假修正。:在MSCKF中,视觉残差(如特征点重投影误差)的雅可比矩阵会被投影到其零空间的正交补空间上。,通过数学手段消除状态估计中因运动或观测不足导致的不可观测维度的影响,从而提升滤波器的鲁棒性和估计精度。零空间投影会阻止平移方向的更新,仅更新可观测的姿态和速度。
2025-04-16 10:14:41
591
原创 【householder given ratation 之间的差异】
(镜面翻转):将向量 (\mathbf{x}) 关于某个超平面(由Householder向量 (\mathbf{v}) 定义)反射,得到 (-\sigma \mathbf{e}_1)(其中 (\sigma) 是缩放因子,(\mathbf{e}_1) 是标准基向量)。• 变换矩阵形式:在 ((i,j)) 平面上的旋转矩阵 (G(i,j,\theta)),仅修改 (i) 和 (j) 行/列的元素。:对 (m \times n) 矩阵QR分解的复杂度为 (O(2n^2(m-n/3))),适合大规模稠密矩阵。
2025-04-15 19:41:26
286
原创 【SLAM】中ZUPT的原理、名称由来及作用详解
ZUPT通过利用静止阶段的零速度观测,有效校正惯性导航系统的累积误差,是提升SLAM定位精度的关键技术之一。其名称直接体现了核心思想,作用则集中在误差抑制与多传感器融合的鲁棒性增强。
2025-02-11 16:35:23
369
原创 [MOUNT: Learning 6DoF Motion Prediction Based on Uncertainty Estimation for Delayed AR Rendering]
MOUNT: Learning 6DoF Motion Prediction Based on Uncertainty Estimation for Delayed AR Rendering
2025-01-21 13:16:25
169
原创 git系列之revert回滚
1.Git使用revert回滚已提交的commit在git使用中如果提交错误的代码至远程服务器,可以使用gitrevert命令回滚单次commit并且不影响其他commit。回滚最新一次的提交记录:gitrevertHEAD回滚前一次的提交记录:gitrevertHEAD^对历史上的commit回滚:gitrevert回滚历史commit很容易产生文件冲突,需要做好冲突处理。使用SourceTree进行commitrevert在准备revert的commit上右
2025-01-17 20:34:06
2541
原创 【OV】MSCKF与SLAMupdate更新解读
利用多个相机观测到的特征点,通过优化计算得到当前状态的最优估计。它可以在不使用地图的情况下实现单目视觉里程计的功能。算法实现了特征点管理、相机位姿估计、特征点三角化和优化、测量矩阵构建和状态更新等主要步骤。小姐:零空间投影的主要目的是:消除冗余信息,保证数值稳定性,满足约束条件,提高整个系统的性能和可靠性,特别是在多状态扩展卡尔曼滤波(MSCKF)等复杂优化场景中。
2025-01-07 17:57:31
691
原创 【OV】基于滑窗的残差构建(包含投影误差),目标函数构造,优化滑动窗口中的状态变量(如位姿、速度等)。)舒尔补方法实现SchurVINS::Solve3
原本的优化问题中需要优化的变量大幅减少,使得优化问题从高维变为低维。同时,计算过程也更加稀疏化,便于数值优化库(如 Ceres Solver)高效求解。(Schur Complement Method)完成的,该方法用于有效地消除系统中某些变量(如特征点的三维坐标),从而减少计算复杂度并优化求解效率。总之,代码中通过舒尔补方法避免了对特征点的直接优化,大幅降低了计算复杂度,且保留了状态估计的准确性。(特征点变量的增量),使用舒尔补方法得到关于。最终,通过等效赫塞矩阵和梯度,调用。通过舒尔补消去特征点。
2025-01-03 16:46:02
1131
原创 【OV】VINS协方差矩阵维护:描述状态的不确定性及各状态变量之间的相关性
协方差矩阵的维度变化:新增状态的维度与原状态向量保持一致。初始化假设:新增状态的协方差与现有状态通过传递模型或初始化值关联。数值稳定性:使用与原状态一致的协方差值作为新增部分的初值,避免数值不稳定。这一过程确保了在扩展状态的同时,系统的不确定性能够正确传播并保持与观测模型一致。这段代码是C++语言编写的,属于一个名为SchurVINS的类的成员函数。这个函数的目的是将一个新的状态(由表示)添加到当前的状态估计中,并且更新状态协方差矩阵。
2025-01-03 14:52:29
1166
3
原创 【SLAM】重投影小结:直接法立体视觉系统特征深度恢复
计算极线:函数首先计算参考特征在当前帧中的极线起点和终点,这是通过将参考特征的三维坐标通过相机运动变换到当前帧,并根据最小和最大深度的倒数投影到图像平面上得到的。计算仿射变换矩阵:接着计算一个仿射变换矩阵,用于将参考特征的图像区域变换到当前帧的图像尺度和方向。特征预筛选:如果特征是边缘特征(edgelet),并且开启了边缘特征筛选选项,函数会检查特征的方向是否与极线方向一致,如果不一致,则拒绝匹配。匹配准备:确定最佳的搜索级别,并使用仿射变换矩阵对参考特征的图像块进行变换。直接搜索。
2025-01-02 18:10:37
849
原创 【MVS】极线约束
这段代码通过计算点到极线的距离和检查点是否在极线的范围内,来验证两个点是否满足极线约束。这是立体视觉中用于匹配点对的一个重要步骤。
2024-12-27 14:57:55
678
原创 【XR】系统延时分析
P1、P2、P3的差异主要由硬件延迟、预测模型误差、数据处理时间和系统设计限制导致。提高Predictor的精度,减少P1到P2的误差。优化LSW模块的执行效率,缩短P2到P3的延迟。改善PC与FPGA的时钟同步,降低整体系统波动范围。P2P latency 是由于传感器噪声、预测模型不完善、时间同步误差、计算资源不足以及数据频率差异引起的预测时间偏差。通过改进预测模型、优化硬件性能、增强时间同步等措施,可以有效降低这种延迟,提升系统的实时性和精度。
2024-12-26 12:06:06
846
原创 【XR】ATW
异步时间扭曲(Asynchronous Timewarp,简称ATW)是一种在虚拟现实(VR)技术中使用的算法,它通过生成中间帧来减少因帧率不足导致的抖动和延迟,从而提高用户体验。在执行中,由于第一次垂直同步时Frame N的渲染尚未完成,此时会调用经由前一帧渲染的ATW帧进行插入,而第二次时钟同步时Frame N已完成渲染,直接扫描输出,在这种情况下,一倍的渲染对应两倍的垂直同步,帧率可以在低渲染计算下得以保持。这能确保在系统不能够及时完成新一帧完整画面的渲染时,头显内依然显示最新的画面。
2024-12-23 13:18:05
422
原创 【XR】Vsync,全称为Vertical Synchronization(垂直同步)
Vsync,全称为Vertical Synchronization(垂直同步),是一种在计算机图形学中用于协调显示器刷新率和图形处理单元(GPU)输出的技术。它的主要目的是同步GPU渲染帧的速度与显示器刷新的速度,以避免图像撕裂(tearing)现象。
2024-12-18 10:30:21
665
原创 【XR】静态初始化与动态初始化(MACKF与VINS的初始化特点)
静态初始化依赖于设备保持静止不动一段时间,通过分析IMU的加速度和角速度来估计重力方向与尺度,并从视觉数据中恢复初始状态(如相机到IMU的姿态与速度)。动态初始化允许设备在运动中完成初始化,通常通过视觉几何约束(如三角化或PnP)结合IMU数据进行优化,推断初始状态参数。
2024-12-11 10:42:31
555
原创 【程序优先级调整】USB 取流线程优先级的动态调整
实现 USB 取流线程优先级的动态调整,同时保证软件卸载后不影响优先级的改变,需要综合考虑操作系统的线程调度机制和用户权限管理。
2024-12-10 16:45:32
765
原创 【USB协议】HID 和 CDC协议特点对比
对于MR串流的高带宽需求,CDC协议明显更优;而如果仅涉及少量控制信号传输,可以同时搭配HID协议使用,以实现实时控制。
2024-12-10 10:04:28
1021
原创 【C++】undefined reference to `xxx_function’”的错误
既然编译是说没有定义某个函数,所以我们先看看这个函数是哪一个库实现的。直接搜索编译环境的include目录,看看 xxx_function 这个函数是定义到哪一个头文件,再看看这个函数是哪个源文件实现并编译为库。
2024-11-22 12:58:50
707
原创 【SchurVins】核心核心改进与代码解析
总结来说,SchurVINS通过引入Schur补码和改进的地标求解器,实现了在高精度定位和低计算复杂性方面的显著提升。这与SVO2.0中使用的基于GN的地标求解器相比,能够在保证高精度的同时降低计算复杂性。:SchurVINS在消融研究中表现出色,即使在没有GN或基于EKF的地标求解器的情况下,SchurVINS也能够限制全局漂移,并且在某些挑战场景中避免系统发散。:SchurVINS利用Schur补码技术将完整模型分解为自我运动残差模型和地标残差模型,从而在保持高精度的同时降低计算复杂性。
2024-11-21 09:48:34
497
3
原创 【Dynamic-SLAM】 动态视觉SLAM
但这里有个问题,本身RigidMask是需要图像、场景流、位姿做为输入的,所以DytanVO的主要思想是进行运动分割和位姿解算的联合优化,也就是说将RigidMask输出的优化后的光流分割结果馈送给PoseNet,PoseNet生成的位姿又反过来优化RigidMask的动态物体分割性能,论文里提到迭代3次以后可以收敛,注意光流网络只需要前向推理一次。总体结构如图2所示。具体来说,作者修改了现有的主干网络,以学习更强大的对象特征表示,并在主干网络中部署了两次查看和思考的机制,提升了实例分割的性能。
2024-10-16 05:16:26
3965
原创 【Motion Plan】路径规划算法小结
路径规划是自动驾驶和机器人导航中的一个关键环节,它可以根据对环境信息的掌握程度被划分为两种主要类型:全局路径规划和局部路径规划。这两种规划方式在信息获取、规划策略和应用场景上有所不同。全局路径规划:局部路径规划:在实际应用中,全局路径规划和局部路径规划往往需要结合使用。全局路径规划可以提供一个大致的路径方向,而局部路径规划则负责在接近目标的过程中,根据实时环境信息进行路径的细化和调整。这种组合使用的方法可以提高导航系统的鲁棒性和适应性。通过结合全局和局部算法,仓储机器人能够灵活应对各种环境需求,平衡路径规划
2024-10-16 00:06:03
1372
原创 【2D/3D-Lidar-SLAM】 Cartographer详细解读
初始化best_score初始化为负无穷大,用来记录当前找到的最佳匹配分数。遍历平移和旋转参数使用三个嵌套的循环,分别遍历水平方向(j_x)、垂直方向(j_y)和旋转方向(j_θ)的参数空间,从而在各个可能的平移和旋转组合中搜索。计算匹配分数在每个平移和旋转组合下,计算一个匹配分数score,它是通过某个函数M_nearest对所有K个匹配点的距离求和得到的。更新最佳匹配如果当前计算的score比best_score更好,则更新best_score,并记录当前的匹配参数match。返回结果。
2024-10-15 03:38:42
662
原创 【2D/3D-Lidar-SLAM】 2D/3D激光SLAM以及GMapping 与 Cartographer
1. 激光SLAM分类**1. GMapping 系统架构**1.1 **粒子滤波器(Particle Filter)**1.2 **运动模型(Motion Model)**1.3 **传感器模型(Sensor Model)**1.4 **地图更新(Map Update)**1.5 **重采样(Resampling)**1.6 **闭环检测(Loop Closure)****2. GMapping 的特点**2.1 **基于粒子滤波器的 SLAM**2.2 **高效的 2D 建图**2.3 **实时性**
2024-10-15 03:26:25
2051
原创 【3dgs】Gaussian-SLAM发展关键历程梳理
Gaussian-SLAM: Photo-realistic Dense SLAM with Gaussian Splattingcode:概述:3D 高斯泼溅(Splatting)是用于实时辐射场渲染的 3D 高斯分布描述的一种光栅化技术,它允许实时渲染从小图像样本中学习到的逼真场景。基本原理:从已有的点云模型出发,以每个点为中心,建立可学习的3D高斯表达(椭球来表示三维点,参数包括中心位置、不透明度、协方差矩阵和用球谐函数表达的颜色),用Splatting的方法进行渲染,实现高分辨率的实时渲染。引
2024-10-12 14:24:55
2139
原创 【3dgs】总结3DGS与NeRF如何重塑SLAM(24年4月最新进展)
1. 摘要2. 简洁3. 背景3.3.1 NeRF3.3.2 3dgs3.4 数据集4 数据集4.1 SLAM3.1 RGB-D SLAM方法3.1.1 基于NeRF风格的RGB-D SLAM3.1.2 基于3DGS风格的 RGB-D SLAM3.1.3 基于子图的SLAM(Submaps)paper:SLAM领域的研究经历了重大变革,突显了其在实现未知环境的自主探索方面的关键作用。
2024-10-11 06:19:47
2026
原创 【3dgs】3DGS与NeRF对比
3DGS适用于需要显式几何信息实时处理以及精确测量的应用,如自动驾驶、工业检测、机器人视觉等。NeRF强调高质量渲染,适用于渲染复杂场景和生成逼真图像的应用,如电影特效、虚拟现实、虚拟旅游等场景,渲染效果优于几何精度。这两种方法各有所长,适合不同的应用需求。如果你需要精确的几何信息和实时处理,选择3DGS;如果需要逼真的场景渲染和处理复杂光照,NeRF则是更好的选择。
2024-10-09 05:01:41
3360
原创 【FAST-LIO2】FAST-LIO2论文详解
本文介绍了FAST-LIO2:一种快速、鲁棒的、通用的激光雷达惯性里程计框架,FASTLIO2以高效紧耦合的方式迭代卡尔曼滤波器为基础,具有两个关键的新颖之处,可实现快速、稳健和精确的激光雷达的建图和导航。第一该方法是直接将原始点云配准到地图(随后更新地图),而不提取特征,这样可以利用环境中的细微特征,从而提高准确性,这里不采用人工设计的特征提取模块,使其自然适应不同扫描模式的新兴激光雷达;第二个主要创新点是通过。
2024-10-01 05:18:49
2483
原创 【Fast-LIO系列】Fast-LIO、Fast-LIO2、Faster-LIO系列特点分析
而ikd-Tree在point-wise和block-wise,通过对结点新加了deleted, treedeleted, pushdown,treesize, invalidnum属性,进而减小了插入,删除,检索,re-insert的时间复杂度,并达到增量更新的目的;并且能够通过设置的参数,检测到二叉树不平衡时,进行重建。,这样做的好处是原本公式中求逆中的矩阵是观测维度的,新公式求逆中的矩阵是状态维度的,需要求逆H的矩阵维度减小了(因为在实际情况中,激光特征点的数量维度要远大于状态量的维度)
2024-10-01 00:07:00
2015
原创 【LIO-SAM】LIO-SAM论文翻译(2020年)
提出了一种通过平滑和映射实现紧密耦合的激光雷达惯性里程计框架 LIO-SAM,该框架可实现高精度、实时的移动机器人轨迹估计和地图构建。LIO-SAM 在因子图上制定激光雷达惯性里程计,允许将来自不同来源的大量相对和绝对测量(包括回环)作为因子纳入系统。惯性测量单元 (IMU) 预积分估计的运动消除了点云的倾斜,并为激光雷达里程计优化产生了初始猜测。获得的激光雷达里程计解决方案用于估计 IMU 的偏差。为了确保实时高性能,我们将旧的激光雷达扫描边缘化以进行姿势优化,而不是将激光雷达扫描与全局地图匹配。
2024-09-24 00:06:10
1272
Pytorch学习记录分享13-OCR(Optical Character Recognition,光学字符识别)
2024-01-04
mnist 用于手写体训练与测试,这里包含完整的链接
2023-12-21
SuperPointPretrainedNetwork.zip
2023-10-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人