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的经典框架[静态、刚体、光照变化不明显、无人为干扰]
- 传感器读取信息
- 前端视觉里程计 (Visual Odometry)/(Front End)
相邻图像之间的运动,通过相机和空间点的几何关系
问题是有漂移,更可能会出现累计漂移 - 后端(非线性)优化(Optimization)
- 回环检测(Loop Closure Detection)
- 建图(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