【slam】视觉slam十四讲笔记

第一讲 序言

学习slam必备知识及软件

第二讲 初识slam

1.引入

要想实现机器人的自主运动需要解决的两大问题:定位和建图。

定位侧重对自身的了解,建图侧重对外在的了解。

而这里就出现了一个相互耦合的问题,那就是要想获得准确的定位,首先要有一个精确的地图,而要想有精确的地图,那又需要一个准确的定位。

slam就是用来研究解决这两大问题的。

那么,要用什么来做slam呢?
------------答案是传感器。

服务于slam的传感器有两种:环境传感器和自身携带传感器。

而在实际的应用场景中,环境传感器有一定的限制,且slam更强调未知环境,所以携带式传感器是更合适更受重视的传感器。

相机: 
	本质:以二维记录三维
	丢失的维度是:距离
各类相机的主要区别在于有没有深度信息
	单目:没有深度,必须通过移动相机产生深度
	双目:视差计算深度
	RGBD:通过物理方法测量深度

2.视觉slam框架

1.前端 VO Visual Odometry 视觉里程计

方法:特征点法(第七讲) 直接法(第八讲)

2.后端 Optimization

代表:前期:EKF 现在:图优化(第十、十一讲)

3.回环检测 Loop Closing
识别到达过的场景,检测机器人是否回到早先位置

方法:词袋模型(第十二讲)

4.建图 Mapping

度量地图vs拓扑地图
稀疏地图vs稠密地图

3.slam问题的数学描述

两个基本方程:
运动方程
观测方程

4.实践部分

在这里插入图片描述

在这里插入图片描述

第三讲 三维空间的刚体运动

3D Space Rigid Body Motion

	概述or目的:
	       1.理解三维空间刚体运动描述方式:旋转矩阵、变换矩阵、四元数和欧拉角
	       2.掌握eigen库的矩阵,几何模块的使用方法

1.点、向量

向量运算:
内积 外积* a^b 把向量变成矩阵
坐标系由三个基构成
行列式本身表示体积

引入问题:坐标系之间是如何变化的?
进而:怎么计算同一个向量在不同坐标系里的坐标?
在slam中:1.固定的世界坐标系和移动的机器人坐标系 2.机器人坐标随着机器人运动而改变,每个时刻都有新的坐标系
答案: 变化->旋转+平移(原点间的平移,三个轴的旋转)
#平移是一个向量 a’ = Ra + t
#旋转
a = Ra’
R是旋转矩阵,两个性质:R是一个正交矩阵(求逆直接转置)且行列式为1,满足这两个性质的矩阵称为旋转矩阵

#a' = Ra + t   两个坐标系的刚体运动可以由R,t完全描述

但是这种方程在多次变换的时候会变得很复杂,所以改变一下形式,写成矩阵相乘的形式:
b~ = T1 a~ a~ = [a 1]T b~ = [b 1]~
这种用四个数表达三维向量的做法称为齐次坐标,引入齐次坐标后,旋转和平移可以放到同一个矩阵,称为变换矩阵
SE 称为特殊欧式群

在slam中,通常定义世界坐标系Tw 机器人坐标系Tr( r - robot w - world)
在实际编程中,可使用Trw或Twr来描述机器人的位姿 Trw是世界坐标系在机器人坐标系的位置 Twr是在机器人在世界坐标系下的位置

2.实践

useEigen 包括了矩阵的基本操作
在这里插入图片描述

3.旋转向量、欧拉角

旋转描述:角轴表示 w = ·n
角轴(也就是李代数):三个量,没有约束
旋转矩阵:九个量,有正交性约束和行列式值约束
角轴与旋转矩阵只是表达的方式不同,但表达的东西可以是同一个

欧拉角:将一次旋转分解为三次不同轴上的转动
z - 偏航角yaw y - 俯仰角pitch x - 滚转角roll
会出现万向锁问题----使系统少了一个自由度,存在奇异性问题
欧拉角不适于插值和迭代,往往只用于人机交互中,slam程序中很少使用欧拉角表达姿态

4.四元数

一种扩展的复数。四元数有三个虚部,可以表达三维空间的旋转
q = q0 +q1 i + q2 j + q3 k
四元数和旋转矩阵以及角轴可以互相转换

相比于角轴、欧拉角的优势:紧凑、无奇异性

