![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
SLAM算法阅读
文章平均质量分 91
若愚和小巧
懂深度学习、SLAM的软件工程师
展开
-
R3Live系列学习(四)R2Live源码阅读(2)
(万字长文预警)由于最近换了部门,有许多要交接的事情要忙,并且设计开发了一个大型的视觉地图养成系统,非常有意思乃至于废寝忘食,所以文章鸽了很久,这一篇克服拖延症,将r2live的阅读写完。r2live的状态估计依然是采取ESKF的方式,这部分一直都是大多数人(像我这种蠢人)的痛点。在这里真诚推荐一本“中篇小说”《Quaternion kinematics for the error state KF》,它确实能够成为本系列博客乃至多传感器融合领域的一种预备知识。...............原创 2022-07-04 03:07:00 · 2500 阅读 · 8 评论 -
R3Live系列学习(三)R2Live源码阅读(1)
这次阅读的源码是R2Live,论文为《R2LIVE: A Robust, Real-time, LiDAR-Inertial-Visual tightly-coupled state Estimator and mapping》。原创 2022-01-27 23:29:00 · 5283 阅读 · 5 评论 -
ORB_SLAM2源码阅读(三)相机定位
我们继续上一节的tracking部分,三、位姿估计说到位姿估计就不得不翻开《多视图几何》这本大部头才能看懂作者的源码。回到Track函数,作者为相机设计了两种运行模式,分别是匀速运动模式和关键帧匹配模式。bool Tracking::TrackWithMotionModel(){ ORBmatcher matcher(0.9,true); // Update last frame pose according to its reference keyframe //原创 2020-07-12 00:21:19 · 750 阅读 · 0 评论 -
v-loam源码阅读(四)深度图点云与建图部分
在这一套代码中,激光部分其实是比较简略的,原创 2020-06-03 22:29:56 · 1791 阅读 · 10 评论 -
v-loam源码阅读(三)光束平差法和位姿融合
又到了人见人爱的bundle adjustment部分,这里只涉及了三个话题,接收了来自StackDepthPoint的深度图,以及ba优化前后的里程计信息。 ros::Subscriber depthPointsSub = nh.subscribe<sensor_msgs::PointCloud2> ("/depth_points_stacked", 1, depthPointsHandler); ros::原创 2020-06-03 22:08:37 · 1013 阅读 · 0 评论 -
v-loam源码阅读(二)视觉里程计
再转到VisualOdometry这一节点,这是我们在loam系列中没有接触过的,但对于熟悉视觉里程计的我们来说也不算太难,根据论文,前端是采用msckf作为视觉里程计,但根据本篇代码来看更偏向于继承loam非线性优化的特征点匹配方法,我们重点学习之前没有完全搞懂的imu处理部分。首先看到本节点所涉及的话题,它接收视觉特征查找节点的特征点、深度图节点的转化为深度信息的雷达点云、imu信息,发布的话题包括ros::Subscriber imagePointsSub = nh.subscribe<原创 2020-06-01 09:01:10 · 1595 阅读 · 1 评论 -
VINS-MONO源码阅读(二)紧耦合的相机定位
当在线初始化完成之后原创 2020-10-09 15:49:59 · 870 阅读 · 0 评论 -
v-loam源码阅读(一)视觉特征
在一开始写lego-LOAM的时候,我就对v-loam有所耳闻,毕竟同出于大神之手,但我一直错误地以为它是将视觉与激光雷达点云融合成一个大型的rgbd,就像我之前的某种错误的打开方式。。。...原创 2020-06-01 09:00:05 · 4538 阅读 · 3 评论 -
MSCKF-vio源码阅读
作为一个小白来说,弄明白kf、ekf等滤波方法实属不易,原创 2020-09-19 18:21:08 · 1743 阅读 · 4 评论 -
VINS-MONO源码阅读(一)imu预积分和在线初始化
自从进入了原创 2020-09-17 21:56:14 · 932 阅读 · 0 评论 -
ORB_SLAM2源码阅读(二)初始化过程
SLAM的后端一般是利用滤波器或图结构进行增量式的分析,分为filter式和graph式的SLAM方法。本工程是采用g2o进行图优化,相比ceres,g2o更为简单粗暴,它无需构造误差函数,直接利用封装好的模块构造不同编号的位姿间的连接,并根据编号进行回环的更新。最后用一张搓搓的图来表示整个工程的流程,我们可以清晰地看到,前端作为位姿估计,为后端提供初始位姿,而后端使用的图优化方法进行综...原创 2020-06-21 18:01:57 · 535 阅读 · 0 评论 -
ORB_SLAM2源码阅读(一)概要
最近入手一个可爱的单目摄像头,原创 2020-06-07 16:34:28 · 517 阅读 · 0 评论 -
三维SLAM算法LeGO-LOAM源码阅读(四)
最后一个部分是对位姿信息的融合计算,难得代码不长,先看看构造函数://综合后发送的里程计信息pubLaserOdometry2 = nh.advertise<nav_msgs::Odometry> ("/integrated_to_init", 5);//特征匹配时粗配准的里程计信息subLaserOdometry = nh.subscribe<nav_msgs::O...原创 2019-02-21 21:34:30 · 4033 阅读 · 8 评论 -
三维SLAM算法LeGO-LOAM源码阅读(三)
再来看看第三部分,这一节是建图部分,与原有LOAM不同的是增加了回环检测,我们可以用经典的graphSLAM的思想来看它的过程。定位到主函数,它与上一个节点类似,也是一个run函数不停轮转,它对实时性要求较高。void run(){ if (newLaserCloudCornerLast && std::abs(timeLaserCloudCornerL...原创 2019-02-21 18:04:28 · 8609 阅读 · 17 评论 -
三维SLAM算法LeGO-LOAM源码阅读(二)
接下来是featureAssociation.cpp,里程计部分,它分为特征点的提取与匹配两部分。这是一个非常长的代码,首先进入主函数:int main(int argc, char** argv){ ros::init(argc, argv, "lego_loam"); ROS_INFO("\033[1;32m---->\033[0m Feature Associ...原创 2019-02-19 21:43:45 · 8833 阅读 · 14 评论 -
三维SLAM算法LeGO-LOAM源码阅读(一)
LeGO-LOAM是LOAM的增强版,在LOAM的基础上增加了回环检测。论文地址:https://github.com/RobustFieldAutonomyLab/LeGO-LOAM/blob/master/Shan_Englot_IROS_2018_Preprint.pdf它分别由点云分割、特征提取、激光里程计、激光建图组成,算法思想与RGBD-SLAM有些类似,系统通过接收来自三维激光雷...原创 2019-02-18 15:35:47 · 17817 阅读 · 38 评论 -
GraphSLAM算法源码Cartographer阅读
GraphSLAM是目前比较主流的建图方法之一,它的思想是将机器人的位姿以及地图上的特征抽象成图,每一时刻的位姿可以看作是图的顶点,而位姿之间由观测而产生的约束看作是图的边,那么建图的过程就是将图的点与边进行优化的过程。GraphSLAM的大致流程如下:1.首先根据运动模型初始化每一时刻的位姿,无视测量数据。2.将一系列控制量、测量值、位姿的估计通过线性化方法构造信息矩阵与信息矢量。...原创 2019-01-15 21:09:34 · 1907 阅读 · 1 评论 -
FastSLAM算法源码GMapping阅读
Gmapping是目前广泛运用的建图算法之一,通过操纵手柄或键盘移动机器人便可以快速地建立地图。它主要是利用粒子滤波原理进行实时定位再利用固定路径下的栅格地图建图方法建立占用栅格地图。进行建图工作所开启的节点是slam_gmapping,而通过cmakelist我们看到slam_gmapping.cpp和main.cpp的源文件生成的该节点。因此我们从main.cpp首先开始看看。int...原创 2019-01-12 17:50:04 · 10654 阅读 · 2 评论 -
三维SLAM算法SegMap源码阅读(二)前端篇
上一篇对SegMap整体的流程与模块进行了概括,接下来我们看看slam的前端部分。一、匹配器SegMatch是SegMap的最大创新点,利用点云分割进行地图的语义化,能够更好的实现回环。这篇论文的地址是https://arxiv.org/pdf/1609.07720.pdf。// SegMatch objects. segmatch_ros::SegMatchWorkerPara...原创 2019-09-01 17:48:33 · 2163 阅读 · 3 评论 -
三维SLAM算法SegMap源码阅读(三)后端篇
在slam的过程中,再精确的前端也会带入一些细小误差,强如lego_loam的特征匹配也会偶尔陷入局部最优,看不出来只是因为尺度还不够大而已!-_-。像经典的小场景建图算法gmapping,它相当于只携带了前端的里程计误差模型,不太适用于颠簸的路面,也容易在大场景中走偏。在大尺度的建图中,一般需要具备一个监管者来时刻协调之前的轨迹,这便是slam的后端模型,它一般充斥着非线性优化、位姿图、图优化等...原创 2019-11-12 00:36:14 · 1495 阅读 · 1 评论 -
三维SLAM算法SegMap源码阅读(一)概要篇
今天来阅读一下比较前沿的三维点云与SLAM技术的SegMap,望文生义,它是基于点云的分割(segmentation)与语义识别,从而降低数据的处理量,这样也降低了对环境的依赖,增强了鲁棒性。要注意,在下载源码的同时需要下载laser_slam包,地址为https://github.com/ethz-asl/laser_slam,这个模块是slam的前端模块。我们先看看运行它的launch文件...原创 2019-07-28 21:04:08 · 2929 阅读 · 1 评论