第13讲 实践:设计SLAM系统

设计一个视觉里程计,理解SLAM软件框架如何搭建,理解视觉里程计设计容易出现的问题以及解决方法。

目录

1、工程目标

2、工程框架

3、实现

附录


1、工程目标

  • 实现一个精简版的双目视觉里程计。由一个光流追踪的前端和一个局部BA的后端组成。

2、工程框架

  • 视觉里程计系统最基本的结构:图像、特征和图标。
    • 最基本单元是图像,在双目视觉里,是一对图像,可以称为一帧。
    • 对帧提取特征,这些特征很多是2D点、
    • 在图像间寻找特征的关联。若多次看到某个特征,可以用三角化计算它的3D位置,即路标
  • 两个重要模块:
    • 前端:前端负责提取图像中的特征,与上一帧进行光流追踪。通过光流结果计算该帧的定位。必要时,应补充新的特征点做三角化。前端处理的结果作为后端优化的初始值。
    • 后端:拿到处理后的关键帧和路标点,进行优化。
  • 流程 :前后端之间房一个地图模块来处理它们之间的数据流动。前端提取了关键帧后,往地图中添加新数据;后端检测到地图更新,运行一次优化,然后把地图中旧的关键帧和地图点去掉,保持优化规模。

3、实现

  • 基本数据结构:
    • Frame:id、是否为关键帧、位姿、左右图像、左右图像中的特征点。其中Pose会被前后端同时设置或访问,在Set,Get函数内加锁。
    • Feature:自身2D位置、是否为异常点、所在frame、关联地图点
    • MapPoint:3D位置、observations记录自己被哪些feature观察。
    • Map:以散列形式记录所有关键帧和对应路标点,同时维护一个被激活(窗口)的关键帧和地图点。
  • 前端
    • 前端目标:根据双目图像确定该帧的位姿
    • 处理逻辑:
      • 前端有初始化、正常追踪、追踪丢失三种状态
      • 在初始化状态,根据左右双目之间的光流匹配,寻找可以三角化的地图点,成功时建立初始地图。
      • 追踪阶段中,前端计算上一帧的特征点到当前帧的光流,根据光流结果计算图像位姿。该阶段只使用左目图像。
      • 若追踪到的点较少,就判定当前帧为关键帧。对于关键帧:
        • 提取新的特征点
        • 找到这些点在右图的对应点,用三角化建立新的路标点
        • 将新的关键帧和路标点加入地图,并触发一次后端优化。
      • 如果追踪丢失,重置前端系统,重新初始化。
  • 后端
    • 后端在启动之后,等到mao_update的的条件变量。当地图更新被触发时,从地图中拿取激活的关键帧和地图点,执行优化。

附录

  • weak_ptr 提供了一个非常重要的成员函数 lock(),该函数尝试从当前的 weak_ptr 创建一个 shared_ptr 实例。如果当前的 weak_ptr 所指向的对象仍然存在(即,至少还有一个 shared_ptr 在管理该对象),lock() 函数会返回一个指向该对象的 shared_ptr 实例,并且会增加该对象的引用计数。如果 weak_ptr 所指向的对象已经被销毁(即,没有任何 shared_ptr 在管理该对象),lock() 函数会返回一个空的 shared_ptr。
相关推荐
ShiMetaPi2 小时前
NeurIPS 2024 | 丝滑视觉新极限:EPA 框架利用事件相机突破插帧伪影瓶颈
人工智能·嵌入式硬件·计算机视觉·自动驾驶·事件相机·evs
大模型实验室Lab4AI3 小时前
MAG-3D: Multi-Agent Grounded Reasoning for 3D Understanding
人工智能·计算机视觉·3d
sali-tec3 小时前
C# 基于OpenCv的视觉工作流-章51-点查找
图像处理·人工智能·opencv·算法·计算机视觉
就是有点傻3 小时前
机器视觉图像处理学习第二天
计算机视觉
预见AI3 小时前
康耐视VisionPro连接海康相机教程(Gige)及常见错误问题
人工智能·计算机视觉·visionpro·海康相机
ComputerInBook13 小时前
数字图像处理(4版)——第 3 章——(图像的)强度变换和空间滤波(Rafael C.Gonzalez&Richard E. Woods)
图像处理·人工智能·计算机视觉·强度变换和空间滤波
泰恒17 小时前
国内外大模型的区别与差距
人工智能·深度学习·yolo·机器学习·计算机视觉
加勒比海带6618 小时前
目标检测算法——低空智能实验室开放数据集汇总附下载链接【点赞+收藏】
大数据·图像处理·人工智能·python·深度学习·目标检测·计算机视觉
犽戾武19 小时前
YOLOv8 目标检测模型训练与 RK3588 NPU 部署全记录
人工智能·计算机视觉·目标跟踪
挂科边缘1 天前
【PASCAL VOC 数据集介绍篇】目标检测与分割常用的数据集:PASCAL VOC 数据集全版本详解与避坑指南
人工智能·目标检测·计算机视觉