
SLAM
文章平均质量分 78
3D-GS Gaussian-Splatting ORB VINS SVO DSO MSCKF and so on (SLAM base sophus ceres eigen 3rd_party gtsam)
大江东去浪淘尽千古风流人物
主要研究方向:XR芯片与算法(SLAM,三维重建,空间计算等) 欢迎讨论&&交流
展开
-
【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 · 282 阅读 · 0 评论 -
【SLAM】左右目匹配和前后帧匹配差异
左右目匹配和前后帧匹配是计算机视觉中两种不同的匹配任务,分别服务于不同的应用目标。它们的核心差异体现在。原创 2025-02-20 09:44:36 · 386 阅读 · 0 评论 -
【SLAM】中ZUPT的原理、名称由来及作用详解
ZUPT通过利用静止阶段的零速度观测,有效校正惯性导航系统的累积误差,是提升SLAM定位精度的关键技术之一。其名称直接体现了核心思想,作用则集中在误差抑制与多传感器融合的鲁棒性增强。原创 2025-02-11 16:35:23 · 357 阅读 · 0 评论 -
[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 · 167 阅读 · 0 评论 -
【OV】MSCKF与SLAMupdate更新解读
利用多个相机观测到的特征点,通过优化计算得到当前状态的最优估计。它可以在不使用地图的情况下实现单目视觉里程计的功能。算法实现了特征点管理、相机位姿估计、特征点三角化和优化、测量矩阵构建和状态更新等主要步骤。小姐:零空间投影的主要目的是:消除冗余信息,保证数值稳定性,满足约束条件,提高整个系统的性能和可靠性,特别是在多状态扩展卡尔曼滤波(MSCKF)等复杂优化场景中。原创 2025-01-07 17:57:31 · 689 阅读 · 0 评论 -
【OV】基于滑窗的残差构建(包含投影误差),目标函数构造,优化滑动窗口中的状态变量(如位姿、速度等)。)舒尔补方法实现SchurVINS::Solve3
原本的优化问题中需要优化的变量大幅减少,使得优化问题从高维变为低维。同时,计算过程也更加稀疏化,便于数值优化库(如 Ceres Solver)高效求解。(Schur Complement Method)完成的,该方法用于有效地消除系统中某些变量(如特征点的三维坐标),从而减少计算复杂度并优化求解效率。总之,代码中通过舒尔补方法避免了对特征点的直接优化,大幅降低了计算复杂度,且保留了状态估计的准确性。(特征点变量的增量),使用舒尔补方法得到关于。最终,通过等效赫塞矩阵和梯度,调用。通过舒尔补消去特征点。原创 2025-01-03 16:46:02 · 1127 阅读 · 0 评论 -
【OV】VINS协方差矩阵维护:描述状态的不确定性及各状态变量之间的相关性
协方差矩阵的维度变化:新增状态的维度与原状态向量保持一致。初始化假设:新增状态的协方差与现有状态通过传递模型或初始化值关联。数值稳定性:使用与原状态一致的协方差值作为新增部分的初值,避免数值不稳定。这一过程确保了在扩展状态的同时,系统的不确定性能够正确传播并保持与观测模型一致。这段代码是C++语言编写的,属于一个名为SchurVINS的类的成员函数。这个函数的目的是将一个新的状态(由表示)添加到当前的状态估计中,并且更新状态协方差矩阵。原创 2025-01-03 14:52:29 · 1164 阅读 · 2 评论 -
【SLAM】重投影小结:直接法立体视觉系统特征深度恢复
计算极线:函数首先计算参考特征在当前帧中的极线起点和终点,这是通过将参考特征的三维坐标通过相机运动变换到当前帧,并根据最小和最大深度的倒数投影到图像平面上得到的。计算仿射变换矩阵:接着计算一个仿射变换矩阵,用于将参考特征的图像区域变换到当前帧的图像尺度和方向。特征预筛选:如果特征是边缘特征(edgelet),并且开启了边缘特征筛选选项,函数会检查特征的方向是否与极线方向一致,如果不一致,则拒绝匹配。匹配准备:确定最佳的搜索级别,并使用仿射变换矩阵对参考特征的图像块进行变换。直接搜索。原创 2025-01-02 18:10:37 · 846 阅读 · 0 评论 -
【MVS】极线约束
这段代码通过计算点到极线的距离和检查点是否在极线的范围内,来验证两个点是否满足极线约束。这是立体视觉中用于匹配点对的一个重要步骤。原创 2024-12-27 14:57:55 · 672 阅读 · 0 评论 -
【SVD/最小二乘/LM】SVD分解,最小二乘与EKF
计算ATAA^T AATA和AATA A^TAAT的特征值和特征向量。构造奇异值矩阵 ( \Sigma )。将矩阵 ( A ) 分解为UΣVTUΣVT。SVD算法的应用非常广泛,例如PCA(主成分分析)、图像压缩等场景中,都是基于SVD的思想。原创 2024-09-23 23:01:43 · 1314 阅读 · 0 评论 -
【SLAM】稀疏矩阵的乘法优化小结
通过使用CSR格式存储稀疏矩阵,我们能够有效避免对零元素的计算,显著提升了稀疏矩阵乘法的计算效率。时间复杂度从常规的O(m * n * p)降低到接近于非零元素的数量,特别适合处理大规模稀疏矩阵的场景。原创 2024-09-11 17:56:57 · 1469 阅读 · 0 评论 -
【LVI-SAM】激光点云如何辅助视觉特征深度提取
这个流程目的是为了将激光雷达的3D信息与相机的2D图像特征点相结合。通过这种结合,可以为每个2D特征点估计一个深度值,从而帮助更准确地构建场景的3D结构。这对于视觉SLAM、3D重建等应用非常重要,因为它利用了激光雷达精确的深度测量来增强仅依赖视觉特征的深度估计。const vector& features_2d) // 去畸变后的归一化坐标 xy1// 0.1 initialize depth for return 深度通道, 用于作为结果返回。原创 2024-09-04 06:06:34 · 2261 阅读 · 0 评论 -
四元数与三维向量相乘运算
输入输出说明:q_in为输入四元数对应的vec,依次对伊你该四元数坐标(w,x,y,z),v_in为对应的三维向量,v_out为v_in对应的载当前四元数旋转下输出的三维向量。这里需要将三维向量v扩充为四元数(0,v), 如c(0,0,10)变为c(0,0,0,10);共轭四元数:q*=(w,-x,-y,-z) 则为 (√2/2 , 0 ,-√2/2 , 0)按照上述公式可得到新四元数(0,10,0,0),则旋转后新坐标为(10,0,0)将最后得到的四元数(0,10,0,0)......原创 2022-08-18 17:19:52 · 2628 阅读 · 0 评论 -
【BALST】Square Root Bundle Adjustment for Large-Scale Reconstruction(CVPR 2021)
主要贡献:提出一种零空间投影的边缘化方法,替代传统的舒尔补, 实验证明了方法与舒尔补在代数上的等价性;针对BA问题的特殊结构, 本文实现了高效的零空间投影边缘化;本文方法可以很好的并行化, 并且可以支持单精度浮点运算;本文提出了一种用于大规模重建的平方根束调整算法。在传统的束调整算法中,每次迭代都需要计算并存储雅可比矩阵,这在大规模场景中会导致内存和计算资源的问题。为了解决这个问题,我们提出了一种新的算法,该算法通过使用平方根信息来减少存储和计算开销。原创 2023-05-29 14:15:06 · 959 阅读 · 0 评论 -
图优化方法比较(SLAM中位姿估计的优化框架包扩g2o、Ceres、GTSAM、SE- Sync)
SLAM中位姿估计的图优化方法比较原创 2022-05-03 17:48:21 · 1182 阅读 · 0 评论 -
SLAM之数据关联(RANSAC算法步骤详解)
cv::findFundamentalMat在处理立体图像对的时候经常会用到对极几何的知识,计算基础矩阵也是很常见的事。OpenCV实现了基本矩阵的算法。对于老版本的C代码,计算基本矩阵的RANSAC方法中有一个迭代次数不收敛的bug,可能导致每次计算的采样次数都达到最大限制的次数,其根源在于计算采样可信度的公式有误,新版本的代码还没有仔细看过,不敢确定是否已经修正了这个bug。但是这个bug并不...原创 2018-04-01 09:21:52 · 10608 阅读 · 1 评论 -
SLAM——之GTSAM函数库
Factor Graphs and GTSAM1. 因子图表达上图为一个HMM(隐马尔可夫链)模型其因子图为(用来极大化最大后验误差):以一个马尔可夫链为例代码://BetweenFactor 包含描述两个因子之间相关操作类// 和初始状态概率矩阵#include <gtsam/slam/BetweenFactor.h>//误差#include <gtsam/slam/PriorFactor.h> //非线性#inclu原创 2022-05-03 16:59:29 · 1540 阅读 · 0 评论 -
四元数求导
qcos2θnsin2θ)]θωnqtcos2wtwwsin2wt)]0)ωq′t−2wsin2wtww2wcos2wt)]q′t−2wsin2wtww2wcos2wt)]1)q1a1v1q2a2v22)q1⨂q2a1a2−v1v2。原创 2022-04-27 23:26:20 · 4323 阅读 · 0 评论 -
VIOSLAM 综述
文章目录1.VIO 松耦合/紧耦合。2. 相机和IMU的缺点及互补性3. VIO融合算法流程及其模块分解:4. VIO 算法核心:5. 实验结果与总结:6. 参考文献:1.VIO 松耦合/紧耦合。Visual-Inertial Odometry(VIO)即视觉惯性里程计,有时也叫视觉惯性系统(VINS,visual-inertial system),是融合相机和IMU数据实现SLAM的算法,根据融合框架的不同又分为松耦合和紧耦合。其中VO(visual odometry)指仅视觉的里程计,T表示原创 2022-05-08 20:07:59 · 4535 阅读 · 0 评论 -
【Tracking】Real-Time Camera Tracking: When is High Frame-Rate Best
更高的帧率承诺能更好地跟踪快速运动,但先进的实时视觉系统很少超过标准的10-60Hz范围,因为认为所需的计算量太大。实际上,在利用预测优势的跟踪器中,增加帧率会减少每帧的计算成本。此外,当考虑图像形成的物理性质时,高帧率意味着快门时间的上限降低,导致运动模糊减少但噪声增加。因此,将这些因素综合考虑,随着帧率的变化,如何优化应用相关性能要求,包括准确性、鲁棒性和计算成本?原创 2023-09-21 18:43:43 · 245 阅读 · 0 评论 -
SLAM精度测评——EVO进阶
1. 基本概念1.1 Umeyama算法1.2 SE(3)与Sim(3)双目SLAM和RGB-D SLAM,尺度统一,因此我们需要通过最小二乘法计算一个从估计位姿到真实位姿的转换矩阵 [公式] 对于单目相机,具有尺度不确定性,我们需要计算一个从估计位姿 [公式] 到真实位姿 [公式] 的相似变换矩阵 [公式] 。在evo代码中,给予 --correct_scale命令就会估计Sim,否则默认为SE(3)。2. 测试标准机器含义1. evo_ape 计算绝对位姿误差evo_ape tum data原创 2022-03-17 13:47:37 · 2878 阅读 · 0 评论 -
gtsam使用避坑
1. gtsam求解ill-posed problem1. gtsam用isam发生Thrown when a linear system is ill-posed. The most common cause for this error is having underconstrained variable发生错误的时候1.检查key的格式 递增是否正确2.检查noise model有没有设置对3.pose发生了很大的变化,一般是位姿没哟设置对造成的。2.原因分析这些原因对应到现实中的情况原创 2022-04-07 09:56:51 · 2623 阅读 · 0 评论 -
gtsam Overview
gtsam OverviewGTSAM 库具有构建因子图表示和优化所需的三个主要组件,用户需要适应他们的特定问题。FactorGraph因子图包含一组要求解的变量(即机器人姿势、地标姿势等)以及这些变量之间的一组约束,这些约束构成了因子。ValuesValues 是包含所有变量的标记值的单个对象。 目前,所有变量都用字符串标记,但变量的类型或组织可以改变。Factors非线性因子表示变量之间的约束,在 SLAM 示例中,它是一种测量值,例如对地标或里程计的视觉读数。该库根据以下目录结构原创 2022-04-07 11:35:57 · 362 阅读 · 0 评论 -
SLAM ++ 快速的非线性优化(批处理和增量模式)
Fast Incremental Bundle Adjustment with Covariance Recovery1. SLAM++ (v2.3)DocumentationOnline documentationwiki2. 版本特性SLAM++ 是增量非线性最小二乘的极简实现,包含在稀疏块矩阵上快速实现线性代数。 它旨在用于 3D 重建或机器人技术。SLAM++ 2.2 候选版本 4这是一个维护版本,添加了一些功能,例如强大的成本函数、几何形状和对 AVX 系列指令集的支持以及对原创 2022-05-03 19:39:29 · 2688 阅读 · 0 评论 -
结构光(一)
原文:http://blog.sina.com.cn/s/blog_80ce3a550100wg5j.htmlhttp://blog.youkuaiyun.com/u013360881/article/details/51395427网上资源:http://eia.udg.es/~qsalvi/recerca.html结构光编码:在3D 的深度获取上,最为常见的方法是类似于双目匹配获取深度...原创 2020-03-22 23:16:04 · 7668 阅读 · 1 评论 -
SLAM精度测评——EVO进阶再进阶
【代码】SLAM精度测评——EVO进阶再进阶。详细描述ate与rpe的计算方式与具体表示含义,执勤然知其所以然原创 2023-08-03 15:20:33 · 1243 阅读 · 0 评论 -
李群与李代数
通过李群——李代数间的转换关系,我们希望把位姿估计变成无约束的优化问题,简化求解方式。李代数的引出:李代数对应李群的正切空间,它描述了李群局部的导数。结论1:对于某个时刻的R(t)(李群空间),存在一个三维向量φ=(φ1,φ2,φ3)(李代数空间),用来描述R在t时刻的局部的导数。结论2:R在原点附近的一阶泰勒展开,我们看到这个向量φ=(φ1,φ2,φ3)反应了R的导数性质,故称它在SO(3)上的原点 φ0 附近的正切空间上。这个φ正是李群大SO(3)对应的李代数小so(3)。李群空间的任原创 2022-01-17 11:02:53 · 1699 阅读 · 0 评论 -
SLAM——Eigen函数库: 稠密问题之线性代数和分解
本节介绍如何求解线性系统,计算几种分解,比如LU,QR,SVD等。1. 线性求解类型及其精度与速度的对比问题:假设有一个系统方程写成如下矩阵的形式Ax=b Ax =b Ax=b其中A,b是矩阵,b也可以是向量,当想要求解x时,可以选择多种分解方式,取决于矩阵A的形式以及考虑的速度和精度,下面是一个简单的例子#include <iostream>#include <Eigen/Dense>using namespace std;using namespace Eig原创 2022-05-03 17:28:20 · 672 阅读 · 0 评论 -
SLAM之数据关联(ICP RANSAC/特征匹配)
Point CloudsA point cloud is a data structure used to represent a collection of multi-dimensional points and is commonly used to represent three-dimensional data.In a 3D point cloud, the points usua...原创 2018-06-25 23:00:01 · 2114 阅读 · 0 评论 -
【三维重建】结合深度学习的三维重建/SLAM(一)
经典的计算机视觉问题是3-D重建。基本上可以分成两种路径:一是多视角重建,二是运动重建。前者有一个经典的方法是多视角立体视觉(MVS,multiple view stereo),就是多帧的立体匹配,这样采用CNN模型来解决也合理。传统MVS的方法可以分成两种:区域增长(region growing)和深度融合(depth-fusion)。soccor on tabke 等效果惊艳,在现有的5G...原创 2020-03-03 09:58:39 · 17665 阅读 · 6 评论 -
【常见相机模型】
kUnifiedProjection (统一投影相机模型):这是一种更通用的相机模型,可以用来描述具有更复杂投影特性的相机。kPinhole (针孔相机模型):这是最基本和常见的相机模型。kOmni (全景相机模型):全景相机模型是一种特殊的相机模型,可以捕捉全景图像或360度全景视频。这些相机模型的选择取决于具体应用场景和所需的成像效果。不同类型的相机模型对应着不同的投影几何和畸变特性,可以根据实际需要进行选择和配置。kEqFisheye (等距鱼眼相机模型):等距鱼眼相机模型是一种常见的广角镜头模型。原创 2023-08-30 12:01:51 · 1843 阅读 · 0 评论 -
【 Lucas-Kanade光流法】
Lucas-Kanade光流法是一种密集光流估计方法,用于计算图像中每个像素的运动向量。它假设在相邻帧之间,像素的灰度值不会发生大的变化,因此可以通过。具体来说,步骤3中需要解决一个最小二乘问题,即找到一个位移向量使得两幅图像之间的像素值残差最小。该线性方程组可以使用最小二乘法求解。最小化像素值残差的平方和来求解运动向量。分别表示第一幅图像和第二幅图像在位置。原创 2023-06-21 19:37:53 · 935 阅读 · 0 评论 -
《视觉SLAM进阶:从零开始手写VIO》(二)
《视觉SLAM进阶:从零开始手写VIO》第二讲1 安装im_utils这个工具之前就使用过了,还写了博客,没想到在这里用上了,博客地址:https://blog.youkuaiyun.com/learning_tortosie/article/details/89878769 ,现直接搬运到这里。imu_utils是一个用于分析IMU性能的ROS工具包。1.1 安装首先,安装依赖:sudo apt-get install li作者在README.md中的编译步骤为:download required原创 2021-10-11 22:37:01 · 938 阅读 · 0 评论 -
SLAM——Eigen函数库之矩阵块运算,高阶操作middleCols与segment用法
是要选择的连续元素的数量。这个函数返回一个对选定部分的引用,所以你可以使用赋值运算符来进行赋值操作。是要选择的连续列的数量。这个函数返回一个对选定列的引用,所以你可以使用赋值运算符来进行赋值操作。它们在语法和使用方面有所不同,但都允许选择连续的部分并进行赋值操作。是 Eigen 库中的两个不同的函数,用于操作矩阵的列或向量的连续部分。:这是一个向量的成员函数,用于选择向量的连续部分并进行赋值。:这是一个矩阵的成员函数,用于选择矩阵的连续列并进行赋值。是要操作的矩阵类型,是要操作的向量类型,原创 2023-09-01 17:37:08 · 1564 阅读 · 0 评论 -
SLAM的开源以及在移动端AR的适用分析
当前的开源方案当下部分总结引用自blog:http://blog.youkuaiyun.com/OnafioO/article/details/73175835文章总结很好没本文关于其在移动端方面加以总结,希望大家参与讨论,不足之处,请指正。本讲的前半部分将带领读者参观一下当前的视觉SLAM方案,评述其历史地位和优缺点。表1列举了一些常见的开源SLAM方案,读者可以选择感兴趣的方案进行研究和实验。限于...原创 2017-12-19 11:37:20 · 10134 阅读 · 11 评论 -
SLAM学习,小白入门到殿堂级大牛资料整理
总结一下我接触过的SLAM算法吧,主要集中在visual slam:特征法:ORB SLAM https://github.com/raulmur/ORB_SLAM2优势: 在静态环境下定位准确,稳定, 单目和双目版本都可以达到实时(高于10frames/s)。代码可读性强,易扩展, 网上也有实现和imu融合的版本。劣势:建的地图点云稀疏。 运行速度方面,因为提特征点的时间有瓶...原创 2018-06-14 11:05:41 · 10407 阅读 · 9 评论 -
【VPS + ORB-SLAM2】多人使用手机协同操作调研思考
ORB-SLAM2-VINS-Fusion GitHub链接:https://github.com/HKUST-Aerial-Robotics/VINS-Fusion/tree/master/orb_slam2。ORB-SLAM2-Map-Merging GitHub链接:https://github.com/Owen-Liuyuxuan/ORB_SLAM2-Map-Merging。在构建地图时,需要确定关键点,并且需要对动态物体进行处理,例如可以通过目标跟踪等方法将其排除在外。原创 2023-04-16 15:34:12 · 1730 阅读 · 0 评论 -
【OpenCV】 2D-2D:对极几何算法原理
考虑从两张图像上观测到了同一个3D点,如图所示**。**我们希望可以求解相机两个时刻的运动R,tR,tR,t。假设我们要求取两帧图像I1,I2I_1,I_2I1,I2之间的运动,设第一帧到第二帧的运动为R ,t,两个相机中心分别为O1,O2O_1,O_2O1,O2.考虑I1I_1I1中有一个特征点p1p_1p1,它在I2I_2I2中对应着特征点p2p_2p2.连线$\overrightarrow{O_1 p_1} 和和和\overrightarrow{O_2 p_2}$ 在三维空间中交于点P原创 2023-05-04 19:55:34 · 712 阅读 · 0 评论 -
SLAM之数据关联(LO-RANSAC/特征匹配)
matlab 编译loransac,lapackmex ranH.c时一直链接错误。原来mex在编译多个文件时要把所有的C文件都列出来。命令如下:mex loransacH.mex.c ranH.c utools.c Htools.c lapwrap.c matutl.crtools.c -I'D:\lapack\headers\lapack' -L'...原创 2020-01-18 21:58:25 · 2202 阅读 · 5 评论 -
SLAM中FEJ/边缘化与一致性(consistency)问题分析
d) 对于不能观的自由度,其真实方差将会不断(unbounded)增长(比方说VO中,世界坐标系中的位姿估计误差可能会一直累加),不能观自由度减小一维导致的直观后果是,等效于引入了错误的观测信息,使估计的方差在这个维度(错误地)出现reduction,因此不满足consistency的第2点。c) b与a相比,少掉一个自由度的原因在于,在EKF中进行线性化时,状态更新导致线性化的状态点不一样,这个不同会使系统的能观性矩阵性质发生改变(即[1]中对standard EKF的分析);原创 2021-09-08 17:35:38 · 3088 阅读 · 0 评论