Robotics机器人学中的SLAM背景知识、详细介绍与论文解读

《视觉SLAM十四讲》 simultaneous localization and mapping

视觉SLAM的基础知识-高翔_bilibili

Def.of SLAM
Sensors:The methods and difficulty of SLAM depend heavily on the equipped sensors.

  • Lasers
    ·Accurate
    ·Fast
    ·Long history in research
    ·Heavy
    ·Expensive
    .Examples:SICK,Velodyne,Rplidar

  • Cameras
    ·Cheap
    ·Light-weight
    ·Rich information
    ·High computation cost
    ·Work under assumptions
    ·Categories:monocular,stereo,RGBD

视觉离人的感知还很遥远。
稠密SLAM对计算资源的消耗还是比较高。
大部分SLAM都需要在特定的假设下才能正常工作

《视觉SLAM十四讲》笔记摘抄

视觉SLAM-来自RMer

全日制学生混的【一起读书】视觉SLAM十四讲有很多自己的理解和经验

可爱的学姐讲的通俗易懂的视觉SLAM

part0 基础中的基础背景知识

bg: background 你需要的背景知识
和上面视觉SLAM-来自RMer有一点重合

模型矩阵(Model Matrix)、视图矩阵(View Matrix)和投影矩阵(Projection Matrix)

共同点:将3D空间中的物体从局部坐标系变换到屏幕上的2D像素坐标
goal: 在光栅化的过程中帮助实现几何变换和坐标变换

1.模型矩阵(Model Matrix)

bg: 物体的每个顶点在创建时通常位于局部坐标系中(它们的原点是相对于物体本身的)
局部坐标系(object space)→ 模型矩阵(Model Matrix)【平移、旋转、缩放】 → 世界坐标系(world space)
平移矩阵:移动物体的位置
旋转矩阵:旋转物体
缩放矩阵:调整物体的大小

$ P _ { w o r l d } = M _ { m o d e l } \cdot P _ { l o c a l } $

模型矩阵 $ M _ { m o d e l } $

物体局部坐标系中点$ P _ { 1 o c a l } $

物体在世界坐标系中位置 $ P _ { w o r l d } $

2.视图矩阵(View Matrix)

$ P _ { c a m e r a } = M _ { v i e w } \cdot P _ { w o r l d }$

$ M _ { v i e w }$ 视图矩阵

$ P _ { w o r l d }$ 物体在世界坐标系中的位置

$ P _ { c a m e r a }$ 物体在摄像机坐标系中的位置

3.投影矩阵(Projection Matrix)

将3D坐标转换为屏幕空间的2D坐标
将视图空间中的坐标转换为标准化设备坐标(Normalized Device Coordinates, NDC),并且还处理了透视效果
$ P _ { n d c } = M _ { p r o j e c t i o n } \cdot P _ { c a m e r a }$

投影矩阵 $ M _ { p r o j e c t i o n }$

物体在摄像机坐标系中的位置 $ P _ { c a m e r a }$

物体在标准化设备坐标中的位置$ P _ { n d c }$

类别 模型矩阵 视图矩阵 投影矩阵
作用 局部坐标系→世界坐标系 世界坐标系→摄像机坐标系 摄像机坐标系→屏幕坐标系,同时处理透视变换
来自:Metal 学习笔记四(2):坐标空间

正交投影和透视投影

特性 正交投影 透视投影
英文 Orthographic Projection Perspective Projection
直觉 不考虑距离对大小的影响,即无论物体距离远近,它们看起来大小都相同。 模拟人类视觉,远处的物体看起来较小,近处的物体看起来较大。投影矩阵会根据物体距离摄像机的远近,调整物体的大小。
投影线 平行投影线 会聚于一个或多个消失点
距离影响 距离不影响物体的大小 远处的物体显得较小,近处显得较大
应用场景 工程制图、机械设计、建筑设计等一些特殊的场景渲染 艺术创作、三维建模、现实感渲染
真实感 主要用于精确描述物体的形状和尺寸 用于表现现实世界中的视觉效果
视图数量 通常需要多个视图来全面描述物体 单一视角下能够看到物体的整体

常用的 C++ 库:Eigen 和 Sophus

C++ 库 Eigen Sophus
目的 进行高效的矩阵和向量运算,以及线性代数、数值计算等操作 计算特殊欧氏群(SE(3)、SE(2))和李群(SO(3)、SO(2))等几何对象
应用 计算机视觉、物理模拟、机器学习等需要处理大量线性代数的应用 机器人学和 SLAM(同步定位与地图构建)等领域
功能 ①矩阵与向量运算:Eigen 提供了各种维度的矩阵与向量类型,可以进行矩阵乘法、转置、逆、行列式计算等。②线性代数操作:Eigen 支持常见的线性代数操作,如特征值分解、QR 分解、SVD 分解等,适合求解方程组、优化等问题。③几何操作:Eigen 提供了旋转矩阵、变换矩阵、四元数等几何运算支持,广泛用于 3D 计算。④高效与便捷:由于采用了模板元编程,Eigen 在性能上接近手写优化的代码,特别适合需要高效矩阵运算的场景。⑤易用性:Eigen 的接口设计简洁,语法类似数学表达式,方便上手和集成。 ①李群与李代数:Sophus 实现了常见的李群(如 SE(3) 表示三维旋转和平移的组合)和李代数(SE(3) 的对数映射)之间的转换。②几何变换:Sophus 提供了高效的几何变换计算工具,能够处理旋转、平移、刚体运动等常见的 2D 和 3D 几何变换。③数值优化中的应用:Sophus 经常被用在 SLAM、视觉里程计、计算机视觉中的优化问题,如最小化重投影误差等,提供了合适的几何表示来进行数值计算。
关系 Sophus 库依赖于 Eigen 库进行底层的矩阵和向量运算。Sophus 提供了对李群、李代数和几何变换的具体实现,而这些实现背后则使用了 Eigen 的矩阵操作。

