2024年C C++最全SLAM 论文阅读和分类整理_slam方面论文应该怎么看,2024年最新并发知识体系大全

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

td​, 都会将 camera 的姿态进行补偿, 从而把时间因此耦合到误差项进行优化. 这是在腾讯 AI Lab 的工作, 代码没有开源.
2. 2018 年 IROS, Online Temporal Calibration for Monocular Visual-Inertial Systems. 沈老师他们最新 VINS-Mono 代码里已经集成了这个时间戳标定的代码, 算法假设 imu 和 cam 之间的延迟是常数的, 和以往将相机姿态利用速度和角速度乘以时间差进行补偿不同, 沈老师他们设计的非常巧妙 (比上一篇感觉更优雅). 将 imu 和相机之间的时间延迟, 变成图像平面特征检测的位置的延迟, 这样就简化了整个误差函数.
3. 2020 年 TRO,Real-Time Temporal and Rotational Calibration of Heterogeneous Sensors Using Motion Correlation Analysis,沈老师组论文,利用协相关滤波找到 IMU 测量的角速度(做了个平均滤波)和其他传感器估计的角速度(相邻两帧的旋转矩阵除以时间间隔)之间的时间延迟。方法虽不是特别创新,但做的深入且成系统,值得一读。

自监督在线标定
  1. 2013 年 IVS,Self-supervised Calibration for Robotic Systems. 标定工具 Kalibr 对应的论文。这篇论文非常值得一读,将传感器内外参数和机器人状态一起在线估计,并详细推导和描述了什么时候用测量数据自动更新估计的传感器参数。论文从最小二乘出发,描述了高斯牛顿估计所有参数的过程,并指出了数值计算不稳定会影响信息矩阵可观性的解决方法(即对特征值小于一定阈值的维度不进行更新)。最后提出了使用信息熵来判断新的测量数据是否用来更新内外参数的算法流程(直观理解:判断在新数据条件下待估计参数的协方差的行列式相比之前数据条件下待估计参数的协方差的行列式是否下降了一定阈值)。这篇论文中提到的可观性,信息矩阵,以及他的在线更新方法都很值得一读。同时,作者在ETH的硕士论文以及truncated_svd代码都在github上开放了。
  2. 2017 年 ICRA, Visual-inertial Self-calibration on Informative Motion Segments. 李名扬二作,思路和上篇差不错,也是判断信息熵协方差之类的决定参数是否更新。2019 年 IEEE Sensors Journal, Observability-aware Self-Calibration of Visual and Inertial Sensors for Ego-Motion Estimation. 他们把 17 年的论文进行了扩充。另外,一作小哥已经 ETH 博士毕业,也可以读读他的博士论文 thesis.pdf
可观性,一致性,不变性
  1. 2005 年 IJRR, John J. Leonard ,Exactly Sparse Extended Information Filters forFeature-Based SLAM. 大佬们的IJRR, 这篇文章虽然跟可观性啥的没关系,但是他讲了信息矩阵的 fill-in 问题,能帮你梳理信息矩阵,协方差矩阵,marginlization 之间的关系。
  2. 2012 年 ICRA, Consistency Analysis for Sliding-Window Visual Odometry. 其实sliding window VO早期的论文应该是2006年G.Sibley,但是个人感觉没Dong-Si 的论文写得好。Dong-Si 12 年的这篇论文把滑动窗口BA中雅克比不一致导致的可观性消失讲的清晰易懂,很容易就理解了FEJ的来头。八卦一下,Dong-Si 的个人主页,工作简历可以看出12年毕业后就没做 SLAM 了,搞数据库SQL啥的去了,联想到2012年在TRO上首次提出预积分的作者也做玩具去了,估计那会SLAM不好找工作吧。
  3. 2006 年,Observability and fisher information matrix in nonlinear regression. 说了什么是可观不可观, 以及和信息矩阵的联系。不是从滤波那个状态方程去推导的。
  4. 2012 年, msckf 那个实验室的技术报告,Observability-constrained Vision-aided Inertial Navigation. 之前的操作是 FEJ, 带来的问题是线性化点的误差比较大,这篇论文直接对可观性矩阵进行强制零空间约束,也就是强制使得传递矩阵的零空间维数不会减小。论文中对这个约束对雅克比矩阵的影响进行了推导,得到了一个闭式解,宾大的开源代码 mskcf_mono 对这个进行了实现。这篇论文另外一个值得学习的地方是在附录中对 IMU 的 propagation 的误差状态转移矩阵

