SLAM
文章平均质量分 78
3D-GS Gaussian-Splatting ORB VINS SVO DSO MSCKF and so on (SLAM base sophus ceres eigen 3rd_party gtsam)
大江东去浪淘尽千古风流人物
主要研究方向:XR SLAM 三维重建 欢迎讨论&&交流
展开
-
【SLAM】稀疏矩阵的乘法优化小结
通过使用CSR格式存储稀疏矩阵,我们能够有效避免对零元素的计算,显著提升了稀疏矩阵乘法的计算效率。时间复杂度从常规的O(m * n * p)降低到接近于非零元素的数量,特别适合处理大规模稀疏矩阵的场景。原创 2024-09-11 17:56:57 · 933 阅读 · 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 · 1756 阅读 · 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 · 2441 阅读 · 0 评论 -
【BALST】Square Root Bundle Adjustment for Large-Scale Reconstruction(CVPR 2021)
主要贡献:提出一种零空间投影的边缘化方法,替代传统的舒尔补, 实验证明了方法与舒尔补在代数上的等价性;针对BA问题的特殊结构, 本文实现了高效的零空间投影边缘化;本文方法可以很好的并行化, 并且可以支持单精度浮点运算;本文提出了一种用于大规模重建的平方根束调整算法。在传统的束调整算法中,每次迭代都需要计算并存储雅可比矩阵,这在大规模场景中会导致内存和计算资源的问题。为了解决这个问题,我们提出了一种新的算法,该算法通过使用平方根信息来减少存储和计算开销。原创 2023-05-29 14:15:06 · 846 阅读 · 0 评论 -
图优化方法比较(SLAM中位姿估计的优化框架包扩g2o、Ceres、GTSAM、SE- Sync)
SLAM中位姿估计的图优化方法比较原创 2022-05-03 17:48:21 · 1123 阅读 · 0 评论 -
SLAM之数据关联(RANSAC算法步骤详解)
cv::findFundamentalMat在处理立体图像对的时候经常会用到对极几何的知识,计算基础矩阵也是很常见的事。OpenCV实现了基本矩阵的算法。对于老版本的C代码,计算基本矩阵的RANSAC方法中有一个迭代次数不收敛的bug,可能导致每次计算的采样次数都达到最大限制的次数,其根源在于计算采样可信度的公式有误,新版本的代码还没有仔细看过,不敢确定是否已经修正了这个bug。但是这个bug并不...原创 2018-04-01 09:21:52 · 10102 阅读 · 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 · 1347 阅读 · 0 评论 -
四元数求导
https://ug98gs7tbw.feishu.cn/docs/doccnXl1Z5Xc1MFUohDJ0Umwpfg#四元数求导(四元数/时间)四元数关于时间求导的推导 本质:求导的定义是函数值的微增量关于自变量的微增量的极限。表示旋转的单位四元数作差后,其不再是单位四元数,也就不是旋转四元数了。单位四元数作差后,得到是被减四元数所在空间的切空间,得到的增量是切空间的微增量,因为是旋转,所以当取极限的时候,切空间的微增量就是函数的微增量,也即四元数对应的导数。方式1假设任何一个旋转,一定可原创 2022-04-27 23:26:20 · 3812 阅读 · 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 · 3630 阅读 · 0 评论 -
【Tracking】Real-Time Camera Tracking: When is High Frame-Rate Best
更高的帧率承诺能更好地跟踪快速运动,但先进的实时视觉系统很少超过标准的10-60Hz范围,因为认为所需的计算量太大。实际上,在利用预测优势的跟踪器中,增加帧率会减少每帧的计算成本。此外,当考虑图像形成的物理性质时,高帧率意味着快门时间的上限降低,导致运动模糊减少但噪声增加。因此,将这些因素综合考虑,随着帧率的变化,如何优化应用相关性能要求,包括准确性、鲁棒性和计算成本?原创 2023-09-21 18:43:43 · 156 阅读 · 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 · 2689 阅读 · 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 · 2191 阅读 · 0 评论 -
gtsam Overview
gtsam OverviewGTSAM 库具有构建因子图表示和优化所需的三个主要组件,用户需要适应他们的特定问题。FactorGraph因子图包含一组要求解的变量(即机器人姿势、地标姿势等)以及这些变量之间的一组约束,这些约束构成了因子。ValuesValues 是包含所有变量的标记值的单个对象。 目前,所有变量都用字符串标记,但变量的类型或组织可以改变。Factors非线性因子表示变量之间的约束,在 SLAM 示例中,它是一种测量值,例如对地标或里程计的视觉读数。该库根据以下目录结构原创 2022-04-07 11:35:57 · 295 阅读 · 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 · 2498 阅读 · 0 评论 -
结构光(一)
原文:http://blog.sina.com.cn/s/blog_80ce3a550100wg5j.htmlhttp://blog.csdn.net/u013360881/article/details/51395427网上资源:http://eia.udg.es/~qsalvi/recerca.html结构光编码:在3D 的深度获取上,最为常见的方法是类似于双目匹配获取深度...原创 2020-03-22 23:16:04 · 7520 阅读 · 1 评论 -
SLAM精度测评——EVO进阶再进阶
【代码】SLAM精度测评——EVO进阶再进阶。详细描述ate与rpe的计算方式与具体表示含义,执勤然知其所以然原创 2023-08-03 15:20:33 · 888 阅读 · 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 · 1542 阅读 · 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 · 612 阅读 · 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 · 2014 阅读 · 0 评论 -
【三维重建】结合深度学习的三维重建/SLAM(一)
经典的计算机视觉问题是3-D重建。基本上可以分成两种路径:一是多视角重建,二是运动重建。前者有一个经典的方法是多视角立体视觉(MVS,multiple view stereo),就是多帧的立体匹配,这样采用CNN模型来解决也合理。传统MVS的方法可以分成两种:区域增长(region growing)和深度融合(depth-fusion)。soccor on tabke 等效果惊艳,在现有的5G...原创 2020-03-03 09:58:39 · 16264 阅读 · 6 评论 -
【常见相机模型】
kUnifiedProjection (统一投影相机模型):这是一种更通用的相机模型,可以用来描述具有更复杂投影特性的相机。kPinhole (针孔相机模型):这是最基本和常见的相机模型。kOmni (全景相机模型):全景相机模型是一种特殊的相机模型,可以捕捉全景图像或360度全景视频。这些相机模型的选择取决于具体应用场景和所需的成像效果。不同类型的相机模型对应着不同的投影几何和畸变特性,可以根据实际需要进行选择和配置。kEqFisheye (等距鱼眼相机模型):等距鱼眼相机模型是一种常见的广角镜头模型。原创 2023-08-30 12:01:51 · 1742 阅读 · 0 评论 -
【 Lucas-Kanade光流法】
Lucas-Kanade光流法是一种密集光流估计方法,用于计算图像中每个像素的运动向量。它假设在相邻帧之间,像素的灰度值不会发生大的变化,因此可以通过。具体来说,步骤3中需要解决一个最小二乘问题,即找到一个位移向量使得两幅图像之间的像素值残差最小。该线性方程组可以使用最小二乘法求解。最小化像素值残差的平方和来求解运动向量。分别表示第一幅图像和第二幅图像在位置。原创 2023-06-21 19:37:53 · 737 阅读 · 0 评论 -
《视觉SLAM进阶:从零开始手写VIO》(二)
《视觉SLAM进阶:从零开始手写VIO》第二讲1 安装im_utils这个工具之前就使用过了,还写了博客,没想到在这里用上了,博客地址:https://blog.csdn.net/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 · 852 阅读 · 0 评论 -
SLAM——Eigen函数库之矩阵块运算,高阶操作middleCols与segment用法
是要选择的连续元素的数量。这个函数返回一个对选定部分的引用,所以你可以使用赋值运算符来进行赋值操作。是要选择的连续列的数量。这个函数返回一个对选定列的引用,所以你可以使用赋值运算符来进行赋值操作。它们在语法和使用方面有所不同,但都允许选择连续的部分并进行赋值操作。是 Eigen 库中的两个不同的函数,用于操作矩阵的列或向量的连续部分。:这是一个向量的成员函数,用于选择向量的连续部分并进行赋值。:这是一个矩阵的成员函数,用于选择矩阵的连续列并进行赋值。是要操作的矩阵类型,是要操作的向量类型,原创 2023-09-01 17:37:08 · 1200 阅读 · 0 评论 -
SLAM的开源以及在移动端AR的适用分析
当前的开源方案当下部分总结引用自blog:http://blog.csdn.net/OnafioO/article/details/73175835文章总结很好没本文关于其在移动端方面加以总结,希望大家参与讨论,不足之处,请指正。本讲的前半部分将带领读者参观一下当前的视觉SLAM方案,评述其历史地位和优缺点。表1列举了一些常见的开源SLAM方案,读者可以选择感兴趣的方案进行研究和实验。限于...原创 2017-12-19 11:37:20 · 9846 阅读 · 11 评论 -
SLAM学习,小白入门到殿堂级大牛资料整理
总结一下我接触过的SLAM算法吧,主要集中在visual slam:特征法:ORB SLAM https://github.com/raulmur/ORB_SLAM2优势: 在静态环境下定位准确,稳定, 单目和双目版本都可以达到实时(高于10frames/s)。代码可读性强,易扩展, 网上也有实现和imu融合的版本。劣势:建的地图点云稀疏。 运行速度方面,因为提特征点的时间有瓶...原创 2018-06-14 11:05:41 · 10118 阅读 · 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 · 1586 阅读 · 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 · 627 阅读 · 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 · 2100 阅读 · 3 评论 -
SLAM中FEJ/边缘化与一致性(consistency)问题分析
d) 对于不能观的自由度,其真实方差将会不断(unbounded)增长(比方说VO中,世界坐标系中的位姿估计误差可能会一直累加),不能观自由度减小一维导致的直观后果是,等效于引入了错误的观测信息,使估计的方差在这个维度(错误地)出现reduction,因此不满足consistency的第2点。c) b与a相比,少掉一个自由度的原因在于,在EKF中进行线性化时,状态更新导致线性化的状态点不一样,这个不同会使系统的能观性矩阵性质发生改变(即[1]中对standard EKF的分析);原创 2021-09-08 17:35:38 · 2517 阅读 · 0 评论 -
Eigen norm、normalize、normalized的区别
对于Vector,norm() 返回的是向量的二范数,即对于Matrix,norm() 返回的是矩阵的弗罗贝尼乌斯范数(Frobenius Norm),即原创 2022-08-18 17:53:24 · 434 阅读 · 0 评论 -
【滤波算法】KF及其衍生
UKF是一种基于权值采样的非参数滤波方法,不需要对非线性函数进行任何近似,因此适用于高度非线性的系统。UKF通过对状态向量进行采样,然后利用这些样本点来逼近系统的状态分布,并根据重要性权值对这些采样点进行加权,以得到对系统状态的估计结果。它采用的是迭代线性化技术,即在每个迭代步骤中,都使用当前状态下的最优估计来近似非线性函数,并更新系统的状态和协方差矩阵。异同:优化和滤波都是解决非线性最小二乘问题,只是方式不同,对精度和速度的取舍不同,也有证明IEKF和高斯牛顿针对同一个问题的求解能力是一样的,原创 2023-04-08 17:32:28 · 876 阅读 · 0 评论 -
SLAM——之Eigen函数库
1. Eigen示例相较于Ceres而言,Eigen函数库相对较为简单,我们上一篇文章详细描述了Ceres的使用以及注意事项,由于Ceres能够使用ceres::AutoDiffCostFunction这一类的自动求导函数,相对而言更加轻松,所以Eigen更多的是做矩阵运算。这里我们给出上一篇文章最后的Ceres求解的Eigen版本。我们可以看到本质上差别不大,只是Eigen需要自己求解雅克比矩阵J,并在用GN构建增量方程后,使用ldlt求解线性方程HX=g。#include <iostream&原创 2022-05-03 16:11:26 · 1945 阅读 · 0 评论 -
【SLAM】Kimera-Multi (IEEE-TRO2022 年最佳论文傅京孙)
本文介绍了一个名为Kimera-Multi的多机器人同时定位与建图(SLAM)系统。真实应用需要多机器人SLAM系统具有稳健性,能够识别和拒绝由感知混淆导致的错误的机器人间和机器人内部环路闭合,并且只依赖本地(点对点)通信来实现分布式定位和建图;此外,为了实现高级决策和空间人工智能,这些系统捕获语义信息也是必要的。Kimera-Multi通过一组配备视觉惯性传感器的机器人团队实现。每个机器人使用Kimera构建本地轨迹估计和本地网格。原创 2023-06-06 15:12:51 · 1805 阅读 · 0 评论 -
《视觉SLAM进阶:从零开始手写VIO》(一)
《视觉SLAM进阶:从零开始手写VIO》第一讲作业文章目录《视觉SLAM进阶:从零开始手写VIO》第一讲作业1 视觉与IMU融合后优势互补!2. 常见的视觉+IMU融合方案?有没有工业界应用的例子?3. 四元数和李代数更新,位姿变化的求导及其连续变化下的表现形式4. 作业5.参考1 视觉与IMU融合后优势互补!IMU虽然可以测得加速度和角速度,但这些量都存在明显的漂移,使得积分两次得到的位姿数据非常不可靠。但是,对于短时间内的快速运动,IMU能够提供一些较好的估计。这正是相机的弱点。当运动过快时,(原创 2021-10-11 22:35:11 · 1512 阅读 · 0 评论 -
CVPR2020 论文
1. 点云/3D重建/SLAMD3Feat: Joint Learning of Dense Detection and Description of 3D Local Features论文:https://arxiv.org/abs/2003.03164代码:https://github.com/XuyangBai/D3FeatRPM-Net: Robust Point Matching using Learned Features论文:https://arxiv.org/abs/2003.13.原创 2022-05-05 00:04:50 · 288 阅读 · 0 评论 -
多传感器融合之滤波(一)——卡尔曼滤波(KF)推导
卡尔曼滤波本质上是一个数据融合算法,将具有同样测量目的、来自不同传感器、(可能) 具有不同单位 (unit) 的数据融合在一起,得到一个更精确的目的测量值。卡尔曼滤波的局限性在于其只能拟合线性高斯系统。但其最大的优点在于计算量小,能够利用前一时刻的状态(和可能的测量值)来得到当前时刻下的状态的最优估计。...原创 2020-01-18 22:01:56 · 2044 阅读 · 0 评论 -
欧拉角和旋转矩阵相互转换
(一)变换矩阵/F/H的svd分解或者旋转矩阵、平移矩阵求解(二)欧拉角和旋转矩阵可同样表示刚体在三维空间的旋转,下面分享这两者互相转换的方法和核心代码欧拉角转旋转矩阵欧拉角通过将刚体绕过原点的轴(i,j,k)旋转θ,分解成三步,如下图(蓝色是起始坐标系,而红色的是旋转之后的坐标系)如果将每一个角度用旋转矩阵表示如下:所以,容易得到,欧拉角转旋转矩阵如下:旋转矩阵转欧拉角将旋转矩阵表.........原创 2018-06-27 15:19:00 · 35016 阅读 · 5 评论 -
【SLAM】高通XR2与瑞芯微RK3588性能对比
GPU:采用Mali-G52 MC2 GPU,集成了4个执行单元,支持OpenGL ES 3.2、Vulkan 1.1等图形标准,能够提供流畅的游戏和视频播放体验。存储和连接:支持LPDDR4x和LPDDR5内存,同时还支持USB 3.1 Gen1、PCIe 3.0、HDMI 2.0b等多种接口,具备强大的数据传输和存储能力。GPU:采用Mali-G52 MC2 GPU,集成了4个执行单元,支持OpenGL ES 3.2、Vulkan 1.1等图形标准,能够提供流畅的游戏和视频播放体验。原创 2023-06-06 20:38:02 · 2291 阅读 · 0 评论 -
SLAM——之Sophus函数库
1. Sophus 示例Eigen库是一个开源的C++线性代数库,它提供了快速的有关矩阵的线性代数运算,还包括解方程等功能。但是Eigen库提供了集合模块,但没有提供李代数的支持。一个较好的李群和李代数的库是Sophus库,它很好的支持了SO(3),so(3),SE(3)和se(3)。Sophus库是基于Eigen基础上开发的,继承了Eigen库中的定义的各个类。因此在使用Eigen库中的类时,既可以使用Eigen命名空间,也可以使用Sophus命名空间。比如Eigen::Matrix3d 和 Sop原创 2022-05-03 15:33:32 · 2219 阅读 · 0 评论