惯性导航

Inertial Navigation Systems (INS) – an Introduction

MonoSLAM和Kalman Filter

MonoSLAM

一种用于单目相机的实时 SLAM(Simultaneous Localization and Mapping,即同步定位与地图构建)算法。它是首个成功将 SLAM 方法从移动机器人领域应用到单个不受控制相机的“纯视觉”领域的算法,实现了实时且无漂移的性能

A Multi-state Constraint Kalman Filter for Vision-aided Inertial Navigation

一种用于视觉辅助惯性导航的多状态约束卡尔曼滤波算法。这项工作的主要贡献是推导出一个测量模型,该模型能够表达从多个相机姿态观察静态特征时产生的几何约束。该算法的计算复杂度与特征量成线性关系,能够在大规模真实环境中进行高精度的姿态估计

part1 数学基础

ch2初识slam

视觉slam的经典框架[静态、刚体、光照变化不明显、无人为干扰]

  1. 传感器读取信息
  2. 前端视觉里程计 (Visual Odometry)/(Front End)
    相邻图像之间的运动,通过相机和空间点的几何关系
    问题是有漂移,更可能会出现累计漂移
  3. 后端(非线性)优化(Optimization)
  4. 回环检测(Loop Closure Detection)
  5. 建图(Mapping)

ch3三维刚体运动

视觉SLAM十四讲_3三维空间刚体运动
第3讲(上) 详细说明欧拉角的万向锁到底是干嘛的 以及这些三个数表示旋转的量到底对slam有什么影响
第3讲(下)补充了Cmake进阶语法 vscode基础配置 Eigen库详细使用

ch4李群和李代数

ch5相机和图像

视觉SLAM十四讲_5相机与图像
第5讲(上)把相机观测过程梳理得很顺! 介绍了SLAM中常用的相机,补充了相机标定,双目相机所面临的问题,是实践中的切身体会
第5讲(下)时间长了点,但都是积累的体会! 详细分析了配套的程序 补充了ubuntu常用软件安装方法 Opencv的安装和调用

ch6非线性优化

part2 实践应用

ch7视觉里程计1

ch8视觉里程计2

ch9后端1

ch10后端2

ch11回环检测

ch12建图

基于3DGS的SLAM(论文解读)

光栅化(Rasterization)

将3D模型中的几何数据(如多边形或顶点)转换为2D图像的像素表示
通常是图形渲染管线的一部分,特别是在实时渲染(如游戏和互动应用)中被广泛使用

1.顶点处理

3D模型中的顶点经过几何变换(模型矩阵、视图矩阵和投影矩阵)
顶点从物体的局部坐标系→屏幕空间坐标系

2.三角形处理

bg:3D模型通常用三角形网格表示
method:将这些三角形投影到2D平面上,确定每个三角形在屏幕上占据的像素范围。

3.片元生成

step1 确定三角形在屏幕上覆盖的所有像素区域
step2 为这些像素生成片元(fragments),每个片元包含关于颜色、深度等渲染信息

4.深度测试和混合

bg:处理多个三角形时,片元可能会互相遮挡
method:进行深度测试(z-buffer)来确定哪些片元应该显示在前面

5.着色

每个片元通过着色器进行着色,生成其颜色值、透明度等属性
最终绘制出一张完整的2D图像

优点

GPU执行效率非常高(广泛应用于需要高帧率的应用)
在处理复杂几何体和光影效果时可能不如光线追踪等技术逼真,但其计算量较小(大多数实时渲染应用中占据主导地位)

DROID-SLAM: Deep Visual SLAM for Monocular, Stereo, and RGB-D Cameras

DROID-SLAM: Deep Visual SLAM for Monocular,Stereo, and RGB-D Cameras

NeRF-SLAM: Real-Time Dense Monocular SLAM with Neural Radiance Field

NeRF-SLAM: Real-Time Dense Monocular SLAM with Neural Radiance Fields

CodeSLAM:Learning a Compact, Optimisable Representation for Dense Visual SLAM

CodeSLAM:Learning a Compact, Optimisable Representation for Dense Visual SLAM

卡尔曼滤波器 Kalman Filter

正常网络环境可能会打不开
卡尔曼滤波器学习笔记(一):概率论和贝叶斯滤波 - Yang's Blog (warden2018.github.io)

概率机器人(中科大)ProbabilisticRobotics

http://staff.ustc.edu.cn/~jianmin/lecture/ai2021/pr.pdf

机器人学中的状态估计 StateEstimationforRobotics

StateEstimationforRobotics-CN.pdf

顶级 2000+pages的handbook of robotics

Springer Handbook of Robotics

posted @ 2024-05-06 19:13  asandstar  阅读(51)  评论(0编辑  收藏  举报