作者 | Sky Shaw 编辑 | 汽车人
原文链接:https://zhuanlan.zhihu.com/p/488778404
点击下方卡片,关注“自动驾驶之心”公众号
ADAS巨卷干货,即可获取
点击进入→自动驾驶之心【SLAM】技术交流群
引言
在近期的工作和学习中,个人时不时地都在思考移动机器人在具体的SLAM方向(抑或者可以称之为“领域”)中的最终“形态”到底是个什么表现形式:是在各种复杂场景下都表现为state of art的稳定输出?还是通过不同的功能和机制对各种情况进行适配实现稳定运行?套用高博的话(Faster-LIO:快速激光IMU里程计),本人认为移动机器人在SLAM领域的最终形态也就是达到精度/效率/鲁棒性三者(或者很多其他技术细节)的完美结合,而即使每个模块都如同一个个巨人,让我们这些普通的算法研究人员“心生畏惧”,但我们希望在每一次努力地研究和调查下,将这些巨人天敌逐步分解和吸收,达到如同漫画里艾伦·耶格尔 一样将精度巨人、效率巨人和鲁棒性巨人一并吞下达成我们希望中的最终形态。
本文呢,将从SLAM中一个在近期发展比较迅速但还没有那么卷的方向(Life-Long SLAM)入手,将相关论文进行一个初步简单的整理,方便后续“调查”工作的进行。
1. SLAM工程的选择 & 其中包含的基础技术点
本人理解的Life-Long SLAM 是作为 SLAM系统中功能的一部分,不论是2D SLAM算法框架还是3D SLAM算法框架,Life-Long SLAM实现的必要前提条件就是首次单次的建图必须顺利无误地完成。考虑到目前主流的2D/3D SLAM算法的框架有很多
(gmapping/hector/karto/cartographer/LOAM系列/LIO-SAM系列/Apollo/Autoware等),在本文中就以cartographer的框架为背景基础,因为它适配2D和3D建图,还有相关的定位模块功能,是很不错的可以用来举一反三的例子,为后续的其他框架的扩展提供参考。
1.1 前端:
“传感器数据预处理(无效值去除、序列检查、点云遮挡点与平行点去除、点云corp&merge、点云去畸变);
”
环境角度偏差量计算;
多传感器数据同步;
基于sensor-tracker形式的pose-extrapolator;
Imu数据重力向量更新与对齐;
CSM:Correlative Scan Matcher & Ceres Scan Matcher;
概率栅格地图的构建、更新和扩展;
Rangefinders RayCasting;
etc……
1.2 后端:
“基于Google Ceres构建Pose Graph,主要利用node-submap constraints,辅以 node-node constraints作为edges(后续可以扩展submap-submap constraints),scan-pose为node;
”
基于SPA加速的后端优化;
LoopClosure:Correlative Scan Matcher & Branch and Bound;
etc……
1.3工程:
“pbstream文件:建图轨迹信息保存与加载;
”
Lua参数文件的加载;
Google日志;
etc……
2. 历年顶会中Life-Long SLAM相关的论文分析
[ICRA-2014] Long-term 3D map maintenance in dynamic environments:提出了一种基于time history of velocities,筛选分类出dynamic points & static points;
[ICRA-2014] Grid-based mapping and tracking in dynamic environments using a uniform evidential environment representation:主要贡献是提出一种uniform, low-level, grid-based world model including dynamic and static objects,领域还是动态障碍物去除方法;
[ICRA-2021] ERASOR--Egocentric Ratio of Pseudo Occupancy-based Dynamic Object Removal for Static 3D Point Cloud Map Building:主要贡献点是提供了一种3D SLAM时,去除动态障碍物的方法;
[IROS-2020] REMOVERT;
[IROS-2021] LT-mapper: A Modular Framework for LiDAR-based Lifelong Mapping:贡献领域在于map management,提出一种解决high\low dynamic change detection & positive\negative change management的方法;
[ICRA-2014] Localization in highly dynamic environments using dual-timescale NDT-MCL: 适用于变化率非100%的场景的3D定位,如仓储/运料/建筑工地等场景
[IV-2018] Map Management for Efficient Long-Term Visual Localization in Outdoor Environments;
[IROS-2018] PoseMap: Lifelong, Multi-Environment 3D LiDAR Localization;
[KI-2010] Life-long Map Learning for Graph-based SLAM Approaches in Static Environments;
[Int. J. Robot. Res-2012] Information-Theoretic Compression of Pose Graphs for Laser-Based SLAM;
[IROS-2012] Dynamic Pose Graph SLAM: Long-term Mapping in Low Dynamic Environments;
[IROS-2021] A General Framework for Lifelong Localization and Mapping in Changing Environment;可以详见知乎高仙IROS论文分享
[Institution for Mathmatic, KTH-2010] Lectures on Statistical Learning Theory for Chow-Liu Trees
[IEEE/Trans.Infor.Theory-1968] Approximating Discrete Probability Distributions With Dependence Trees
[IEEE Transactions on Robotics-2014] Generic node removal for factor-graph SLAM
3. 适用于本文选择的SLAM工程中的技术论文与文章
本节的论文筛选是根据第2节的选集中进一步确认的较为关键的核心技术、思路论文,方便“调查”的入手。
[KI-2010] Life-long Map Learning for Graph-based SLAM Approaches in Static Environments;
[Int. J. Robot. Res-2012] Information-Theoretic Compression of Pose Graphs for Laser-Based SLAM;
[IROS-2012] Dynamic Pose Graph SLAM: Long-term Mapping in Low Dynamic Environments;
[IROS-2021] A General Framework for Lifelong Localization and Mapping in Changing Environment;本人也是从高仙的解决方案中受到了很大的启发,帮助确立了“调查”的方向。
[Institution for Mathmatic, KTH-2010] Lectures on Statistical Learning Theory for Chow-Liu Trees
[IEEE/Trans.Infor.Theory-1968] Approximating Discrete Probability Distributions With Dependence Trees
[IEEE Transactions on Robotics-2014] Generic node removal for factor-graph SLAM
4. 核心论文技术点和技术方案分析
“[IROS-2021] A General Framework for Lifelong Localization and Mapping in Changing Environment;知乎高仙IROS论文分享
”
本节选择从2021年高仙发布的Life-Long SLAM框架论文入手,进行简单的技术点分解和发散,若有错误的地方还望各位批评指正。
[IROS-2021] A General Framework for Lifelong Localization and Mapping in Changing Environment;
4.1 高仙论文主要贡献点概述:
完整且稳定的lifelong SLAM框架,通过了实际场景的长期测试,并且得到大规模落地部署;
基于submap的graph sparsification method,在维持厘米级精度的同时,计算量和内存复杂度都是“常量状态”;
测试过程采集了包含激光雷达、IMU、轮式编码器在内的lifelong SLAM数据,并开源了该数据集,便于之后学术界和工业界的研究。
论文中也提供了2D方案中的传感器的布局方案和上位机选型,如下图示:
4.2 高仙论文SLAM系统框架
Input Module:IMU、wheel odometry、LIDAR data;
Pre-Process Module
Local LiDAR Odometry,LLO:SLAM前端,接收预处理模块的传感器数据,并进行连续帧匹配,同时生成submap;
Global LiDAR Matching,GLM:后端,接收前端的激光数据并与地图数据中的submap进行匹配,构建约束信息,并送入PGR模块;
Pose Graph Refinement,PGR:后端,分为(1)multi-session localization(2)PGR:负责submap的删除和添加,基于CLT进行位姿图的稀疏化,之后启动全局位姿图优化;
Output:实时输出计算得到的定位信息,TF转换、位姿和地图;
在以上的系统框架中和本文主题Life-Long紧密相关的部分在于第5个模块Pose Graph Refinement,接下来将针对该部分进行下一步的分析。
4.3 系统框架中Multisession Localization概念
引入session,也就是程序过程维护的trajectory;
第一次建图属于session 0,此时阶段为mapping stage,构建了当前环境的地图描述,并存入数据库。值得说明的是,session 0生成的pose graph不会被替换或者修改;
进入定位模式时,每次定位会从数据库读取地图数据,并加载到内存,创建新session(session 1~n)。在每个定位session中,定位状态的输出和新子图的构建通过LLO,GLM则利用sensor data与已完成的submap进行约束构建。Finished Nodes和constraints都再输入到PGR;
定位过程中不断将新生成的submap添加到当前session,同时删除旧session的submap。在删除旧submap时,触发位姿图的稀疏化和位姿优化。最后在结束定位任务时,调用接口保存更新的地图,并传入数据库,从而完成一次地图更新。经过多次地图更新后,地图中包含多条session,每条session由一定数量的node、submap和约束信息构成。
4.4 实现Life-Long的核心部分POSE GRAPH REFINEMENT
根据该部分,往下细分的话可再划分成3个子部分,
Submap trimming:地图筛选与删除判断单位,该子部分会输出需要删除的冗余地图。
Pose graph sparsification:进行地图删除后,需要对应地处理维护的因子图,保证因子图的一致性和稀疏性。
Pose graph optimization:完成1、2后,再进行因子图的优化计算。
4.4.1 Submap trimming
高仙的论文是以submap作为删除的单元,有的论文中以关键帧作为删除单元,但本质都一样,都是为了剔除冗余的信息,尽力维护建图轨迹中节点的独立性(或者是唯一性)。
与之相关的论文处理可以作出以下规整:
“上述表格中的·「i」代表本文第三部分中筛选出的论文的标号
”
4.4.2 Pose graph sparsification
从Submap trimming来到这里,我们应该替机器人思考一个这样的问题:
“How to maintain a pose graph that does not grow unless the robot explores previously unobserved parts of the environment?
”
如此,我们还可以将上面这个大问题进一步拆解:
“”
How to restrict the size of the pose graph ?
How to maintain a sparse pose graph ?
好在高仙又贴心地帮助我们提出了一个解决方案,在本文中贴出相关的图示,而每一步的思路可以详见论文中的相关方法论。
4.4.3 关于PGR的思考
如果有读者看完论文,就会发现虽然提供了一个看似很完整的解决思路,但其背后的原理和理论并没有详细的介绍和推导。故此,本文将针对论文中的思路整理背后相关的原理和理论基础,以下为部分较为核心的理论基础,更加完善的内容可以通过研读第二部分的汇总论文获得。
“Multivariate Probability;
”
Marginal Probability & Conditional Probability;
Dependence Structure;
Bayesian Update;
Marginalization & Schur Complement & Elimination Clique;
Reverse I-Projection & Kullback-Leibler Divergence;
Mutual Information;
Chow-Liu Tree Theory & Spanning Weighted Tree;
Kruskal’s Algorithm;
Optimal Product Approximation Problem & Approximate Marginalization;
5. PGR核心理论分析与讨论
该节将简单整理一下4.4.3小节中提及的核心理论内容,希望在本部分的内容可以为第四部分进行足够的理论补充。
5.1 Multivariate Probability
5.2 Marginal Probability & Conditional Probability
5.3 Dependence Structure
5.4 Marginalization & Schur Complement & Elimination Clique
5.5 Reverse I-Projection & Kullback-Leibler Divergence
5.6 Mutual Information
5.7 Chow-Liu Tree Theory
5.8 Kruskal’s Algorithm & Spanning Weighted Tree
(一)视频课程来了!
自动驾驶之心为大家汇集了毫米波雷达视觉融合、高精地图、BEV感知、多传感器标定、传感器部署、自动驾驶协同感知、语义分割、自动驾驶仿真、L4感知、决策规划、轨迹预测等多个方向学习视频,欢迎大家自取(扫码进入学习)
(扫码学习最新视频)
视频官网:www.zdjszx.com
(二)国内首个自动驾驶学习社区
近1000人的交流社区,和20+自动驾驶技术栈学习路线,想要了解更多自动驾驶感知(分类、检测、分割、关键点、车道线、3D目标检测、Occpuancy、多传感器融合、目标跟踪、光流估计、轨迹预测)、自动驾驶定位建图(SLAM、高精地图)、自动驾驶规划控制、领域技术方案、AI模型部署落地实战、行业动态、岗位发布,欢迎扫描下方二维码,加入自动驾驶之心知识星球,这是一个真正有干货的地方,与领域大佬交流入门、学习、工作、跳槽上的各类难题,日常分享论文+代码+视频,期待交流!
(三)【自动驾驶之心】全栈技术交流群
自动驾驶之心是首个自动驾驶开发者社区,聚焦目标检测、语义分割、全景分割、实例分割、关键点检测、车道线、目标跟踪、3D目标检测、BEV感知、多传感器融合、SLAM、光流估计、深度估计、轨迹预测、高精地图、NeRF、规划控制、模型部署落地、自动驾驶仿真测试、产品经理、硬件配置、AI求职交流等方向;
添加汽车人助理微信邀请入群
备注:学校/公司+方向+昵称