Φ

\boldsymbol{\Phi}

Φ 进行了详细的推导。当然,Mingyang Li 的技术报告 也对零空间,状态转移矩阵进行过详细推导。仔细阅读这两个论文,就能把套路摸清。当然 VIO 的可观性论文很多, 不过都是明尼苏达那实验室出来的,比如还有这个 Unobservable Directions of VINS Under Special Motions 也可以看看。
5. 2016 年 arxv,Barrau,An EKF-SLAM algorithm with consistency properties. 不变性理论:当给定数据和系统,作者认为系统每个时刻的协方差(不确定度)应该就确定了,和我们估计的各时刻状态量没关系。上面那些认为线性化点不同而造成协方差估计出现问题的论文并不本质,因此作者提出了不变性 EKF. 这篇论文从 2d ekf 这个简单的例子进行阐述,对理解该算法很有帮助,该算法确实找到了问题本质。作者的其他论文都较理论,下面那篇是他的 15 年的博士论文,感兴趣的可以继续深入。
6. 2015 年 phd thesis, Non-linear state error based extended Kalman filters with applications to navigation. 作者Axel Barrau 和他导师一直沿着 invariant ekf 的路在走,发了很多关于不变性的文章。
7. 2018 年 IROS,Invariant Smoothing on Lie Groups. Barrau 的小师弟把不变性做从 ekf 扩展到了优化的框架。
8. 2018 年 Phd Thesis,Improving Visual-Inertial Navigation Using Stationary Environmental Magnetic Disturbances. 该作者也去过Cremers组,发了一篇鱼眼 LSDSLAM。不过博士论文跟那个没关系,他的第七章对一致性的几种方法(EFJ,OC-EKF, condition, robocent, invariant)进行了大致算法分类和梳理,并在自己系统中采用了 invariant ekf 。

其他
  1. 2018 年 IROS, zhichao zhang, A Tutorial on Quantitative Trajectory Evaluation for Visual(-Inertial) Odometry. 轨迹评测的论文,Scaramuzza 组做的工作都非常扎实,细致。
  2. 2018 年 RAL, zhichao zhang, On the Comparison of Gauge Freedom Handling in Optimization-based Visual-Inertial State Estimation . VIO 有四个不可观的自由度,优化的时候需要特别处理这四个自由度,通常有三种方法,是固定这四个自由度,还是给这四个自由度加先验,还是像 vins-mono 那样任意优化这四个自由度最后reset? 这篇论文就这个问题进行了详细讨论。结论是三种方式精度都差不多,但是任意优化然后reset的操作会收敛的快一点。不过任意优化的不好之处在于他没有一个参考系,信息矩阵的逆得到的协方差没有太多的意义,作者参考引用14中的方法给出了解决方案。最后,作者给出了协方差的变换那部分的代码
  3. 2018年 ECCV, Fast and Accurate Camera Covariance Computation for Large 3D Reconstruction。如何从BundleAdjustment里面快速恢复协方差,同时这个论文给了一个零空间的计算方法。这个零空间和dso代码中的计算方法一致,其实也是和前面 mingyang li 他们的算法是一致的,只不过给出的另一个视角下零空间原来是这么来的。
  4. 2013 年 BMVC, Steven Lovegrove ,Spline Fusion: A continuous-timerepresentation for visual-inertial fusion withapplication to rolling shutter cameras. 这篇论文三作是sliding widow filter 作者 Sibley, 用样条差值的方法来解决 rolling shutter 的问题,另外样条插值的方法也用到了 imu 数据的仿真中,给定特定时刻的姿态,他能从姿态插值生成线速度,加速度等数据。
  5. 2018 年 IROS, Arno Solin, VIO 数据集,用 iPhone 等设备采集的,对标 ARkit, ARcore, ADVIO: An Authentic Dataset for Visual-Inertial Odometry. 除了数据集贡献,作者也写过 VIO 论文, 18 年的 wacv 论文,PIVO: Probabilistic Inertial-Visual Odometry for Occlusion-Robust Navigation,17 年的 Inertial Odometry on Handheld Smartphones.
  6. 2017 年,msckf 组,Edge-based visual-inertial odometry. (占坑)
  7. 2010 年,Zero-Velocity Detection—An Algorithm Evaluation. 2013 年 Tutorial: Implementing a Pedestrian Tracker Using Inertial Sensors.
  8. 2013 年,Computing Velocities and Accelerations from a Pose Time Sequence in Three-dimensional Space. 弗莱堡大学的一个技术报告,从 一系列 pose 生成速度加速度。

