SLAM
文章平均质量分 91
wrotcat
路再短也需要出发,路再长也能一步步走到
展开
-
SLAM中去除动态物体的部分方法(主要是视觉SLAM)
一. 基于多分辨率的range image1. RF-LIO: Removal-First Tightly-coupled Lidar Inertial Odometry in High Dynamic Environments利用的是多分辨率的range image。使用投影的range image的可见性来进行移动点识别。1)Fk+1F_{k+1}Fk+1是当前关键帧,MkM_kMk是对应的子地图,这个子地图是通过Fk+1F_{k+1}Fk+1周围的滑窗创建的。考虑到实时性,使用了完整的一个原创 2022-07-29 17:25:16 · 5412 阅读 · 0 评论 -
论文笔记-LIO-SAM: Tightly-coupled Lidar Inertial Odometry via Smoothing and Mapping
LIO-SAM的论文笔记原创 2022-07-02 23:18:29 · 622 阅读 · 0 评论 -
LMA上课笔记
数学公式或相关推导协方差矩阵一定是半正定的已知x‾\underline{x}x和它的期望μ‾\underline{\mu}μ,则的协方差矩阵为E[(x‾−μ‾)(x‾−μ‾)T]E[(\underline{x} - \underline{\mu})(\underline{x} - \underline{\mu})^T]E[(x−μ)(x−μ)T],对于任意向量y‾\underline{y}y有:y‾TΣy‾=E[y‾T(x‾−μ‾)(x‾−μ‾)Ty‾]=E[((x‾−μ‾)Ty‾原创 2022-04-28 03:45:55 · 364 阅读 · 5 评论 -
2D-3D匹配问题的PnP算法对比:DLT,P3P,EPnP
一. 问题定义首先需要清楚什么叫做PnP(Perspective-n-Point)呢?是为了解决什么问题?已知信息:给定的n个3D参考点{c1,c2,...,cn}\{c_1, c_2, ..., c_n\}{c1,c2,...,cn}(假设在A坐标系下)和某相机的图像上2D投影点的{u1,u2,...,un}\{u_1, u_2, ..., u_n\}{u1,u2,...,un}的匹配关系(3D位置通常由三角化或者RGBD的深度图确定,对于双目或RGBD的里程计,可以直接用PnP估计相原创 2022-03-23 04:11:08 · 4635 阅读 · 1 评论 -
optical flow光流估计的评价指标
评价指标Endpoint error(EPE)计算的是估计光流和groundtruth光流的欧氏距离:EPE=((uest−ugt)2+(vest−vgt)2)EPE = \sqrt{((u_{est} - u_{gt})^2 + (v_{est} - v_{gt})^2)}EPE=((uest−ugt)2+(vest−vgt)2)这是一种比较普遍的评估指标,通常会用EPE的均值来评估光流估计的结果。Angular error(AE)计算的是光流向量之间的角度误差:((u0,v0,1)原创 2022-02-12 02:25:50 · 6697 阅读 · 6 评论 -
两口气梳理完VDO-SLAM源码(一)
一. 主函数vdo_slam.cc从源码可以看到一些ORBSLAM的痕迹,主函数中,最关键的的地方就是SLAM.TrackRGBD(imRGB,imD_f,imFlow,imSem,mTcw_gt,vObjPose_gt,tframe,imTraj,nImages);,从这里就可以进入整个系统内部。这里要理解两件事:1. 这里的位姿真值矩阵怎么得到,有什么作用?2. 光流信息是什么样的,之后会被怎么使用?原创 2022-01-14 06:50:01 · 2952 阅读 · 9 评论 -
DynaSLAM源码笔记-检测动态物体部分梳理
按照main函数向下细分的顺序大概记录一下rgbd情况下,动态物体去除(inpaint的部分不是重点)的源码的写法,并对应一下论文, 关于ORB-SLAM2本身的部分不会太涉及到。安装方法见:关于运行DynaSLAM源码这档子事(OpenCV3.x版)论文笔记见:论文笔记-DynaSLAM: Tracking, Mapping and Inpainting in Dynamic Scenes一. rgbd_tum.cc新增了一个命名空间和类来进行关于MaskRCNN的处理,先进行这个对象的初始化,原创 2021-11-17 19:57:09 · 3344 阅读 · 4 评论 -
论文笔记-DynaSLAM: Tracking, Mapping and Inpainting in Dynamic Scenes
I. INTRODUCTION在视觉SLAM中,动态物体会带来如下挑战:1)如何检测图像中的动态物体,从而:a. 防止tracking算法使用动态物体上的匹配点对b. 防止mapping算法把移动物体加入3D地图中2)怎么去补全3D地图中那些被移动物体挡住从而缺失了的部分。DynaSLAM是可以用于单目,双目,RGB-D的动态SLAM系统,相当于是在ORB-SLAM2上加了一个前端的模块,上面的两个挑战,这篇论文都给出了对应的解决办法。对于单目和双目:使用CNN进行像素分割,把图像中的人和车原创 2021-11-12 17:58:04 · 3004 阅读 · 2 评论 -
简单总结LEGO-LOAM相对于LOAM的一些改进及不同点
一. 地面点的提取1.动机:在LEGO-LOAM的实验数据中,有地面都是草坪的情况。对于这种地面,如果直接用LOAM,那么就会有一些边缘特征点落在草地上(因为草地的参差),这是拉了位姿估计的后腿的,结果会非常不稳定。2.缺点:LEGO-LOAM中用到的提取方法需要满足雷达水平安装,或者雷达倾斜安装但已知安装角度的前提。如果是手持设备,这个方法就不太可行,因为手持时不能保证雷达和地面一直都是平行的。3.方法:相邻行的激光点,求取垂直差距和水平面内差距的atan值,小于15度就可以被认为是地面点。这里有一原创 2021-11-05 00:11:01 · 2550 阅读 · 1 评论 -
关于运行DynaSLAM源码这档子事(OpenCV3.x版)
好的,又来到了一篇源码运行记录← ←一. 基础环境首先,是基于之前安装PanopticFCN的设置:nvidia driver : 470cuda : 11.0cudnn : 8.0.1(对应cuda就好)pytorch 17.0二. 成功编译ORB-SLAM2ORB-SLAM2的安装记录详情点击这里。有一些要预先安装的库比如C++11 or C++0x Compiler, Pangolin, OpenCV and Eigen3,如果不知道怎么装,可以再手动搜索一下。DynaSLAM原创 2021-11-01 18:41:40 · 6452 阅读 · 48 评论 -
论文笔记-DynaSLAM II: Tightly-Coupled Multi-Object Tracking and SLAM
I.Introduction关于动态SLAM,在这个部分,论文总结了现有三种方案思路:检测动态的区域,然后把他们从SLAM环节中去除在定位的环节外,把包含动态内容的现实图片中翻译成只有静态内容的图片一个小的却在发展的思路:把动态物体也放进问题里,不仅要去解决SLAM的问题,还要为动态物体的位姿提供信息。对于第三种思路,论文中也给出了几个解决思路:使用传统的多目标追踪。缺点是:准确度高度依赖于相机的位姿估计,但在复杂的动态环境下,位姿肯定是不准的(鸡生蛋蛋生鸡问题)近几年,大家开始尝试联合原创 2021-10-28 21:51:11 · 2994 阅读 · 12 评论 -
ORB-SLAM源码中的相机参数设置
在github看到很多关于相机参数设置的的讨论, 这一篇就是对看到的内容做一个整理和总结,一. 易混淆概念1.Camera.bf根据文档的注释,这个参数是指的:基线距离(单位:米) * fx(单位:像素)2.ThDepth这是一个深度阈值,用于区分哪些特征点是近点,哪些是远点。关于更多的信息,可以参考我之前的笔记。双目关键点双目关键点的深度如果小于40倍基线长度的值,就被叫做近关键点,否则就是远关键点。近关键点可以较好的被三角化,并提供尺度,平移,旋转信息。而远关键点可以提供比较好的旋转信原创 2021-10-10 18:28:33 · 3772 阅读 · 0 评论 -
SLAM中常用到的评价指标
主要是想整理一下关于tum rgbd数据集和kitti数据集的评价指标,之后比较结果不能只看数值大小,还要非常清楚背后的含义。一. 从TUM数据集出发前提假设:给出的位姿估计值为P1...Pn∈SE(3)P_1 ... P_n \in SE(3)P1...Pn∈SE(3), 真值为Q1...Qn∈SE(3)Q_1 ... Qn \in SE(3)Q1...Qn∈SE(3), 下标代表时间t(或帧),这里假设估计位姿和真实位姿各帧时间已对齐,总帧数相同。1. 相对位姿误差RPE(relative原创 2021-10-05 15:41:11 · 7233 阅读 · 2 评论 -
论文笔记-PL-SLAM: Real-time monocular visual SLAM with points and lines
这一篇论文的主要贡献有两个,一个是在orb-slam的基础上加入了线特征,在不影响效率的情况下,提升了系统在低纹理的情况下的表现;二是提出了一个只用到线匹配就估计出初始地图的方法(连续三帧)。这篇论文是基于单目的,还有一个同名的PL-SLAM是双目的SLAM系统,不要弄混了~I. INTRODUCTION首先指出了为什么要使用线特征:对于ORB-SLAM,如果在低纹理场景,或者是图像有运动模糊时,系统就会失效,但是在这些场景中往往还有线条,所以就希望能够应用线特征。同时,论文也说明了使用的线特征的难原创 2021-09-24 06:05:31 · 1263 阅读 · 3 评论 -
论文笔记-ORB-SLAM2-双目与rgbd相机跟单目情况的区别
ORB-SLAM2的最大贡献就是把原来的系统扩展到了双目,rgbd上,这一篇也主要讲的是怎么使用双目或者深度相机的信息,以及他们和单目的区别。I.INTRODUCTIONPlace Recognition是SLAM中一个对回环很重要的模块,作用是:1)检测传感器是否返回已经建过图的区域。2)修正累计误差。 3)在追踪失败之后重新定位相机。单目SLAM的优缺点:优点:成本更低,传感器配置更简单缺点:由于无法直接获得深度信息,所以就需要利用多视图或者滤波来生成初始地图(在最开始无法进行三角化);原创 2021-09-23 09:20:52 · 4750 阅读 · 1 评论 -
论文笔记-LSD: a Line Segment Detector线特征提取
备注:关于LSD的原版论文可点击此处,这一篇是原课题组又添加了一点改进的版本。概要LSD是一个线性时间的线段检测器,提供亚像素的精确结果。它被设计成可以在任何数字图像上工作而不需要调整参数。它可以控制自己的错误检测数量:平均而言,每幅图像允许有一个false alarm。源码关于这篇论文的代码和展示页,请点击这里介绍这一小节主要是引入了几个概念,下面就进行说明。A.梯度和水平线LSD的目的是检测图像上的局部直线轮廓(原文为straight contours)。这就是我们所说的线段。Conto原创 2021-09-09 01:31:15 · 3958 阅读 · 0 评论 -
SLAM笔记-ORB-SLAM2中几种追踪方式的概述
在Tracking线程中,有几种追踪的方法粗估计:相机位姿初始值1.根据上一帧和运动模型估计:运动模型是匀速运动模型,也就是说,当前帧与上一帧之间的相对位姿变化量 = 上一帧和上上帧之间的相对位姿变化量。通过这个可以估计出当前帧的位姿初始值,根据这个值,把上一帧的MApPoints和当前帧的FeaturePoints匹配,之后根据匹配进行优化(?)。如果匹配的点对太少,就要使用关键帧进行估计了。2.重定位:如果上一帧跟踪失败了,也就是说根本就没有上一帧的位姿(此时,匀速运动假设也回天无力),所以就原创 2021-08-27 03:18:29 · 943 阅读 · 0 评论 -
ORB_SLAM2 运行TUM RGBD数据集过程记录
这里是用ubuntu20.04,opencv4安装orbslam2的一点记录。报错信息经过搜索找到了对应的解决办法,在这里做一个笔记报错:FATAL_ERROR "OpenCV > 2.4.3 not found."的错误解决:将ORB_SLAM2/CMakeLists.txt中的opencv版本改成自己对应的版本报错:error: ‘CV_LOAD_IMAGE_UNCHANGED’ was not declared in this scope解决: 把Examples文件夹里.cc文原创 2021-06-30 03:08:35 · 2913 阅读 · 3 评论