视觉slam14讲——第1234讲总结

本文介绍了SLAM(Simultaneous Localization And Mapping)的基础知识及应用,涵盖了定位与地图构建两大核心问题,详细解析了SLAM流程及数学描述,并深入探讨了刚体运动描述方法与李群、李代数在SLAM中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 第一讲 介绍

  • 不要想着把VIM变成一个IDE,它只是一个编辑器
  • 不要沉迷于ubuntu的不必要的配置,它只是一个工具

2 第二讲 SLAM基础知识

SLAM主要完成的两个问题是:

  • 定位
  • 建立地图

完成SLAM依赖sensor:

  • 环境中的sensor
    • marker
    • 导轨
    • 磁条
  • 机器人本体上的sensor(主流方向,限制少)
    • monocular
    • stereo
    • RGBD
    • laser
    • GPS

完整的一个SLAM流程图:
Class Diagram.png-19.6kB

SLAM中的数学描述包括两个方程:

  • 运动方程
    x k = f ( x k − 1 , u k , ω k ) x_k = f(x_{k-1},u_k, \omega_k) xk=f(xk1,uk,ωk)
    x k x_k xk表示state of robot,这个state可以是机器人的位置,速度等
    u k u_k uk表示输入,比如我们对车可以控制它的加速减速
    ω k \omega_k ωk表示运动模型的噪声
  • 观测方程(sensor)
    z k , j = h ( x k , y j , v k ) z_{k,j}=h(x_k,y_j,v_k) zk,j=h(xk,yj,vk)
    y j y_j yj表示第 j j j个路标点
    v k v_k vk表示sensor观测噪声
    z k , j z_{k,j} zk,j表示机器人在 x k x_k xk位置观察到 y j y_j yj路标的时候的观测量

3 第三讲 刚体运动描述

描述刚体在空间中的旋转有如下几种方式:

  • 旋转向量, 幅值 θ \theta θ, 单位向量 a a a
  • 旋转矩阵 R R R
  • 四元数 q 1 , q 2 , q 3 , q 4 q_1,q_2,q_3,q_4 q1,q2,q3,q4
  • 欧拉角,一般来讲用ZYX旋转,记为 y a w ( Z ) , p i t c h ( Y ) , r o l l ( X ) yaw(Z),pitch(Y),roll(X) yaw(Z),pitch(Y),roll(X)

可以使用Eigen库进行相互转换

4 第四讲 李群与李代数

对于描述刚体的运动我们已经可以使用李群(Lie Group)来描述了,比如:
S O ( 3 ) = { R ∈ R 3 ∗ 3 ∣ R R T = I , d e t ( R ) = 1 } SO(3)=\{R \in \mathbb{R}^{3*3} | RR^T=I, det(R)=1\} SO(3)={RR33RRT=I,det(R)=1}
S E ( 3 ) = { T = [ R t o T 1 ] ∈ R 4 ∗ 4 ∣ R ∈ S O ( 3 ) , t ∈ R 3 } SE(3)=\{T = \begin{bmatrix} R & t\\ o^T & 1 \end{bmatrix} \in \mathbb{R}^{4*4} | R \in SO(3), t \in \mathbb{R}^3\} SE(3)={T=[RoTt1]R44RSO(3),tR3}
为什么还要引出李代数呢?

主要是因为旋转矩阵是带约束的,进行优化的时候不方便,但是转成Lie Algebra就会变成了无约束优化
Group满足四个性质:

  • 封闭性
  • 结合律
  • 幺元(单位元)

Lie Group是一种特殊的group,它具有连续光滑的性质,直观来理解就是三维物体在空间中的运动是连续的。
所以引出Lie Algebra的主要目的是为了方便求导。

Lie Algebra的定义住一个集合 V \mathbb{V} V,一个数域 F \mathbb{F} F和一个二元运算 [ , ] [,] [,](也称之为李括号)组成。
Lie Algebra也有四个性质:

  • 封闭性
  • 双线性
  • 自反性(存在一个元素的反)
  • 雅克比等价

Lie Algebra本质生表达了两个元素的差异。

Lie Algebra s o ( 3 ) , s e ( 3 ) so(3), se(3) so(3),se(3)的推导是非常有意思的,它们其实来源于旋转向量和平移向量。

Lie Group和Lie Algebra是一一对应的,可以通过指数对数映射互相转换。

引出Lie Algebra的目的既然是为了求导,那么求导的话,需要先理解BCH公式,它描述的是在李群上两个元素的乘法和对应两个元素在李代数上的加法的关系。

求导有两个思路:

  • 李代数直接求导,发现结果复杂
  • 扰动模型(左乘和右乘两种),结果简单

S O ( 3 ) 和 S E ( 3 ) SO(3)和SE(3) SO(3)SE(3)的左扰动模型求导直接参考slam14讲。

最后值得一提的是Sophus实现了李代数的基本运算,其实是对Eigen库的一个高级封装。

### 关于视觉SLAM 14第十三中的Kitti数据集教程 在《视觉SLAM十四》的第十三中,作者通过实际案例展示了如何构建一个简单的视觉SLAM系统,并使用KITTI数据集作为输入来验证系统的性能。以下是针对这一章节涉及的KITTI数据集的相关解释: #### KITTI数据集简介 KITTI(Karlsruhe Institute of Technology and Toyota Technological Institute)数据集是一个广泛应用于计算机视觉和自动驾驶领域的重要公开数据集[^3]。它提供了丰富的传感器数据,包括立体相机图像、激光雷达点云、GPS/IMU信息等。对于本章而言,重点在于利用其双目摄像头采集的图像序列来进行视觉SLAM的研究。 #### 使用KITTI数据集前的准备工作 为了能够顺利加载并处理来自KITTI的数据,在配置阶段需要完成如下操作: - 修改默认参数文件`default.yaml`内的字段`dataset_dir`至本地存储KITTI数据的具体位置[^4]。 例如设置成类似于这样的形式: ```yaml dataset_dir: /path/to/kitti/dataset/ ``` 此步确保程序可以找到对应的图片帧及其时间戳记录用于后续同步计算。 #### 正确启动应用程序的方法 当一切环境搭建完毕之后,应当返回项目根目录而非子文件夹如`/bin`去触发可执行脚本。具体命令如下所示[^5]: ```bash cd .. ./bin/run_kitti_stereo ``` 上述指令会调用预编译好的二进制文件以开启基于KITTI双目视频流上的实时定位映射流程。 #### 主要功能模块解析 整个框架围绕着几个关键组成部分展开运作,下面逐一阐述它们的作用机制: ##### 前端部分 负责从外界获取观测值进而估计当前时刻下的初始位姿猜测。通常采用ORB特征检测器匹配同名点对从而推导基础矩阵或者本质矩阵进一步恢复相对运动关系[^2]。 ##### 后端优化环节 鉴于仅依靠几何约束难以获得全局一致性的轨迹重建成果,因此引入非线性最小化求解策略调整所有节点间的连接权重直至收敛达到最优状态。值得注意的是这部分逻辑被封装在一个独立的工作单元里以便按需激活减少资源消耗。 ##### 可视化展示层 借助OpenGL或其他图形库绘制三维空间里的路标分布状况连同机器人行走路线共同呈现给用户直观感受算法表现优劣程度。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值