讲解关于slam一系列文章主要分为以下几个板块,其中的序列号代表其学习难度,入门学员建议从01开始学习,相同序列号表示其难度相当
文末正下方中心提供了本人
联系方式,
点击本人照片即可显示
W
X
→
官方认证
{\color{blue}{文末正下方中心}提供了本人 \color{red} 联系方式,\color{blue}点击本人照片即可显示WX→官方认证}
文末正下方中心提供了本人联系方式,点击本人照片即可显示WX→官方认证
学习者预备条件:高数,线性代数,矩阵运算。
(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十四讲第二版为例)
学习者预备条件: 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→全局优化
学习者预备条件一的基础,即学习完 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→栅格地图残差
这篇文章是继上一篇文章“Observability:从零开始创建Java微服务并监控它(一)”的续篇。在上一篇文章中,我们讲述了如何创建一个Javaweb应用,并使用Filebeat来收集应用所生成的日志。在今天的文章中,我来详述如何收集应用的指标,使用APM来监控应用并监督web服务的在线情况。源码可以在地址 https://github.com/liu-xiao-guo/java_observability 进行下载。摄入指标指标被视为可以随时更改的时间点值。当前请求的数量可以改变任何毫秒。你可能有1000个请求的峰值,然后一切都回到一个请求。这也意味着这些指标可能不准确,你还想提取最小/
我正在开发一个Rails应用程序,我需要在其中找到给定特定偏移量或时区的夏令时开始和结束日期。我基本上在我的数据库中保存了从用户浏览器接收到的时区偏移量(“+3”,“-5”),我想在它出现时修改它由于夏令时的变化。我知道Time实例变量有dst?和isdst方法,如果存储在它们中的日期在夏令时与否。>Time.new.isdst=>true但是使用它来查找夏令时的开始和结束日期会占用太多资源,而且我还必须为我拥有的每个时区偏移量执行此操作。我想知道更好的方法。 最佳答案 好的,基于你所说的和@dhouty'sanswer:您希望能够
我有一台生产机器和一台开发机器,都运行ubuntu8.10并且都运行最新的phusionpassenger。当我在osx上的本地开发机器上使用ruby1.9.1时,我想知道外面的人是否已经在使用带有ruby1.9.1甚至1.9.2的phusionpassenger?如果是这样,请告诉我们您的设置!此外,有没有办法在apache上使用phusionpassenger同时运行ruby1.8.7(ree)和1.9.1?感谢您的指点,我在任何地方都找不到任何提示... 最佳答案 是的,从某些2.2.x版本开始就正式支持它,我不记
date_select方法只能设置:start_year,但我想设置开始日期(例如3个月前的日期)(但没有这样的选项)。那么,我可以将开始日期设置为date_select方法吗?或者,要制作这样的选择框,我应该使用select_tag和options_for_select吗?或者,有什么解决办法吗?谢谢, 最佳答案 有可能……例如:start_year–设置年份选择的开始年份。默认为Time.now.year-5参见thisresource. 关于ruby-Rails3-我可以将开始日期
我想从特定索引开始遍历数组。我该怎么做?myj.eachdo|temp|...end 最佳答案 执行以下操作:your_array[your_index..-1].eachdo|temp|###end 关于ruby-从特定索引开始迭代数组,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/44151758/
我有一些使用delayed_job的小程序。在我的本地主机上一切正常,但是当我将我的应用程序部署到Heroku并单击应该由delayed_job执行的链接时,没有任何反应,“任务”只是保存到表delayed_job中。Inthisarticleonherokublog写入时,执行delayed_job表中的任务,当运行此命令时rakejobs:work。但是我怎样才能运行这个命令呢?命令应该放在哪里?在代码中,还是从终端控制台? 最佳答案 如果您正在运行Cedar堆栈,请从终端控制台运行以下命令:herokurunrakejobs:
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。多年来,我一直在使用多种语言进行编程,并且认为自己总体上相当擅长。但是,我从未编写过任何自动化测试:没有单元测试,没有TDD,没有BDD,什么都没有。我已经尝试开始为我的项目编写适当的测试套件。我可以看到在进行任何更改后能够自动测试项目中所有代码的理论值(value)。我可以看到像RSpec和Mocha这样的测试框架应该如何使设置和运行所述测试变得相当容易
有没有办法使用vim结束Rubyblock?例如moduleSomeModule#defsome_methodendend我想用一个命令从光标所在的位置移动到block的末尾,这可能吗?我读过thisdocumentation,但它似乎不适用于.rb文件,我在某些地方读到它只适用于C(虽然还没有尝试过)。提前致谢。 最佳答案 rubyforge好像有官方包对此有一些支持:TheRubyftpluginnowincludesRubyspecificimplementationsforthe[[,]],[],][,[m,]m,[M,an
关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭7年前。Improvethisquestion我需要认真阅读Ruby1.9.1和即将推出的Rails3/Merb的变化。人们可以推荐任何文章阅读吗?并不是真的在寻找一个答案,只是在寻找人们正在使用的资源汇编,以跟上即将发生的事情和当前存在的事情,所以如果你路过,请告诉我你在看什么。谢谢!
应用将在Heroku上运行依赖包括回形针哈姆指南针设计aws-s3支持或反对的理由?对其他版本的ruby有什么建议吗?更新Heroku目前不支持1.9.2,但预计很快会基于thispost.Rails3.0正式支持1.9.2(但不支持1.9.1),所以我决定继续使用它。更新Heroku在其beta堆栈上支持1.9.2。 最佳答案 我会说是的。当您准备好推出您的应用程序时(2-3个月?),应该解决越来越多的兼容性问题。此外,如果您遇到任何问题,您可以提交补丁并为更快的1.9.2兼容性做出贡献!;)但是为了回答您的问题,考虑到您要使