Bootstrap

史上最全slam从零开始-总目录

讲解关于slam一系列文章主要分为以下几个板块,其中的序列号代表其学习难度,入门学员建议从01开始学习,相同序列号表示其难度相当
 
文末正下方中心提供了本人 联系方式, 点击本人照片即可显示 W X → 官方认证 {\color{blue}{文末正下方中心}提供了本人 \color{red} 联系方式,\color{blue}点击本人照片即可显示WX→官方认证} 文末正下方中心提供了本人联系方式,点击本人照片即可显示WX官方认证
 

零、SLAM基础知识解读–>难度系数00

学习者预备条件:高数,线性代数,矩阵运算。
    (01)史上最简SLAM零基础解读(1) - 旋转平移矩阵→欧式变换推导
    (02)史上最简SLAM零基础解读(2) - 对极约束→Essential矩阵、Fundamental矩阵推导
    (03)史上最简SLAM零基础解读(3) - 白话来说SVD奇异值分解(1)→原理推导与奇异值求解举例
    (04)史上最简SLAM零基础解读(3) - 白话来说SVD奇异值分解(2)→超定方程求解,最小奇异值特征为最优解
    (05)史上最简SLAM零基础解读(4) - 单应性Homography →公式推导与细节理解
    (06)史上最简SLAM零基础解读(5) - Homography,Fundamental,Essential深入浅出→了解适用场景:共面、非共面、仅旋转
    (07)史上最简SLAM零基础解读(6) - 卡方分布(chi-square distribution)和()卡方检验(Chi-Squared Test) → 理论讲解与推导
    (08)史上最简SLAM零基础解读(7) - Jacobian matrix(雅可比矩阵) → 理论分析与应用详解
    (09)史上最简SLAM零基础解读(8.1) - 旋转矩阵、旋转向量、欧拉角推导与相互转换
    (09)史上最简SLAM零基础解读(10.1) - g2o(图优化)→简介环境搭建(slam十四讲第二版为例)
    (10)史上最简SLAM零基础解读(10.2) - g2o(图优化)→顶点 (Vertex)编程细节
    (11)史上最简SLAM零基础解读(10.3) - g2o(图优化)→边(Edge)编程细节
    (12)史上最简SLAM零基础解读(10.4) - g2o(图优化)→示例代码讲解(slam十四讲第二版为例)
 

一、卡尔曼家族从零解剖(Bayesian、Partical、EKF、ESKF、IEKF等)–>难度系数01

学习者预备条件: 高数、线性代数、概率论与数理统计、矩阵运算。

二、ORB-SLAM2源码无死角解析–>难度系数02