VO 前端

光照处理
  1. 2017 年 ICRA, Illumination Change Robustness in Direct Visual SLAM ETH的论文,针对直接法对光照不鲁棒的问题,调研了十来种处理方法,有些参考意义。
  2. 2017 年 RA-L, P. Bergmann, Online Photometric Calibration of Auto Exposure Video for Realtime Visual Odometry and SLAM. Cremers 组的工作,对 DSO 光度标定算法进行了加强,变成了在线光度标定,并用于光流跟踪,看上他们的光流对光照变化比较适应,效果不错。
  3. 2017 年 ICRA,Zichao Zhang, Active Exposure Control for Robust Visual Odometry in HDR Environments 光照相应模型讲的比较清楚,也在直接法的 VO 里应用了。
特征匹配
  1. 2018 年 IROS, Geometric-based Line Segment Tracking for HDR Stereo Sequences. PL-SLAM 作者做的一个关于双目序列图像的直线匹配工作. 传统的直线匹配都是提取描述子之类的, 但是对于序列图像, 图像之间的运动变化比较小, 可以利用直线在图像里的几何性质来完成匹配(如直线在图像里的角度). 作者提出的方法不依赖图像特征, 匹配速度也比 LBD 有所提高. 直线长度差不多, 直线角度差不错, 对于直线中心点也加了一个极线条件. 将这些条件组合在一起构建了一个误差函数, 进行L1优化, 每个直线只找到一个对应的匹配项,使得匹配误差最小.

VO 后端

  1. 斯坦福大学的凸优化,Convex Optimization
  2. 2009 年,SBA: A Software Package for Generic Sparse Bundle Adjustment. g2o 里的 LM 算法流程参考的就是这篇论文的实现方法,老的经典论文还是值得反复读。
  3. PCG代码实现参考资料:1. 2018 年 master thesis,Efficient Optimization For Robust Bundle Adjustment. TUM 的硕士论文,里面有 PCG 等算法的伪代码流程。2. The Preconditioned Conjugate Gradient Method 这是一个课程的note, 伪代码流程非常的清晰,如果想自己实现代码,可以照着这个复现。对应的在网上找了别人写的 PCG 函数,点这里
  4. 2009 年,A Brief Introduction to The Conjugate Gradient Method. 如果你对 CG 方法原理不是很熟,可以看看这个 8 页的pdf, 就能该方法的思想和出发点了解个大概。
  5. 1994 年, An Introduction to the Conjugate Gradient Method Without the Agonizing Pain. 当然如果你想进一步知道 CG 和 PCG,这篇白话就非常值得一读。
  6. 2004 年 book, Iterative methods for sparse linear systems. 第九章讲了PCG,这本书引用上万,估计也是圣经。
  7. 2014 年 ECCV, Christopher Zach, Robust Bundle Adjustment Revisited. 这篇论文主要讲了 robust cost function 在代码里实现的四种方式。这篇论文是参加 ECCV 2018 的 workshop 时,谷歌的大佬们推荐的,论文中提到的 Triggs Correction 方法正是 ceres 采用的。同时,我也在网上找到了这篇论文对应的代码(github链接).
  8. 对于带约束的凸优化问题,可以使用半正定规划( Semi-definite Programming, SDP)或者SDR (Semi-definite Relaxation) 来求解。对于这类问题的初步了解可以先看看知乎大佬的回答:SDP (半正定规划) 有什么形象的实例?怎么理解?,然后系统看看 Introduction to Semidefinite ProgrammingSemidefinite Relaxation of Quadratic Optimization Problems. 当然,理论之外,还需要知道如何编写代码求解,大家可以使用 CVX 包进行matlab编程, Stanford University 专门有个课 EE364 讲了 CVX 的简单使用, CVX Tutorial用 CVX 求解 SDP 问题Semidefinite Programming tutorial: 理论和 CVX 代码结合。资料很多,上述这些已经足够入门使用了。

