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

2023-05-16

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


写在前面

第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.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 《视觉SLAM十四讲》学习笔记-第四讲部分习题的证明思路

    1 验证SO 3 SE 3 和Sim 3 关于乘法成群 证明 先看SO 3 定义为 SO 3 R R3 3 RR I det R 1 S O 3 R
  • slam数学基础——最小二乘

    一 前言 1 最小二乘是一类特殊形式的最优化求解问题 相比于其他优化问题 求解方式比较简洁 2 最小二乘被广泛应用于各种实际问题的建模 在求解实际工程问题中有着广泛的应用 例如 slam 中随处可见最小二乘的声影 二 线性最小二乘法 1 预
  • 三维刚体变换

    欢迎访问我的博客首页 三维刚体变换 1 坐标系 1 1 空间坐标系 1 2 右手坐标系与像素坐标系 2 旋转与平移 2 1 推导旋转 2 2 推导平移 2 3 推导变换 2 4 刚体变换 2 5 坐标系旋转与向量旋转 3 链式变换 4 Ei
  • No rule to make target

    No rule to make target 引言 解决方法 引言 报错 No rule to make target Thirdparty g2o lib libg2o so needed by lib libygz SLAM so 停止
  • SLAM入门

    SLAM定义 SLAM Simultaneous localization and mapping 同时定位 我在哪里 与建图 我周围有什么 当某种移动设备 汽车 扫地机 手机 无人机 机器人 从一个未知环境的未知地点出发 在运动过程中 通
  • ORB_SLAM3复现——上篇

    ORB SLAM3 前言 1 ORB SLAM3 2 准备环境 2 1 C 11 Compiler 2 2 Pangolin 2 3 Opencv 2 4 Eigen 3 复现ORB SLAM3 3 1 下载代码 3 2 执行build s
  • 【大一立项】如何亲手搭建ROS小车:硬件和软件介绍

    本次博客将详细介绍上篇博客中提到的ROS小车的硬件和软件部分 由于十一实验室不开门 所以部分代码还没有上传到Github 下位机 下位机使用Arduino 因为大一上刚学完用Arduino做循迹小车 其实Arduino作为ROS小车的下位机
  • 对最小二乘法的一点理解 - slam学习笔记

    我对最小二乘法的理解 在给定参数个数和函数模型之后 根据测试数据 找出与所有测试数据的偏差的平方和最小的参数 这里面应该有两个问题 1 为什么选取与真实数据平方和最小的拟合函数 2 如何求参数 为什么选取与真实数据平方和最小的拟合函数 极大
  • 视觉SLAM漫谈(二):图优化理论与g2o的使用

    视觉SLAM漫谈 二 图优化理论与g2o的使用 1 前言以及回顾 各位朋友 自从上一篇 视觉SLAM漫谈 写成以来已经有一段时间了 我收到几位热心读者的邮件 有的希望我介绍一下当前视觉SLAM程序的实用程度 更多的人希望了解一下前文提到的g
  • [SLAM四元数基础系列一] 四元数定义 Hamilton vs JPL

    四元数定义 Hamilton vs JPL 简介 四种区分方式 Hamilton vs JPL 引用 不管是卡尔曼滤波或者BA优化形式的SLAM或者VIO系统中 都需要用到单位四元数 Quaternion 来表示旋转 主要是单位四元数表示旋
  • Sophus安装踩坑

    装SLAM十四讲第二版提供的Sophus Eigen版本3 4 0 报错 home ch 下载 Sophus 13fb3288311485dc94e3226b69c9b59cd06ff94e test core test so2 cpp 9
  • SLAM--三角测量SVD分解法、最小二乘法及R t矩阵的判断

    目录 一 三角测量 方法一 SVD分解法的推导 方法二 最小二乘法求解 二 ORB SLAM2 三角测量源码 三 利用Eigen源码实现三角测量 方法一 SVD分解法 方法二 最小二乘法求解 速度最快 方法三 利用OpenCV自带函数 四
  • 用Eigen库练习代数运算方式以便后续对刚体旋转和移动做基础

    include
  • LeGO-LOAM中的数学公式推导

    LeGO LOAM是一种在LOAM之上进行改进的激光雷达建图方法 建图效果比LOAM要好 但是建图较为稀疏 计算量也更小了 本文原地址 wykxwyc的博客 github注释后LeGO LOAM源码 LeGO LOAM NOTED 关于代码
  • Object SLAM: An Object SLAM Framework for Association, Mapping, and High-Level Tasks 论文解读

    是一篇来自机器人顶刊T RO的文章 发表于2023 5 An Object SLAM Framework for Association Mapping and High Level Tasks 论文 An Object SLAM Fram
  • ORB-SLAM2:基于可识别特征的自主导航与地图构建

    ORB SLAM2 基于可识别特征的自主导航与地图构建 ORB SLAM Tracking and Mapping Recognizable Features 转自 http blog csdn net cicibabe article d
  • Eigen几何模块的使用方法

    include
  • 视觉SLAM漫谈

    视觉SLAM漫谈 1 前言 开始做SLAM 机器人同时定位与建图 研究已经近一年了 从一年级开始对这个方向产生兴趣 到现在为止 也算是对这个领域有了大致的了解 然而越了解 越觉得这个方向难度很大 总体来讲有以下几个原因 入门资料很少 虽然国
  • SLAM练习题(十一)—— G2O实战

    SLAM 学习笔记 写在前面的话 算是一点小小的感悟吧 估计位姿的方法有线性方法和非线性方法 线性方法就是特征点法中的2D 2D的对极约束 3D 2D的PnP问题 非线性方法有BA优化 它将位姿的估计问题转换成了一个误差关于优化量的最小二乘
  • KITTI校准文件中参数的格式

    我从以下位置访问了校准文件KITTI 的部分里程计 http www cvlibs net datasets kitti eval odometry php 其中一个校准文件的内容如下 P0 7 188560000000e 02 0 000