学习者预备条件: c++编程,linux命令行操作,高数,线性代数,矩阵运算。
    (00)(01)ORB-SLAM2源码无死角解析-(00) 目录_最新无死角讲解
    (01)(01)ORB-SLAM2源码无死角解析-(01) 环境搭建,demo运行,ROS一键安装_清除各种疑难杂症
    (02)(01)ORB-SLAM2源码无死角解析-(02) C++命名规范_总体框架解读
    (03)(01)ORB-SLAM2源码无死角解析-(03) ORB_SLAM2::System之初构造函数解读
    (04)(01)ORB-SLAM2源码无死角解析-(04) 单目追踪_总体框架讲解TrackMonocular→GrabImageMonocular
    (05)(01)ORB-SLAM2源码无死角解析-(05) Tracking::Tracking()与 Frame::Frame()
    (06)(01)ORB-SLAM2源码无死角解析-(06) 图像金字塔_ORB特征点
    (07)(01)ORB-SLAM2源码无死角解析-(07) ORBextractor::operator()→构建图像金字塔
    (08)(01)ORB-SLAM2源码无死角解析-(08) ORBextractor::operator()→FAST关键点提取
    (09)(01)ORB-SLAM2源码无死角解析-(09) ORBextractor::operator()→FAST关键点均匀化
    (10)(01)ORB-SLAM2源码无死角解析-(10) ORBextractor::operator()→灰度质心法
    (11)(01)ORB-SLAM2源码无死角解析-(11) ORBextractor::operator()→BRIEF描述子
    (12)(01)ORB-SLAM2源码无死角解析-(12) 图像、特征点、关键点去畸变)
    (13)(01)ORB-SLAM2源码无死角解析-(13) 追踪总体框架讲解→Tracking::Track()
    (14)(01)ORB-SLAM2源码无死角解析-(14) 地图初始化→单目初始化MonocularInitialization():尺度不确定性
    (15)(01)ORB-SLAM2源码无死角解析-(15) 单目初始化MonocularInitialization()→Initializer
    (16)(01)ORB-SLAM2源码无死角解析-(16) 单目初始化Initializer→八点发求解Homography矩阵
    (17)(01)ORB-SLAM2源码无死角解析-(17) 单目初始化Initializer→八点发求解Fundamental矩阵
    (18)(01)ORB-SLAM2源码无死角解析-(18) SVD奇异值分解→求解Homography,Fundamental矩阵,了解矩阵自由度
    (19)(01)ORB-SLAM2源码无死角解析-(19) 重投影误差,卡方检验→CheckFundamental,CheckHomography
    (20)(01)ORB-SLAM2源码无死角解析-(20) 分解Homography,恢复Rt→Faugeras SVD-based decomposition
    (21)(01)ORB-SLAM2源码无死角解析-(21) 基本矩阵Fundamental→本质矩阵Essential 分解恢复 Rt
    (22)(01)ORB-SLAM2源码无死角解析-(22) 特征点三角化、深度计算、三维点筛选
    (23)(01)ORB-SLAM2源码无死角解析-(23) 单目SFM地图初始化→CreateInitialMapMonocular()-总体流程
    (24)(01)ORB-SLAM2源码无死角解析-(24) 单目SFM地图初始化→CreateInitialMapMonocular()-细节分析:尺度不确定性
    (25)(01)ORB-SLAM2源码无死角解析-(25) 关键帧KeyFrame→判断系统目前是否需要关键帧
    (26)(01)ORB-SLAM2源码无死角解析-(26) 关键帧KeyFrame→如何创建、插入关键帧
    (27)(01)ORB-SLAM2源码无死角解析-(27) 共视图、本质图、拓展图
    (28)(01)ORB-SLAM2源码无死角解析-(28) 双目Stereo相机立体匹配,SAD算法→深度求解
    (29)(01)ORB-SLAM2源码无死角解析-(29) ORB特征匹配→ORBmatcher,汉明距离(单目初始化为例)
    (30)(01)ORB-SLAM2源码无死角解析-(30) ORB特征匹配→词袋BoW(bag of words):简介,优劣势分析
    (31)(01)ORB-SLAM2源码无死角解析-(31) ORB特征匹配→词袋BoW:BRIEF描述子转BoW向量
    (32)(01)ORB-SLAM2源码无死角解析-(32) ORB特征匹配→跟踪线程BoW加速匹配,关键帧特征点跟踪SearchByBoW()
    (33)(01)ORB-SLAM2源码无死角解析-(33) ORB特征匹配→局部建图BoW加速匹配,三角化SearchForTriangulation
    (34)(01)ORB-SLAM2源码无死角解析-(34) 跟踪线程→初步了解跟踪线程,参考关键帧追踪TrackReferenceKeyFrame()
    (35)(01)ORB-SLAM2源码无死角解析-(35) 跟踪线程→恒速模型跟踪当前普通帧TrackWithMotionModel()
    (36)(01)ORB-SLAM2源码无死角解析-(36) 跟踪线程→跟踪丢失后,重定位跟踪 Relocalization()
    (37)(01)ORB-SLAM2源码无死角解析-(37) EPnP 算法原理详解→理论基础一:控制点选取、透视投影约束
    (38)(01)ORB-SLAM2源码无死角解析-(38) EPnP 算法原理详解→理论基础二:分情况求得beta初始解
    (39)(01)ORB-SLAM2源码无死角解析-(39) EPnP 算法原理详解→理论基础三:高斯牛顿迭代
    (40)(01)ORB-SLAM2源码无死角解析-(40) EPnP 算法原理详解→理论基础四:QR分解(豪斯霍尔德变换)
    (41)(01)ORB-SLAM2源码无死角解析-(41) EPnP 源代码分析(1)→PnPsolver总体流程与思路
    (42)(01)ORB-SLAM2源码无死角解析-(42) EPnP 源代码分析(2)→compute_pose():控制点选取,系数计算
    (43)(01)ORB-SLAM2源码无死角解析-(43) EPnP 源代码分析(3)→find_betas_approx(),gauss_newton()
    (44)(01)ORB-SLAM2源码无死角解析-(44) EPnP 源代码分析(4)→PnPsolver::qr_solve():QR分解
    (45)(01)ORB-SLAM2源码无死角解析-(45) EPnP 源代码分析(5)→ICP 求解相机位姿
    (46)(01)ORB-SLAM2源码无死角解析-(46) 跟踪线程→局部地图跟踪TrackLocalMap():局部地图更新
    (47)(01)ORB-SLAM2源码无死角解析-(47) 跟踪线程→局部地图跟踪TrackLocalMap():局部地图点过滤
    (48)(01)ORB-SLAM2源码无死角解析-(48) 不同跟踪方法的对比、梳理完整跟踪流程→Tracking::Track()
    (49)(01)ORB-SLAM2源码无死角解析-(49) 局部建图线程→流程以及处理新关键帧:ProcessNewKeyFrame()
    (50)(01)ORB-SLAM2源码无死角解析-(50) 局部建图线程→MapPointCulling,CreateNewMapPoints
    (51)(01)ORB-SLAM2源码无死角解析-(51) 局部建图线程→SearchInNeighbors():融合重复地图点
    (52)(01)ORB-SLAM2源码无死角解析-(52) 局部建图线程→剔除关键帧KeyFrameCulling()、整体线程梳理
    (53)(01)ORB-SLAM2源码无死角解析-(53) 闭环线程→了解闭环检测、主体框架讲解
    (54)(54)ORB-SLAM2源码无死角解析-(54) 闭环线程→闭环检测:寻找闭环候选关键帧 LoopClosing::DetectLoop()
    (55)(01)ORB-SLAM2源码无死角解析-(55) 闭环线程→计算Sim3:总体流程讲解ComputeSim3()
    (56)(01)ORB-SLAM2源码无死角解析-(56) 闭环线程→计算Sim3:理论推导(1)求解s,t
    (57)(01)ORB-SLAM2源码无死角解析-(57) 闭环线程→计算Sim3:理论推导(2)求解R,使用四元数
    (58)(01)ORB-SLAM2源码无死角解析-(58) 闭环线程→计算Sim3: 源码Sim3Solver::iterate()讲解
    (59)(01)ORB-SLAM2源码无死角解析-(59) 闭环线程→闭环矫正: CorrectLoop→位姿传播,地图点矫正
    (60)(01)ORB-SLAM2源码无死角解析-(60) 闭环线程→闭环矫正: CorrectLoop→地图点融合、共视关系更新
    (61)(01)ORB-SLAM2源码无死角解析-(61) 闭环线程→闭环矫正: CorrectLoop→全代码注释
    (62)(01)ORB-SLAM2源码无死角解析-(62) BA优化(g2o)→追踪线程:Optimizer::PoseOptimization→仅位姿优化
    (63)(01)ORB-SLAM2源码无死角解析-(63) BA优化(g2o)→局部建图线程:Optimizer::LocalBundleAdjustment→位姿与地图点优化
    (64)(01)ORB-SLAM2源码无死角解析-(64) BA优化(g2o)→闭环线程:Optimizer::OptimizeSim3→Sim3变换优化
    (65)(01)ORB-SLAM2源码无死角解析-(65) BA优化(g2o)→闭环线程:Optimizer::OptimizeEssentialGraph→本质图优化
    (66)(01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
 

三、Cartographer源码无死角解析->难度系数03

郑重声明:该系列博客为本人 ( W e n h a i Z h u ) 独家私有 , 禁止转载与抄袭 , 首次举报有谢 ! \color{red}郑重声明:该系列博客为本人(WenhaiZhu)独家私有,禁止转载与抄袭,首次举报有谢! 郑重声明:该系列博客为本人(WenhaiZhu)独家私有,禁止转载与抄袭,首次举报有谢!
 学习者预备条件一的基础,即学习完 ORB-SLAM2源码无死角解析 课程即可。
    (00)(02)Cartographer源码无死角解析-(00)目录_最新无死角讲解
    (01)(02)Cartographer源码无死角解析-(01) 环境搭建,demo运行,ROS一键安装_清除各种疑难杂症
    (02)(02)Cartographer源码无死角解析-(02) ROS基础讲解→记录编译过程及常用指令
    (03)(02)Cartographer源码无死角解析-(03) 新数据运行与地图保存、加载地图启动仅定位模式
    (04)(02)Cartographer源码无死角解析-(04) 熟悉bag文件,配置.launch与.lua文件,初步调参
    (05)(02)Cartographer源码无死角解析-(05) 程序运行常见错误与解决→模拟错误
    (06)(02)Cartographer源码无死角解析-(06) 参数详解与备注→调参查阅使用
        待写…
    (09)(02)Cartographer源码无死角解析-(09) gflags与glog简介、及其main函数讲解
    (10)(02)Cartographer源码无死角解析-(10) 配置文件加载1→主体框架分析LoadOptions()
    (11)(02)Cartographer源码无死角解析-(11) 配置文件加载2→LuaParameterDictionary使用
    (12)(02)Cartographer源码无死角解析-(12) Node类初探→构造函数与开始轨迹
    (13)(02)Cartographer源码无死角解析-(13) Node::AddTrajectory()→位姿估算器与采样器
    (14)(02)Cartographer源码无死角解析-(14) Node::AddTrajectory()→订阅话题与注册回调函数
    (15)(02)Cartographer源码无死角解析-(15) Node::AddTrajectory()→回调函数之数据流向分析
    (16)(02)Cartographer源码无死角解析-(16) SensorBridge→Rigid3(刚体变换)
    (17)(02)Cartographer源码无死角解析-(17) SensorBridge→里程计数据处理与TfBridge分
    (18)(02)Cartographer源码无死角解析-(18) SensorBridge→landmark与Imu的数据处理
    (19)(02)Cartographer源码无死角解析-(19) SensorBridge→雷达点云数据帧处理与坐标系变换(涉及函数重载)
    (20)(02)Cartographer源码无死角解析-(20) MapBuilder→MapBuilder()构造函数
    (21)(02)Cartographer源码无死角解析-(21) MapBuilder→AddTrajectoryBuilder()
    (22)(02)Cartographer源码无死角解析-(22) 传感器数据分发→CollatedTrajectoryBuilder
    (23)(02)Cartographer源码无死角解析-(23) 传感器数据类型自动推断与数据利用率计算
    (24)(02)Cartographer源码无死角解析-(24) Collator类与数据队列OrderedMultiQueue简介
    (25)(02)Cartographer源码无死角解析-(25) 阻塞队列BlockingQueue,与OrderedMultiQueue成员函数
    (26)(02)Cartographer源码无死角解析-(26) OrderedMultiQueue::Dispatch()→数据排序分发
    (27)(02)Cartographer源码无死角解析-(27) 数据订阅、变换、排序、转发→总体复盘
    (28)(02)Cartographer源码无死角解析-(28) GlobalTrajectoryBuilder构建过程与数据转发前后端
    (29)(02)Cartographer源码无死角解析-(29) LocalTrajectoryBuilder2D::AddRangeData()→多雷达数据时间同步
    (30)(02)Cartographer源码无死角解析-(30) LocalTrajectoryBuilder2D::AddRangeData()→激光雷达运动畸变较正
    (31)(02)Cartographer源码无死角解析-(31) LocalTrajectoryBuilder2D::AddRangeData()→点云数据重力对齐,Z轴过滤
    (32)(02)Cartographer源码无死角解析-(32) LocalTrajectoryBuilder2D::AddRangeData()→点云的体素滤波
    (33)(02)Cartographer源码无死角解析-(33) LocalTrajectoryBuilder2D: 点云数据流向、处理、消息发布等→流程复盘
    (34)(02)Cartographer源码无死角解析-(34) LocalTrajectoryBuilder3D→3D点云数据处理,大致流程梳理
    (35)(02)Cartographer源码无死角解析-(35) PoseExtrapolator→接口解剖,学会框架分析与架构设计
    (36)(02)Cartographer源码无死角解析-(36) PoseExtrapolator→AddImuData()、AddOdometryData()
    (37)(02)Cartographer源码无死角解析-(37) PoseExtrapolator→AddPose()、旋转向量(求导)变换成角速度
    (38)(02)Cartographer源码无死角解析-(38) PoseExtrapolator→AdvanceImuTracker()、ImuTracker姿态推断
    (39)(02)Cartographer源码无死角解析-(39) PoseExtrapolator→ExtrapolatePose()、ExtrapolatePosesWithGravity() 等成员函数
    (40)(02)Cartographer源码无死角解析-(40) PoseExtrapolator→整体框架复盘,作用与目的讲解
    (41)(02)Cartographer源码无死角解析-(41) 2D栅格地图→ActiveSubmaps2D
    (42)(02)Cartographer源码无死角解析-(42) 2D栅格地图→Submap、Submap2D、MapLimits
    (43)(02)Cartographer源码无死角解析-(43) 2D栅格地图→ValueConversionTables、Grid2D
    (44)(02)Cartographer源码无死角解析-(44) 2D栅格地图→ProbabilityGrid 与 ProbabilityToLogOddsInteger()
    (45)(02)Cartographer源码无死角解析-(45) 2D栅格地图→ProbabilityGridRangeDataInserter2D
    (46)(02)Cartographer源码无死角解析-(46) 2D栅格地图→RayToPixelMask()与贝汉明(Bresenham)算法
    (47)(02)Cartographer源码无死角解析-(47) 2D栅格地图→总体流程梳理与总结,及核心关键CastRays()讲解
    (48)(02)Cartographer源码无死角解析-(48) 2D点云扫描匹配→扫描匹配基本原理讲解,代码总体框架梳理AddAccumulatedRangeData()
    (49)(02)Cartographer源码无死角解析-(49) 2D点云扫描匹配→相关性暴力匹配1:SearchParameters
    (50)(02)Cartographer源码无死角解析-(50) 2D点云扫描匹配→相关性暴力匹配2:RealTimeCorrelativeScanMatcher2D
    (51)(02)Cartographer源码无死角解析-(51) 2D点云扫描匹配→ceres扫描匹配:CeresScanMatcher2D→平移旋转残差
    (52)(02)Cartographer源码无死角解析-(52) 2D点云扫描匹配→ceres扫描匹配:CeresScanMatcher2D→栅格地图残差
    (53)(02)Cartographer源码无死角解析-(53) 2D后端优化→位姿图优化理论(SPA)讲解、核型函数调用流程
    (54)(02)Cartographer源码无死角解析-(54) 2D后端优化→PoseGraphInterface、PoseGraph、PoseGraph2D::AddNode()
    (55)(02)Cartographer源码无死角解析-(55) 2D后端优化→ComputeLocalToGlobalTransform(),TrajectoryNode
    (56)(02)Cartographer源码无死角解析-(56) 2D后端优化→class MapById、ConstIterator、ConstTrajectoryIterator
    (57)(02)Cartographer源码无死角解析-(57) 2D后端优化→MapById::lower_bound()、PoseGraphData、TrajectoryConnectivityState
    (58)(02)Cartographer源码无死角解析-(58) 2D后端优化→ PoseGraph2D::AddNode()、PoseGraph2D::AppendNode()
    (59)(02)Cartographer源码无死角解析-(59) 2D后端优化→ 线程池: DrainWorkQueue()、AddWorkItem()
    (60)(02)Cartographer源码无死角解析-(60) 2D后端优化→ 线程池 Task 与 ThreadPool
    (61)(02)Cartographer源码无死角解析-(61) 2D后端优化→ComputeConstraintsForNode() 与 什么是约束-白话篇
    (62)(02)Cartographer源码无死角解析-(62) 2D后端优化→InitializeGlobalSubmapPoses()子图全局位姿的来龙去脉
    (63)(02)Cartographer源码无死角解析-(63) 2D后端优化→PoseGraph2D::ComputeConstraint()计算约束
    (64)(02)Cartographer源码无死角解析-(64) 2D后端优化→ConstraintBuilder2D、MaybeAddConstraint、MaybeAddGlobalConstraint
    (65)(02)Cartographer源码无死角解析-(65) 2D后端优化→DispatchScanMatcherConstruction()、ComputeConstraint()
    (66)(02)Cartographer源码无死角解析-(66) 2D后端优化→PrecomputationGridStack2D、SlidingWindowMaximum -构建多分辨率地图
    (67)(02)Cartographer源码无死角解析-(67) 2D后端优化→FastCorrelativeScanMatcher2D -分支定界算法(BranchAndBound)1
    (68)(02)Cartographer源码无死角解析-(68) 2D后端优化→FastCorrelativeScanMatcher2D -分支定界算法(BranchAndBound)2
    (69)(02)Cartographer源码无死角解析-(69) 2D后端优化→线程池深入追踪、问题、困惑梳理,知识点小结
    (70)(02)Cartographer源码无死角解析-(70) 2D后端优化→PoseGraph2D::RunOptimization()、OptimizationProblem2D初探,数据添加
    (71)(02)Cartographer源码无死角解析-(71) 2D后端优化→OptimizationProblem2D::Solve() - 优化准备工作,参数块
    (72)(02)Cartographer源码无死角解析-(72) 2D后端优化→OptimizationProblem2D-约束残差、landmark残差
    (73)(02)Cartographer源码无死角解析-(73) 2D后端优化→OptimizationProblem2D-landmark残差细节分析
    (74)(02)Cartographer源码无死角解析-(74) 2D后端优化→OptimizationProblem2D-里程计、local位姿、GPU残差
    (75)(02)Cartographer源码无死角解析-(75) 2D后端优化→整体复盘,理解后端优化核心
    (76)(02)Cartographer源码无死角解析-(76) ROS数据发布→3D点云地图、子图位姿、Landmark
    (77)(02)Cartographer源码无死角解析-(77) ROS数据发布→2D点云数据、tf、机器人tracking frame轨迹发布:
    (78)(02)Cartographer源码无死角解析-(78) ROS数据发布→子图内、子图间、约束与残差发布
    (79)(02)Cartographer源码无死角解析-(79) ROS服务→子图压缩与服务发送
    (80)(02)Cartographer源码无死角解析-(80) 核心要点→local坐标系、子图坐标系、切片坐标系、地图坐标系等相转换与联系:
    (81)(02)Cartographer源码无死角解析-(81) ROS栅格地图→服务接收子图、cairo图像绘详解、OccupancyGrid地图发布

 
 
 

;