一起自学SLAM算法:第7章-SLAM中的数学基础

连载文章,长期更新,欢迎关注:


写在前面

第1章-ROS入门必备知识

第2章-C++编程范式

第3章-OpenCV图像处理

第4章-机器人传感器

第5章-机器人主机

第6章-机器人底盘

第7章-SLAM中的数学基础

        7.1 SLAM发展简史

        7.2 SLAM中的概率理论

        7.3 估计理论

        7.4 基于贝叶斯网络的状态估计

        7.5 基于因子图的状态估计

        7.6 SFM、BA和SLAM比较

        7.7 典型SLAM算法

第8章-激光SLAM系统

第9章-视觉SLAM系统

第10章-其他SLAM系统

第11章-自主导航中的数学基础

第12章-典型自主导航系统

第13章-机器人SLAM导航综合实战


机器人技术的本质可以用图6-24所示的模型来表示,模型中主要包括感知、决策和交互3个部分。机器人通过搭载的传感器对环境进行感知,即传感器是机器人系统的输入端;机器人通过搭载的执行机构与环境进行交互,即执行机构是机器人系统的输出端;决策作为机器人的中枢系统连接输入端和输出端。决策由低智能的认知层和高智能的逻辑推理层构成,常见的人脸识别、语音识别、机器人定位、机器人避障等都属于低智能的认知层,而复杂的逻辑推理在机器人中还很难实现。

通过计算机中复杂的决策算法,让机器人实现完全自主化是人类一直以来的梦想。所谓完全自主化,就是在完全没有外界指令的干预下,机器人能通过传感器和执行机构与环境自动发生交互,并完成特定的任务。比如,自主与人类发生语言和情感交流,自主识别、抓取和操控物体,自主移动等。由于我们生活在一个三维空间环境中,在环境空间中移动是机器人与环境发生交互最基本的形式之一,因此自主移动也被誉为机器人自主化的“圣杯”。

自主移动实质上就是解决从地点A到地点B的问题,这个问题看似简单,实则非常复杂。考虑更一般的情况,机器人必须能在完全未知的环境下,通过探索方式去认识环境并获取自身在环境中的定位信息,在知道了自身定位点A和目标定位点B后,在考虑避开障碍的前提下沿规划路径移动。经过近几十年来的研究,形成了一套有效解决机器人自主移动的方案,即SLAM导航方案。如图6-28所示,SLAM导航方案由建图(mapping)、定位(localization)和路径规划(path planning)3大基本问题组成,这3大问题互相重叠和嵌套又组成新的问题,也就是SLAM问题、导航问题、探索问题等,这也是本书接下来的章节将要逐一讨论的问题。

本章是讨论SLAM问题的开篇,将带领大家了解SLAM问题的内在理论,即SLAM中的数学基础。


7.1 SLAM发展简史

        7.1.1 数据关联、收敛和一致性

        7.1.2 SLAM研究方向

7.2 SLAM中的概率理论

        7.2.1 状态估计问题

        7.2.2 概率运动模型

        7.2.3 概率观测模型

        7.2.4 概率图模型

7.3 估计理论

        7.3.1 估计量的性质

        7.3.2 估计量的构建

        7.3.3 各估计量对比

7.4 基于贝叶斯网络的状态估计

        7.4.1 贝叶斯估计

        7.4.2 参数化实现

        7.4.3 非参数化实现

7.5 基于因子图的状态估计

        7.5.1 非线性最小二乘估计

        7.5.2 直接求解方法

        7.5.3 优化方法

        7.5.4 各优化方法对比

        7.5.5 常用优化工具

7.6 SFM、BA和SLAM比较

7.7 典型SLAM算法

        7.7.1 EKF-SLAM

        7.7.2 Fast-SLAM

        7.7.3 Graph-SLAM

        7.7.4 现今主流SLAM算法


本章首先对SLAM发展历史进行了回顾,并给出了学习动向图,帮助读者快速把握学习的整体脉络。然后讨论了SLAM中所涉及到的最基础概率理论,包括概率运动模型、概率观测模型以及将运动与观测联系在一起的概率图模型。根据概率图模型中的贝叶斯网络和因子图两类表示方法,将引出滤波方法和优化方法两大SLAM求解方法。在开始学习滤波方法和优化方法之前,还需要一些估计理论的知识,故对最大似然估计、最小二乘估计、贝叶斯估计、最小均方误差估计和最大后验估计进行了系统的讲解。然后讨论了基于贝叶斯网络表示的滤波方法实现,主要是参数滤波和非参数滤波;而基于因子图表示的最小二乘问题,有直接法和优化法两种解法,优化法是讨论的重点。在学习完前面SLAM基础理论后,本章结尾系统地讨论归纳了各种具体SLAM系统实现框架。

SLAM问题涉及到概率、图论、状态估计、滤波、优化等一系列基础理论,为了将SLAM问题的来龙去脉讲清楚,我在写作本章时花费了大量时间研究整理这些基础理论及其内在的联系,并根据SLAM讨论的需要对各种符号和概念尽量做到统一性地表述。虽然这些年SLAM研究取得了无数举世瞩目的成果,但是国内的研究状态还处于起步阶段,相关专业学习资料很少,并兼理论性和实践性的系统化归纳整理资料就更少了。为了帮助国内的广大学习者更深入地理解SLAM技术,本章对SLAM数学理论进行了系统性梳理,通过对SLAM数学理论发展演进过程的介绍,帮助广大学习者把握SLAM技术背后的本质。想要学好SLAM,需要在全局性把握理论本质的基础上,将具体的SLAM实现算法在机器人本体上用起来。单纯地学习理论知识,或单纯地跑跑SLAM实现算法,都无法达到融会贯通的效果,更不用说依据实际需求修改完善开源SLAM代码或编写自己的SLAM代码了。本章是整本书最核心的章节,涉及到的很多数学理论对于初学者来说确实难理解,但是大家要克服畏难情绪,可以在学习完整本书后,回头再来看之前一些不懂的地方。

SLAM是一个理论性和工程性都很强的课题,掌握了理论部分后,还需要结合实际项目示例真正将SLAM系统用起来。所以接下来的章节将通过讲解各种现今主流SLAM框架的应用,让大家真正将SLAM用起来,并能根据实际需求修改和完善开源SLAM代码。

源码仓库

  • Github下载:github.com/xiihoo/Books_Robot_SLAM_Navigation

  • Gitee下载(国内访问速度快):gitee.com/xiihoo-robot/Books_Robot_SLAM_Navigation

参考文献

【1】 张虎,机器人SLAM导航核心技术与实战[M]. 机械工业出版社,2022.

你可能感兴趣的:(一起自学SLAM算法,算法,机器人,自动驾驶,概率论)