SLAM
文章平均质量分 87
极客范儿
技术决定下限,审美决定上限
展开
-
VI-SLAM技术讨论
当前,为了在实际场景中获得更加精确和稳定的效果,通常采用多传感器融合的方式。其中,采用低成本的IMU与相机融合为视觉惯性SLAM 系统的研究得到了越来越多的关注。IMU传感器可以得到三个轴的角速度以及加速度测量,其测量过程不受光照等因素的影响,与相机具有高度互补性:一方面,可以利用IMU较高的采样频率提高系统的输出频率,进而提高视觉对动态环境和复杂环境的鲁棒性;另一方面,IMU可以借助视觉信息消除自身的累积积分误差。本文将从目前市面上的传感器类别来分析VI-SLAM的各个系统研究现状,然后分别对比各个传感器原创 2024-05-19 15:33:02 · 1066 阅读 · 0 评论 -
将ORB-SLAM3用图像增强的方式打开
ORB-SLAM3在复杂光照环境下,特征提取和特征匹配的性能明显下降,其准确性和鲁棒性收到很大影响,尤其是当周围环境获取的ORB特征点数量不足时,位姿的估计过程无法进行,甚至或导致初始化和跟踪失败的情况,目前工程所需在复杂光照下运行SLAM,ORB-SLAM3是工程性非常好的SLAM算法,所以打算将图像增强用于ORB-SLAM3的特征提取,增强光照环境下的鲁棒性。原创 2024-03-25 12:14:18 · 862 阅读 · 0 评论 -
2023年度学习总结
我被CSDN认证为博客专家啦!这也算是C站对我创作能力的认可。从大一开始在CSDN写作,坚持至今。刚开始写博客只是当作一个学习笔记,把学到的东西记录下来,方便以后重复学习。渐渐地,随着写技术的深度增加,访问量也越来越多,自己的写作能力也慢慢地有所提高。就这样,访问量的提高,粉丝的好评,也让自己的自信心逐渐提高,于是形成了一个良性循环,从而越写越好,越写越多。C站记录了我关于技术的成长,之后的计划是出版一本关于技术的书。十年饮冰,难凉热血。学以致知,然后学以致用。幸运的是,曾经的菜鸟像鸵鸟一样把头扎进沙漠,原创 2023-12-31 15:00:28 · 1670 阅读 · 0 评论 -
ORB-SLAM3的Local&MapMerging线程详解
ORB-SLAM3的Local&MapMerging线程的代码主要集中于LocalClosing.cc的run()函数中,主要执行五个函数分别是:CheckNewKeyFrames() 函数、NewDetectCommonRegions()函数、MergeLocal()函数、MergeLocal2()函数、CorrectLoop() 函数。如果新进入的关键帧,在闭环检测的过程中,如果是当前地图下的,不用进入MergeLocal()函数和MergeLocal2()函数,直接做闭环校正;在非当前地图下,先做地图原创 2023-12-27 10:54:15 · 888 阅读 · 0 评论 -
相机标定:理论与实践
先讨论相机模型,说明投影关系的描述,介绍相机的内外参,最后完成标定。原创 2023-11-10 19:10:33 · 276 阅读 · 0 评论 -
Kalibr标定INDEMIND双目相机
INDEMIND这款相机有硬件同步,但是imu的数据还是不够准确,所以还是需要进行标定。虽然出场已经进行过标定,但是数据仍不够准确,而目前也没有针对这款IMU相机的标定教程,所以从Kalibr安装开始,进行双目相机的标定、IMU的标定、相机和IMU联合标定,做以记录。原创 2023-10-30 10:57:25 · 437 阅读 · 0 评论 -
INDEMIND双目惯性模组运行VINS-Fusion教程
最近使用VIO算法做视觉SLAM,尝试一下VINS-Fusion算法在INDEMIND这款IMU相机上的表现,做以记录。原创 2023-10-16 15:25:41 · 267 阅读 · 0 评论 -
ORB-SLAM2运行自制数据集进行定位教程
ORB-SLAM2只做定位的话,精度还是挺准确的,所以用单目摄像头录制视频,制作自己的数据集跑一下,看看定位精度,将过程加以记录。原创 2023-10-08 16:15:33 · 1422 阅读 · 7 评论 -
Ubuntu 18.04安装Kalibr保姆级教程
在安装Kalibr需要OpenCV2版本,但是目前环境的很多依赖都是需要OpenCV3,于是寻找两个版本共存的解决方案。网上没有详细对Kalibr从安装到标定使用的完整教程,对初学者不是很友好,所以记录自己的学习过程,方便以后参考。原创 2023-09-20 21:37:19 · 1400 阅读 · 0 评论 -
ORB-SLAM3的Tracking线程详解
最近在学习ORB-SLAM3的Tracking线程,主要从一下几个方面进行讲解:ORB-SLAM3初始化、传感器输入模块、Tracking线程子模块、Tracking线程代码详解。其中包括ORB-SLAM3整个系统初始化的代码是如何实现的,单目、双目、RBB-D以及结合IMU的输入的情况,Tracking线程是怎么样处理数据的,代码逻辑是怎么样的;按照Tracking线程每一步实现的功能。原创 2023-09-17 10:56:14 · 429 阅读 · 0 评论 -
ORB-SLAM系列算法演进
ORB-SLAM算法是特征点法的代表,当前最新发展的ORB-SLAM3已经将相机模型抽象化,适用范围非常广,虽然ORB-SLAM在算法上的创新并不是很丰富,但是它在工程上的创新确实让人耳目一新,也能更好的为AR、机器人的算法实现落地。而且它的代码简明扼要,每个模块非常清晰,对初学者也十分友好,是入坑视觉SLAM的不二法门。下面将介绍ORB-SLAM系列算法演进。原创 2023-08-22 11:50:15 · 498 阅读 · 0 评论 -
IMU和视觉融合学习笔记
利用纯视觉信息进行位姿估计,对运动物体、光照干扰、场景纹理缺失等情况,定位效果不够鲁棒。当下,视觉与IMU融合(VI-SLAM)逐渐成为常见的多传感器融合方式。视觉信息与IMU 数据进行融合,根据融合方式同样可分为基于滤波器和基于优化两类。按照是否把图像特征信息加入状态向量,又可以分为松融合与紧融合两类。双目相机加入imu模块的的好处,是解决了高速运动中间数据处理的问题。相机运动过程中间出现模糊,两帧之间重叠区域太少,因此很难做特征点匹配。相机自己又能在慢速运动中间解决 imu的漂移问题,这两者是互补的。在原创 2023-07-21 21:40:47 · 2594 阅读 · 0 评论 -
IMU参数标定学习笔记
标定IMU,就需要对IMU误差的来源进行建模,其实IMU测量过程中的误差是由很多不同的方面所引起的,建模是对一些比较明显的误差,已知的原因把它构建成数学模型,一些我们不知道的误差源那么就无视它,因为把所有误差都考虑进来会很复杂,这个是没有必要的。我们主要关心三个方面的误差来源原创 2023-07-20 17:06:40 · 2039 阅读 · 0 评论 -
相机标定学习笔记
相机模型承担了联系二维图像与三维物理世界的作用,为了得到精确的相机模型,需要对所使用的双目相机进行标定,包括对两个镜头的内参标定及两镜头之间的外参标定。双目标定使用 Kalibr 标定工具,同时标定两镜头内参及外参。INDEMIND双目相机使用 OV9281 图像传感器,可以最高每秒 50 帧的速率采集 1280x800 分辨率的图像,同时采用 M12 定焦镜头,该镜头畸变较大,因此采用 Pinhole-equidistant 相机模型进行标定。原创 2023-07-19 20:41:47 · 1707 阅读 · 0 评论 -
VI-SLAM系统对比
任何类型的相机对运动物体,视线遮挡,光照剧烈变化等恶劣情况下都不够鲁棒,而惯性测量单元(IMU)对环境基本没有要求,并且IMU可以提供高频的位姿估计,视觉一般只能提供低频的位姿。依据视觉与IMU的特点,视觉与IMU融合的SLAM系统逐渐受到广泛关注,已成为SLAM系统的研究热点。视觉与IMU融合的SLAM系统,称之为VI-SLAM系统,本博客针对目前主流的VI-SLAM进行对比。原创 2023-07-05 21:25:48 · 450 阅读 · 0 评论 -
INDEMIND双目视觉惯性模组实时生成点云并保存点云图
目前最近的SDK版本是1.4.2,这个相机成本便宜,有硬同步的IMU,频率也够高,自带标定,对于目前我只做视觉SLAM定位足够用了。然而封库,其他各种依赖库要跟着SDK的库,OpenCV不使用ROS自带的版本,使用单独版本3.4.3等等。这个SDK组织得真的是一言难尽,所以分析SDK中实时显示点云图代码并加以改进,记录下学习的过程。原创 2023-06-26 11:30:35 · 975 阅读 · 0 评论 -
2023年“兆易创新杯”第十八届中国研究生电子设计竞赛有感
今年的电赛给我的感觉是时间真的紧张,可能是因为去年有疫情原因影响所以能准备的时间到七月份,今年不到月底就要全部出成品。我们团队一直在自研一款增强现实眼镜,从硬件设计到软件实现全部由我和另外两个小伙伴一起完成,所以就把我们做出来的原型机的一部分拿出来改了改参赛了。原创 2023-06-25 12:02:32 · 1174 阅读 · 2 评论 -
INDEMIND相机ROS bag包数据的回放
实验需要IMU相机,跑算法是在ROS下跑,在 ROS 系统中,可以使用 bag 文件来保存和恢复系统的运行状态,比如相机话题的 bag 包,然后回放用来进行联合外参标定,也可以使用EVO工具显示算法轨迹,这里记录下我学习官方的 rosbag 教程的笔记。原创 2023-06-22 21:47:27 · 647 阅读 · 0 评论 -
Ubuntu18.04安装EVO工具教程
EVO工具全名为“Python package for the evaluation of odometry and SLAM”,使用Python写的轨迹评估工具,目前在SLAM领域论文中的“使用率”逐渐上升,可以说已经成为了作为SLAMer一定要会用的工具。最近需要使用evo工具评测SLAM算法性能并可视化结果所以加以记录。原创 2023-06-06 17:28:02 · 1691 阅读 · 2 评论 -
Windows源码安装INDEMIND双目惯性模组
最近电赛准备在Win10的平台上做一个增强现实眼镜,所以IMU相机也是必不可少的传感器,记录Windows源码安装INDEMIND双目惯性模组。原创 2023-05-22 15:37:42 · 555 阅读 · 0 评论 -
关于单目视觉 SLAM 的空间感知定位技术的讨论
尝试关于单目视觉 SLAM 的空间感知定位技术的学习,做以调查。SLAM算法最早在机器人领域中提出,视觉SLAM又可以分为单目、双目和深度相机三种传感器模式,在AR应用中通常使用轻便、价格低廉的单目相机设备。仅使用一个摄像头作为传感器完成同步定位与地图创建操作,具有系统结构简单、成本低且易实现等优点。正是尺度不确定性才使得单目SLAM 能够在大尺度和小尺度环境之间进行自由转换。所以单目视觉SLAM成为增强现实领域的研究热点。我近期的工作将从以下几个方面进行阐述:PTAM算法、ORB-SLAM算法……原创 2023-05-17 22:01:31 · 1893 阅读 · 0 评论 -
ORB算法笔记
ORB(Oriented FAST and Rotated BRIEF)特征是目前看来非常具有代表性的实时图像特征。它改进了FAST检测子不具有方向性的问题,并采用速度极快的二进制描述子BRIEF(Binary Robust Independent Elementary Feature),使整个图像特征提取的环节大大加速。ORB在保持了特征子具有旋转、尺度不变性的同时,在速度方面提升明显,ORB是质量与性能之间很好地折中,对于实时性要求很高的SLAM而言是一个很好地选择。原创 2023-04-11 15:21:47 · 224 阅读 · 0 评论 -
ROS平台下INDEMIND双目惯性模组SDK教程
实验室做视觉SLAM需要IMU相机,购入INDEMIND双目惯性模组运行多模态融合的感知定位。双目惯性模组 SDK1.4.2 版本改进了不少,官网上关于ROS环境下的教程十分简略,直接按照官网的步骤无法实现相机数据读取并发布到指定的topic上,于是把自己的安装过程记录下来,方便以后查阅。原创 2023-03-22 21:24:06 · 687 阅读 · 0 评论 -
Ubuntu20.04的ROS环境安装ORB-SLAM3详解
视觉SLAM实验要在Ubuntu20.04系统上使用ROS跑ORB-SLAM3,所以把安装过程总结记录下来。ROS全称Robot Operating System(机器人操作系统)ROS是适用于机器人的开源元操作系统ROS集成了大量的工具,库,协议,提供类似OS所提供的功能原创 2023-03-01 21:11:49 · 9599 阅读 · 48 评论 -
详谈ORB-SLAM2的回环线程LoopClosing
ORB-SLAM2的回环线程LoopClosing分为2个步骤,非常简单。回环线程第一步是检测回环,就是因为局部建图线程使用关键帧结束后,把关键帧传给回环检测线程,所以两个之间也是有缓冲队列的。第二步就是闭环校正。回环检测的主函数也是一个`无限循环`,不断检测是否出现新关键帧,缓冲队列中检测新的关键帧是否出现闭环,如果形成闭环,那就计算闭环关键帧与闭环关键帧参考的对应场景,两帧之间的匹配关系,做一个相似变换。实际上对于双目相机来说是一个刚体变换,单目相机运行时间久导致基线消失,尺寸会漂移,所以中间会产生一个原创 2023-02-05 21:45:35 · 1066 阅读 · 0 评论 -
详谈ORB-SLAM2的局部建图线程LocalMapping
ORB-SLAM2的局部建图线程LocalMapping分为5个步骤,非常简单。当得到缓冲队列里的关键帧,第一步处理当前关键帧的地图点关系等;第二步判断地图点是否为新创建,如果是那就进入测试,测试地图点的好坏,如果不好的地图点就舍弃;第三步创建新地图点,这里创建的是局部地图(真正会被注册到环境变量的里面的局部地图),trakcing的局部地图只用来跟踪使用;第四步进行局部的BA优化;第五步删除掉冗余的关键帧。在ORB-SLAM2中创建的局部地图点这些都是从头开始创建的,根本没有利用到tracking线程里面原创 2023-02-01 16:37:18 · 660 阅读 · 0 评论 -
详谈ORB-SLAM2的跟踪线程Tracking
ORB-SLAM2的三大线程几乎都是每个部分对应一个函数,非常清晰。函数名起的都十分贴切,望文就能生义,我们更应该关注的是里面的关键帧地图点这些变量是怎么流转的。Tracking线程的流程就是:首先输入一帧图像,然后实际上接着进行5步。初始化(实际上相机刚开始需要初始化过程)、图像预处理(提取ORB特征点)、初始位姿估计(根据前一张图片或者附近的一张图片估计当前帧的位姿)、基于当前帧的位姿构建当前帧的局部地图(当前帧附近的很小的一部分地图)、是否生成新的关键帧。原创 2023-01-28 16:17:03 · 902 阅读 · 0 评论 -
详谈ORB-SLAM2的单目初始化器Initializer
单目初始化器Initializer类,这个类只用于单目初始化,因为这是ORB-SLAM里遗留的一个类,也是祖传代码,双目和RGBD相机只需要一帧就能初始化,因为双目和RGBD相机拍到的点都是有信息的,但是单目相机就不一定了,单目相机必须至少有两副图像才能初始化,对单目初始化器来说有两个帧,一个是参考帧,另一个是当前帧,这是连续的两帧。原创 2023-01-17 21:37:38 · 825 阅读 · 0 评论 -
视觉SLAM学习路线
导师让我了解SLAM,SLAM原本是比较小众的方向,最近自动驾驶火起来,做这个SLAM的人也多了,反过来也会推动机器人感知的发展。希望未来学成的时候,能赶上机器人大规模普及,就业一片蓝海。关于视觉SLAM我感觉学习成本高、科研选题难和行业壁垒高,但是充满挑战不是很有意思嘛。学SLAM方向跟motion planning科研都不好做,而且都很吃数学基础。学习难度的话,planning可能教程更多一点,SLAM相较于planning要小众一些,教程也相对较少,所以在学习《视觉SLAM十四讲》整理一些自己的理解原创 2023-01-01 15:19:29 · 2122 阅读 · 0 评论 -
2022年度学习总结
2022年有焦虑也有成长,记录和总结也是成长的一部分。这一年,我也努力在不确定性中做一些确定的事情,感恩被保护的三年,三年清零抗疫结束,做好自己健康的第一责任人。研一半个学期在网课或者封校中度过,我们抓不住未来,但守得住现在,疫情偷走时间,但也别让它偷走青春,感谢所有人的坚守和努力,疫情终将散去,繁华必将如常! 2022年的初雪鹅毛一般,雪下的真不小,量化自己的经历,记录一下自己一年来的学习成果,回顾过去,展望未来,我将从工作成长、生活娱乐和身体健康三个方面进行总结。原创 2022-12-31 22:56:12 · 847 阅读 · 0 评论 -
详谈ORB-SLAM2的关键帧
关键帧是ORB-SLAM2地图里面重要的组成部分之一。关键帧中要重视的两部分:共视图和生成树。共视图和生成树都是来描述关键帧权重关系的,不同之处在于共视图更为稠密,而生成树更为稀疏。ORB-SLAM2论文中的描述图,蓝色表示关键帧,黑色和红色部分表示特征点,绿色的实际上是一条条线,每条线表示附近的两个关键帧的共视关系共视图仅作为参考用,在做优化的时候不会选择共视图。优化共视图是耗时严重的线程,而且优化共视图的时候要给其它变量加锁,其它线程无法工作,所以进一步导致了优化共视图是一个很长、很复杂的过程。就原创 2022-12-08 11:10:21 · 1358 阅读 · 0 评论