5.相似、仿射、射影变换

6.实践-EIGEN几何模块

在这里插入图片描述

在这里插入图片描述

第四讲 李群与李代数

Lie Group and Lie Algebra

目标:1.理解李群与李代数的概念 
	  2.理解李代数上的求导方式和意义
	  3.使用Sophus对李代数进行运算

群是一种集合加上一种运算的代数结构。记集合为A,运算为·,那么当运算满足【封结幺逆】四大性质时,称(A,·)成群。

李群:具有连续性质的群,既是群也是流形
李代数:与李群对应的一种结构,位于向量空间

第五讲 相机与图像

目标:1.理解针孔相机的模型、内参与径向畸变参数
2.理解一个空间点是如何投影到相机成像平面的
3.掌握OpenCV的图像存储与表达方式
4.学会基本的摄像头标定方法

1.相机模型

照片丢掉了距离信息

1.针孔相机模型

—相似三角形 负号表示倒像
从焦距和相似三角形推到图像坐标,再推到成像坐标,然后简化形式,最后写成矩阵形式 Z% = KP
中间矩阵称为内参数,内参通常再相机生产后就已固定

当只有一个相机时,只能确定某点的可能的位置(一条直线)
相机坐标系和世界坐标系差一个变换,而这个变换会引入外参,R,t,T
外参是SLAM估计的目标,因为想要估计某个点在世界坐标系下的位置

世界坐标—相机----归一化平面----像素

畸变
径向畸变和切向畸变
径向畸变:桶形失真和枕形失真

畸变可以用归一化坐标的变换来描述(多项式描述)

2.双目模型:利用相似关系可以写出左右像素的几何关系,然后通过整理得到z 和 d = Ul-Ur

d为视差,描述同一个点在左右目上成像的距离,不容易计算
z为基线到实际该点的距离,最大值为fb
b为基线宽度

3.RGB-D相机:物理手段测量深度

Tof或结构光两种主要原理
通常能得到与rgb图对应的深度图

2.图像

图像在计算机中以矩阵形式存储(二维数组)

3.实践-基本图形处理

在这里插入图片描述

4.实践-点云拼接

遇到的问题 1.pcl未安装 2.pcl需要c++14
在这里插入图片描述

第六讲 非线性优化

目标:1.理解最小二乘法
2.理解高斯牛顿和 等下降策略
3.学习ceres库和g2o库的基本使用方法

1.状态估计问题

最简单问题:线性系统 高斯噪声
复杂问题:非线性系统,非高斯噪声

3.实践 CERES

ADD_COMPILE_OPTIONS(-std=c++11 )
ADD_COMPILE_OPTIONS(-std=c++14 )
set( CMAKE_CXX_FLAGS "-std=c++11 -O3" ) 

set( CMAKE_CXX_STANDARD 14)

第八讲

useLK运行成功截图
direct_semidense
在这里插入图片描述

发现一个很牛逼的linux安装软件的代码

wget http://fishros.com/install -O fishros && . fishros

一键安装

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在《视觉SLAM十四》中,章节安排如下: 1. 数学基础部分:介绍这本书的基本信息,包括自测题。概述SLAM系统的组成和各模块的工作。介绍三维空间运动、李群和李代数、针孔相机模型以及非线性优化。完成一个曲线拟合的实验。 2. SLAM技术部分:解特征点法的视觉里程计,包括特征点的提取与匹配、对极几何约束的计算、PnP和ICP等方法。学习直接法的视觉里程计,包括光流和直接法的原理,并使用g2o实现一个简单的RGB-D直接法。构建一个视觉里程计框架,解决优化和关键帧选择的问题。深入讨论后端优化,包括Bundle Adjustment和位姿图的优化。介绍回环检测和地图构建的方法。最后,介绍当前的开源SLAM项目和未来的发展方向。 另外,对于四元数的学习,可以先了解复平面的概念。复平面是一个用来描述复数的平面,其中实部和虚部分别对应平面的横坐标和纵坐标。了解复平面后,可以开始学习四元数的概念和应用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [视觉SLAM十四笔记](https://blog.csdn.net/dada19980122/article/details/111404967)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [【视觉SLAM十四笔记【逐行代码带你解析】【适合纯小白 ps:因为我就是】(持续更新中)](https://blog.csdn.net/R_ichun/article/details/131964588)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值