随机推荐

  • Linux-C语言编写-TCP客户端发送消息流程(含代码)简介(2)

    目录 第一步socket 第二步struct sockaddr in 第三步connect 第四步send 第五步close 详细代码 第一步socket 1 操作 xff1a 创建流式套接字 xff1b 2 所用函数 xff1a sock
  • 基于Linux下的Nand (Nor) Flash读写速度测试

    https blog csdn net qq 39721016 article details 117993088 基于Linux下的Nand xff08 Nor xff09 Flash读写速度测试 1 打开内核测试模块2 编译内核 xff
  • 关于结构体赋值的一个小知识点

    一 xff0c 如果结构体中定义了一个字符数组的成员变量 xff0c struct test int num char ch 32 TEST 当我们需要给字符数组赋值时 xff0c 我们可能会选择下列某种方式进行初始化 xff1a 1 可以
  • lighttpd服务器搭建教程

    目录 一 xff0c 下载安装 二 xff0c 配置服务器 1 创建目录以及移动文件位置 2 修改配置文件 三 xff0c 运行测试 四 xff0c 常见错误 环境 xff1a linux虚拟机 xff1b 一 xff0c 下载安装 1 下
  • 牛客中C++/C语言的一道练习题详解

    解题思路及涉及知识点 xff1a 先简单判断一下 xff0c 程序最终是要打印k的值 xff1b k的值由两次循环中的fun函数的返回值决定 xff1b fun函数中 xff0c 变量c是静态的 xff1b fun函数中第三行代码a 61
  • QT基本组件与常用类

    目录 一 设计师 Designer xff08 掌握 xff09 二 布局 Layout 2 1 布局的基本使用 xff08 掌握 xff09 2 2 布局属性 xff08 掌握 xff09 2 3 伸展器 xff08 掌握 xff09 2
  • QT多窗口编程与文件IO编程

    目录 一 消息对话框 QMessageBox xff08 掌握 xff09 二 常用窗口类 xff08 掌握 xff09 三 主窗口类 QMainWindow xff08 重点 xff09 四 parent参数 xff08 掌握 xff09
  • QT数据库-网络编程-打包

    目录 一 讲解之前 二 数据库基本操作 三 模糊查询 二 编程之前 三 通信结构 一 设置应用图标 xff08 熟悉 xff09 二 Debug和Release模式 xff08 掌握 xff09 三 动态链接库 xff08 掌握 xff09
  • Visual Studio 2022 的安装和创建C++项目

    下面我们来讲一下如何下载安装VS 2022并且创建C 43 43 项目 1 下载 首先 xff0c 我们来到VS的微软官网下载地址 xff1a https visualstudio microsoft com zh hans vs 然后点击
  • 一起自学SLAM算法:写在前面

    连载文章 xff0c 长期更新 xff0c 欢迎关注 xff1a 写在前面 第1章 ROS入门必备知识 1 1 ROS简介 1 2 ROS开发环境搭建 1 3 ROS系统架构 1 4 ROS调试工具 1 5 ROS节点通信 1 6 ROS其
  • 一起自学SLAM算法:第1章-ROS入门必备知识

    连载文章 xff0c 长期更新 xff0c 欢迎关注 xff1a 写在前面 第1章 ROS入门必备知识 1 1 ROS简介 1 2 ROS开发环境搭建 1 3 ROS系统架构 1 4 ROS调试工具 1 5 ROS节点通信 1 6 ROS其
  • 一起自学SLAM算法:1.3 ROS系统架构

    连载文章 xff0c 长期更新 xff0c 欢迎关注 xff1a 写在前面 第1章 ROS入门必备知识 1 1 ROS简介 1 2 ROS开发环境搭建 1 3 ROS系统架构 1 4 ROS调试工具 1 5 ROS节点通信 1 6 ROS其
  • 关于NAND FLASH调试的一点总结

    https www freesion com article 5033494883 很久没接触过 nandflash 驱动 xff0c 最近工作又摸了 xff0c 于是顺便整理总结一下 nandflash 在我看来算是比较落后的存储设备 x
  • 一起自学SLAM算法:1.6 ROS其他重要概念

    连载文章 xff0c 长期更新 xff0c 欢迎关注 xff1a 写在前面 第1章 ROS入门必备知识 1 1 ROS简介 1 2 ROS开发环境搭建 1 3 ROS系统架构 1 4 ROS调试工具 1 5 ROS节点通信 1 6 ROS其
  • 一起自学SLAM算法:1.7 ROS2.0展望

    连载文章 xff0c 长期更新 xff0c 欢迎关注 xff1a 写在前面 第1章 ROS入门必备知识 1 1 ROS简介 1 2 ROS开发环境搭建 1 3 ROS系统架构 1 4 ROS调试工具 1 5 ROS节点通信 1 6 ROS其
  • 一起自学SLAM算法:第2章-C++编程范式

    连载文章 xff0c 长期更新 xff0c 欢迎关注 xff1a 写在前面 第1章 ROS入门必备知识 第2章 C 43 43 编程范式 2 1 C 43 43 工程组织结构 2 2 C 43 43 代码编译方法 2 3 C 43 43 编
  • 一起自学SLAM算法:第3章-OpenCV图像处理

    连载文章 xff0c 长期更新 xff0c 欢迎关注 xff1a 写在前面 第1章 ROS入门必备知识 第2章 C 43 43 编程范式 第3章 OpenCV图像处理 3 1 认识图像数据 3 2 图像滤波 3 3 图像变换 3 4 图像特
  • 一起自学SLAM算法:第5章-机器人主机

    连载文章 xff0c 长期更新 xff0c 欢迎关注 xff1a 写在前面 第1章 ROS入门必备知识 第2章 C 43 43 编程范式 第3章 OpenCV图像处理 第4章 机器人传感器 第5章 机器人主机 5 1 X86与ARM主机对比
  • 一起自学SLAM算法:第6章-机器人底盘

    连载文章 xff0c 长期更新 xff0c 欢迎关注 xff1a 写在前面 第1章 ROS入门必备知识 第2章 C 43 43 编程范式 第3章 OpenCV图像处理 第4章 机器人传感器 第5章 机器人主机 第6章 机器人底盘 6 1 底
  • 一起自学SLAM算法:第7章-SLAM中的数学基础

    连载文章 xff0c 长期更新 xff0c 欢迎关注 xff1a 写在前面 第1章 ROS入门必备知识 第2章 C 43 43 编程范式 第3章 OpenCV图像处理 第4章 机器人传感器 第5章 机器人主机 第6章 机器人底盘 第7章 S