激光 SLAM

基础知识
  1. 推荐两个课程: 2013年,弗莱堡大学 Cyrill Stachniss 教授的 SLAM Course, youtube 有课程视频,网上pdf 也有。Coursera 上 Robotics: Estimation and Learning, 这个课就比较简短一些,但是非常适合新手快速入门。
  2. Occupancy Grid Map. 地图是激光 slam 系统的核心,通常激光 slam 都采用 logodds 算法对栅格地图进行概率更新。知乎上有个人对 Coursera 上课笔记进行了总结,写得非常好,对公式的推导很简洁,完整详细的推导得看 Stachniss 教授的课视频课件
2D SLAM
  1. 2015 年 master thesis. Precise indoor localization for mobile laser scanner. 这篇硕士论文整理了比较了 hector, gmapping, karto 三种激光 slam 方法,论文实验比较的非常详细。各自优缺点以及存在的问题都大致总结了。
  2. 2009 年 ICRA, Edwin olson. Real-Time Correlative Scan Matching. 这篇 Scan Matching 的论文是 catographer, karto 等基于图优化的 SLAM 算相对 pose 的基础。另外,AprilTag 也是作者Prof. Olson 2011 年的论文。
  3. 2011 年 SSRR , Stefan Kohlbrecher. A Flexible and Scalable SLAM System with Full 3D Motion Estimation. 这篇论文是 hector slam 的 scan match 方法,hector 代码里有对应的代码实现,很清晰简洁,如果你熟悉高斯牛顿的话,能很快上手。cartographer 里的real time scan match 就是采用的这篇论文的计算方法。
  4. 2012 年 IROS,大佬 Wolfram Burgard 加持,On the Position Accuracy of Mobile Robot Localization based on Particle Filters Combined with Scan Matching. 采用 amcl + pl-icp。
  5. 2008 年 IROS,Andrea Censi,csm, 以及 icp 的协方差估计前面那个 icp 协方差扩展到3D, 并且 eth 的 icp 库 libpointmatcher 里好像也是用的Censi的这个公式计算的协
  6. 推荐几篇动态环境的 2d laser slam,思路都差不多,定位过程中会构建局部 local map 用来去除动态点云。2018 年 IROS, gmapping 作者加持,Efficient Long-term Mapping in Dynamic Environments, 论文开放了代码. 2008 年 IJRR, Experimental Analysis of Sample-BasedMaps for Long-Term SLAM. 2012 年 IROS, DynamicPose GraphSLAM:Long-termMappingin Low DynamicEnvironments, 这篇论文几个大佬加持,论文 III-A 部分介绍了怎么计算 local map,大致思路是拿一小段历史轨迹组合成的 grid map 和当前帧的点云做比较,得到动态物体的点云。
  7. 2016 年 RAL, Fast Keypoint Features from Laser Scanner for Robot Localization and Mapping.. 意大利 University of Parma,这篇论文提出了两种 2d 激光特征提取方法以及描述子提取方法,代码开源在二作小哥 Dario Lodi Rizzini 的 github 页面。二作小哥,2019年陆续提出了两篇 2d 激光相关的论文,一个是全局闭环匹配,一个是用于全局最优匹配的快速分枝定界方法。都开放了源码在小哥的 github 上,感兴趣的小伙伴可以尝试下。
3D 激光
  1. 2018 年 IROS, Scan Context: Egocentric Spatial Descriptor for Place Recognition within 3D Point Cloud Map. 3d 激光闭环,github 代码.
  2. 2020 年 RSS, OverlapNet: Loop Closing for LiDAR-based SLAM, 基于深度学习的 3d 激光闭环,github 代码.

参数标定

码盘内参数以及激光外参数标定
  1. 2013 年 TRO,Andrea Censi,Simultaneous calibration of odometry and sensor parameters for mobile robots. 这篇论文将码盘的内外参数一起标定了,作者提供了代码。论文方法简单,读论文就可以,这里想隆重介绍下作者,Censi,做啥都牛,喜欢各种开源自己的代码,激光 icp 方面出了csm。 优化方面也和 gtsam 那些大佬有诸多合作,也和木吒(Scaramuzza)合作挺多,总之,论文和工程都贡献不少, 感兴趣的看一下他的简历,能发现不少好工作。
相机码盘外参数标定
  1. 2013 年 IROS, CamOdoCal: Automatic Intrinsic and Extrinsic Calibration of a Rig with Multiple Generic Cameras and Odometry. ETH 的工作,CamOdoCal 还是比较有名的一个工作,代码开源,如果有需要可以把标定那部分的代码扣除来。
激光相机外参数标定
  1. 2004 年 Qilong Zhang, Extrinsic Calibration of a Camera and Laser Range Finder (improves camera calibration). 这是改领域较早且非常有名的一篇论文,开放了相应的 matlab 代码。标定方法使用一个标定板,相机和激光都能看到这个标定板,相机能实时计算出到标定板的姿态,标定板的平面方程能事先假设,然后利用激光落到里这个标定板平面(点在平面里),构建约束激光到相机的外参数约束,从而求解外参数。这个方法每一次观测实际上只能提供两个自由度的约束(因为平面里的激光点共线了,相当于只利用了两个激光端点构建约束),因此需要不同位置拍摄多组观测,最后一起求解。代码1, 代码2.
  2. 2017 年 ICRA, Wenbo Dong, A Novel Method for the Extrinsic Calibration of a 2D Laser Rangefinder and a Camera. 这篇论文对历年的经典外标定算法进行了简单的点评,并提出了自己的单帧观测就能计算外参的算法。该算法利用两个相交平面(不需要是直角相交)来标定,虽然不要求直角,作者要求两个平面是两个三角形构建的(当然制作标定板的时候,打印边框成三角形的形式,然后折纸飞机一样折一下就行了),这样标定板和相机之间就有多个平面了(标定板本身的两个平面,激光线和标定板三角边也会相交这里又提供了两个平面)一共六个约束,所以单帧可解外参数。作者实验也验证了他的方法比04年的那个精度要高。当都采用20组观测进行标定时,他的平移误差4mm, 04年的那个12mm左右。虽然这个方法单帧可以出结果,但是他每次都依赖激光和标定板那几条直线的交点,一旦交点不准,比如激光传感器的噪声比较大,如1cm时,单帧标定误差好几cm。作者也建议使用多帧一起标定。感觉和04年那篇差不多。
  3. 2015 年 ICRA, Ruben Gomez-Ojeda, Extrinsic Calibration of a 2D Laser-Rangefinder and a Camera based on Scene Corners. 这篇文章放在这主要是因为作者是 PL-SLAM 作者,他也做过激光视觉标定。他的方法不需要标定板,直接利用三个垂直面的三条线的相交点确定三条直线(如果直接用 lsd 检测,可能三条直线不会相交于一点,误差较大),根据激光和直线的相交点构建点在平面上的方程。这个方法感觉比较复杂,容错率比较低。论文开放了matlab源码,在二作的github页面上
  4. 2018 年 IROS,Lipu Zhou, isam 作者 Kaess 的学生,Automatic Extrinsic Calibration of a Camera and a 3D LiDAR using Line and Plane Correspondences. 这篇是 3D 激光雷达和相机之间外参数。这篇也是利用多个线和平面约束,直接单次观测可以出外参数,不需要把传感器动来动去采集多组数据。
  5. 2017 年 ICCV,Zoltan Pusztai, Accurate Calibration of LiDAR-Camera Systems using Ordinary Boxes. 这篇还没读,先不评论。

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上C C++开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

%以上C C++开发知识点,真正体系化!**

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以戳这里获取

  • 10
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值