视觉SLAM技术及其应用(章国锋--复杂环境下的鲁棒SfM与SLAM)

2023-11-13

SLAM:同时定位与地图构建

  1. 机器人和计算机视觉领域的基本问题

    • 在未知环境中定位自身方位并同时构建环境三维地图
  2. 应用广泛:

    • 增强现实、虚拟现实
    • 机器人、无人驾驶

SLAM常用的传感器

  1. 红外传感器: 较近距离感应,常用与扫地机器人
  2. 激光雷达: 单线、多线等
  3. 摄像头: 单目、双目、多目等
  4. 惯性传感器(英文叫IMU,包括陀螺仪、加速度计等): 智能手机标配

SLAM运行结果

  1. 设备根据传感器信息

    • 计算自身位置(在空间中的位置和朝向)
    • 构建环境地图(稀疏或者稠密的三维点云)

SLAM系统常用框架

自2007年PTAM之后,现在的SLAM方法基本上都采用了并行跟踪和建图框架,一般包含以下几个部分:
* 输入: 可以是RGB图像、深度图,甚至IMU测量值
* 前台线程: 根据传感器数据进行跟踪求解,实时恢复每个时刻设备的位姿势
* 后台线程: 对三维点云和关键帧的位姿进行局部或全局优化,减少误差累积,同时对场景进行回环检测
* 输出:设备实时位姿和三维点云。

SLAM系统常用框架

SfM & Visual SLAM

  1. Structure from Motion和Visual SLAM的区别
    SfM可以分为离线和实时的,而实时的SfM其实就是Visual SLAM。

  2. Visual SLAM**主要采用摄像头传感器**,
    * 根据摄像头的数目可以分为单目摄像头、双目摄像头和多目摄像头等
    * Visual SLAM也在结合其它一些传感器,比如廉价IMU、GPS和一些深度摄像头来做到更加鲁棒的SLAM

  3. 以视觉为主的SLAM技术的优势:

    • 硬件成本低廉
    • 小范围内定位精确度较高
    • 无需预先布置场景

Visual SLAM 主要挑战

Visual SLAM已经有几十年的历史,虽然理论上趋向成熟,但在复杂环境下的落地还面临着诸多挑战,比如:
1. 如何处理循环回路序列和多视频序列,如何闭合回路,消除误差累积
2. 如何高效高精度地处理大尺度场景
3. 如何处理动态场景
* 传统的SLAM假设场景是静止的,摄像头是运动
4. 如何处理快速运动和强旋转
* 摄像头快速运动,拍摄的照片模糊
* 摄像头快速旋转

我们课题组的工作

  1. ENFT-SFM:Efficient Non-Consecutive Feature Tracking for Robust SFM
  2. 单目SLAM系统
    1. ENFT-SLAM:ENFT-based Large-Scale Monocular SLAM
      • 能在大尺度场景下实时运行
    2. RDSLAM:Robust Monocular SLAM in Dynamic Environments
    3. RKSLAM:Robust Keyframe-based Monocular SLAM for Augmented Reality
  3. RGB-D SLAM: RKD-SLAM: Robust Keyframe-based Dense SLAM with an RGB-D Camera
    • RKSLAM与深度相机的融合方法

ENFT-SFM: Efficient Non-Consecutive Feature Tracking for Robust SFM

  1. 非连续特征轨迹匹配:可以大大增加关键帧间特征点的匹配数目,为后端增加足够多的约束,大大减少跟丢的情况
  2. 基于自适应分段的集束调整: 将长序列分成若干序列进行后端优化,大大加快优化速度
  3. ENFT-SLAM: ENFT-based Large-Scale Monocular SLAM 是ENFT-SFM的实时化方法

动态场景SLAM的主要问题:

  1. 场景逐渐在改变

    • 左边的例子,人在移动书本,过了几十秒所有的书本的位置都发生了变化,这对传统的SLAM来说是非常难处理的
  2. 可能有大量的错误匹配

    • 动态元素还会导致大量的错误匹配,这对实时稳定的SLAM求解来说也是非常困难的

动态场景SLAM的主要问题(1)

  1. 视点改变造成的遮挡

  2. 运动物体造成的遮挡

    • 会给稳定的SLAM带来挑战

动态场景SLAM的主要问题(2)

基于关键帧的SLAM与基于滤波器的SLAM的区别

现在Visual SLAM技术方法主要分为两类,一个是keyframe-based SLAM,另一个是filtering-based SLAM。2012年Andrew Davison等人写了一篇文章对这两个方法进行了比较,得出这样的结论:keyframe-based SLAM比filtering-based SLAM在精度上、效率和扩展性上具有更好的性能。但是keyframe-based SLAM也有缺点,一般对强旋转比较敏感。当然,快速运动、运动模糊、特征不够丰富等情况对于这两类方法都很有挑战性

具体内容参见H. Strasdat, J. Montiel, and A. J. Davison. Visual SLAM: Why filter? Image and Vision Computing, 30:65-77, 2012

基于关键帧的SLAM与基于滤波器的SLAM的区别

Visual-Inertial SLAM

  1. 使用IMU数据提高SLAM的鲁棒性
    1. 基于滤波的方法
      • MSCKF, SLAM in Project Tango
    2. 基于非线性优化的方法
      • OKVIS
  2. 没有真是IMU数据的情况下,能否工作?
    • Visual-Inertial SLAM方法广泛应用于机器人领域,这类方法使用IMU数据来提高鲁棒性。但是,在没有真实IMU数据的情况下,能否借鉴一些Visual-Inertial的方法来将SLAM做得更好呢?
    • RKSLAM就是解决了这个问题

Visual-Inertial SLAM

Visual SLAM技术的发展趋势

  1. 缓解特征依赖

    • 基于边的跟踪
    • 直接图像跟踪或半稠密跟踪
    • 结合机器学习和先验/语义信息
  2. 稠密三维重建

    • 单/多目实时三维重建
    • 基于深度相机的实时三维重建
    • 平面的表达和模型自适应简化
  3. 多传感器融合

    每个传感器都有优点和局限性,IMU误差累计快,GPS精度不高,目标是将各个传感器融合在一起,结合IMU、GPS、深度相机、光流计、里程计

未来的工作展望

  1. 协同SLAM
  2. 稠密SLAM
  3. 场景分析和理解
  4. 在VR、AR、机器人和无人驾驶领域进行应用
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

视觉SLAM技术及其应用(章国锋--复杂环境下的鲁棒SfM与SLAM) 的相关文章

  • evo安装、evo使用方法详细介绍使用教程,SLAM轨迹精度评估工具,如何用来评估ORB-SLAM2生成的轨迹精度,评估激光雷达SLAM与视觉SLAM的轨迹精度,量化SLAM的误差

    evo在视觉SLAM中是一个极为有用的工具 对于论文党 科研党 工程党都非常有帮助 它可以用于评估SLAM输出的轨迹的精度 可以自动生成均值 方差 轨迹等等信息的图或者表 总之评估SLAM精度用它足以 它目前支持的公开数据集格式有 TUM
  • SLAM方法汇总

    原文 http blog csdn net smartxxyx article details 53068855 目录 SLAM概述 SLAM一般处理流程包括track和map两部分 所谓的track是用来估计相机的位姿 也叫front e
  • 三维刚体变换

    欢迎访问我的博客首页 三维刚体变换 1 坐标系 1 1 空间坐标系 1 2 右手坐标系与像素坐标系 2 旋转与平移 2 1 推导旋转 2 2 推导平移 2 3 推导变换 2 4 刚体变换 2 5 坐标系旋转与向量旋转 3 链式变换 4 Ei
  • ubuntu系统下配置vscode编译cmake

    文章目录 一 配置vs code运行c 代码 三个关键文件介绍 1 tasks json run helloworld cpp 1 1 打开cpp文件 使其成为活动文件 1 2 按编辑器右上角的播放按钮 1 3生成task文件 1 4 此时
  • ROS激光SLAM导航理解

    ROS激光SLAM导航理解 注 最近学习ROS的激光导航知识 需要理清ROS的SLAM 环境感知 costmap 与导航算法 为防止自己忘记 将觉得有价值的内容收集于此 对AGV来说 SLAM是个大大坑 环境感知和局部运动控制也是大坑 学习
  • Event-based Stereo Visual Odometry(双目事件相机里程计)论文学习

    本文详细介绍一篇双目事件相机里程计的论文 Event based Stereo Visual Odometry 港科大沈邵劼团队Yi Zhou和TU Berlin的Guillermo Gallego共同完成 并公布了代码 我准备在接下来一段
  • np.meshgrid()函数 以及 三维空间中的坐标位置生成 以及 numpy.repeat()函数介绍

    一 np meshgrid 函数 1 np meshgrid 介绍 X Y np meshgrid x y 代表的是将x中每一个数据和y中每一个数据组合生成很多点 然后将这些点的x坐标放入到X中 y坐标放入Y中 并且相应位置是对应的 下面是
  • Sophus使用记录

    sophus库是一个基于Eigen的C 李群李代数库 可以用来方便地进行李群李代数的运算 头文件 主要用到以下两个头文件 include
  • 对最小二乘法的一点理解 - slam学习笔记

    我对最小二乘法的理解 在给定参数个数和函数模型之后 根据测试数据 找出与所有测试数据的偏差的平方和最小的参数 这里面应该有两个问题 1 为什么选取与真实数据平方和最小的拟合函数 2 如何求参数 为什么选取与真实数据平方和最小的拟合函数 极大
  • 深度相机Kinect2.0三维点云拼接实验(一)

    文章目录 摘要 Kinect2 0简介 工作原理 RGB相机成像原理 深度相机成像原理 总结 参考文献 摘要 Kinect2 0是微软推出的一款RGB D相机 它即支持普通相机的拍摄 也支持脉冲测量深度信息 本系列文章基于该传感器给出基本的
  • 图像匹配算法

    图像匹配算法分为3类 基于灰度的匹配算法 基于特征的匹配算法 基于关系的匹配算法 1 基于灰度的模板匹配算法 模板匹配 Blocking Matching 是根据已知模板图像到另一幅图像中寻找与模板图像相似的子图像 基于灰度的匹配算法也称作
  • 互转(经纬度、地心坐标、东北天坐标)

    Part1三种坐标系介绍 经纬度坐标 假设空间某点P 用经纬度表示的话 你们B代表纬度 L代表经度 H代表大地高 纬度B P点沿着地球法线方向与赤道面的夹角 向北为正称为北纬 0 90 向南为负称为南纬 0 90 实际表示可以用 90 90
  • 动态场景下基于实例分割的SLAM(毕业设计开题及语义分割部分)

    动态场景下基于实例分割的SLAM 毕业论文设计思路及流水 前言 今年选了个比较难的毕设题目 这里记录一下自己思路和流程 为之后的学弟学妹 划掉 铺个方向 会按日期不定期的更新 一 开题 2019 12 24 考研前选择课题是 利用深度学习对
  • 高斯牛顿法求非线性最小二乘的步骤和c++代码实现

    slam图优化的本质是一个非线性优化问题 Gauss Newton求解步骤 1 线性化误差函数 2 构建线性系统 3 求解线性系统 4 更新解 并不断迭代直至收敛 一个简单的代码实现 一维参数xy 高维变为对应的矩阵即可 include
  • GMAPPING的参数设置

    二 运行gmapping 我总结了运行gmapping的两种方法 1 基于命令行 rosrun gmapping slam gmapping scan scan delta 0 1 maxUrange 4 99 xmin 5 0 ymin
  • ORB-SLAM2:基于可识别特征的自主导航与地图构建

    ORB SLAM2 基于可识别特征的自主导航与地图构建 ORB SLAM Tracking and Mapping Recognizable Features 转自 http blog csdn net cicibabe article d
  • ORB_SLAM2运行官方数据集/自己数据集

    官方数据集运行结果 WeChat 20230210194425 可以正常运行 自己数据集运行结果 自己的数据集 主要是用手机摄像头采集的实验室进行了一下简单的运行 可以成功运行 但是由于查看的相关程序的是死循环不能像运行官方数据集那样完整保
  • Ubuntu18.04安装Autoware1.15(解决Openplanner无法绕障的问题:Openplanner2.5)

    文章目录 一 下载Autoware1 15源码 二 安装依赖 三 修改CUDA版本 四 编译以及报错解决 编译 1 报 undefined reference to cv Mat Mat 的错就按照下面方式改相应包 2 遇到OpenCV的C
  • 3.Open3D教程——点云数据操作

    点云数据 本教程阐述了基本的点云用法 随需要的文件链接 1 显示点云 import open3d as o3d import numpy as np print Load a ply point cloud print it and ren
  • 高翔博士Faster-LIO论文和算法解析

    说明 题目 Faster LIO 快速激光IMU里程计 参考链接 Faster LIO 快速激光IMU里程计 iVox Faster Lio 智行者高博团队开源的增量式稀疏体素结构 Faster Lio是高翔博士在Fast系列的新作 对标基

随机推荐

  • linux lvm在线扩容

    步骤 创建新的PV 将新的PV加入到当前VG 扩容现有LV 扩容文件系统 1 fdisk dev sda n 新增 p 主分区 大小自己调整 可以默认 记得用 t 转换格式为 8e lvm分区号 最后 w 保存 2 partprobe de
  • GitHub访问量超百万的阿里大佬总结图解Java小册火了,完整版限时开源

    什么是Java Java是Sun Microsystems于1995年首次发布的一种编程语言和计算平台 Java是快速 安全和可靠的 从笔记本电脑到数据中心 从游戏机到科学超级计算机 从手机到互联网 Java无处不在 Java的特点 Jav
  • npm依赖更新无效

    项目场景 项目是使用ice 2 0 0搭建的react项目 项目需要替换新版本的sdk 使用npm进行对应sdk的版本升级 问题描述 卸载sdk tnpm uninstall tds sdk 安装最新版本sdk tnpm i tds sdk
  • 互转(经纬度、地心坐标、东北天坐标)

    Part1三种坐标系介绍 经纬度坐标 假设空间某点P 用经纬度表示的话 你们B代表纬度 L代表经度 H代表大地高 纬度B P点沿着地球法线方向与赤道面的夹角 向北为正称为北纬 0 90 向南为负称为南纬 0 90 实际表示可以用 90 90
  • Error:(6, 46) java: 程序包org.springframework.context.annotation不存在

    IDEA 莫名其妙突然出现出错 Error 6 46 java 程序包org springframework context annotation不存在 经本地测试采用如下方法可以解决 1 修改在File gt settings gt Bu
  • MATLAB基础篇——基本语法

    MATLAB基础篇 基本语法 一 数据类型与变量 数据类型 变量 二 矩阵 字符串 三 运算 四 MATLAB常用函数 五 矩阵分析与处理 六 程序设计 七 符号计算 MATLAB Matrix laboratory 一般操作 1 操作界面
  • vue高级篇

    笔记 脚手架文件结构 node modules public favicon ico 页签图标 index html 主页面 src assets 存放静态资源 logo png component 存放组件 HelloWorld vue
  • 算法之路--高斯分布(一)

    正态分布 英语 normal distribution 又名高斯分布 英语 Gaussian distribution 是一个非常常见的连续概率分布 正态分布在统计学上十分重要 经常用在自然和社会科学来代表一个不明的随机变量 可以判断各种情
  • jenkins api获取构建日志_Jenkins master位于k8s集群外,实现jenkins slave的动态构建

    Jenkins基于 kubernetes plugin 与k8s集成 可以使Jenkins slave以pod的形式在k8s集群内部动态构建 运行 销毁等 通过 jenkinsci kubernetes plugin 了解到 Jenkins
  • arm-none-linux-gnueabi-gcc下载

    arm none linux gnueabi gcc是 Codesourcery 公司 目前已经被Mentor收购 基于GCC推出的的ARM交叉编译工具 可用于交叉编译ARM系统中所有环节的代码 包括裸机程序 u boot Linux ke
  • 分词汇总

    SCWS Author Hightman 算法 基于词频词典的机械中文分词引擎 采用的是采集的词频词典 并辅以一定的专有名称 人名 地名 数字年代等规则识别来达到基本分词 准确率 经小范围测试大概准确率在 90 95 之间 已能基本满足一些
  • 移动Web开发入门(三) -- touch事件

    文章目录 touch事件 touch事件分类 代码演示 页面效果 点击红色区域未移动 点击红色区域 移动到红色区域抬起 点击红色区域 移动到红色区域外抬起 在红色区域外点击 移动到红色区域抬起 在红色区域外点击 穿过红色区域移动到红色区域外
  • 在Qt中,信号(signal)是怎样传递的

    在Qt中 信号 signal 是利用Qt的事件系统实现的 当信号被发射时 Qt会将其转换为一个事件 并将其插入到应用程序的事件队列中 每个QObject对象都有一个事件接收函数 即QObject event 函数 用于接收和处理事件 当一个
  • 如何使用宝塔面板搭建网站(搭建宝塔页面)

    书接上回 咱们已经搭建好咱们的Linux服务器 接下来改是搭建宝塔页面的教程了 这里我们需要一个域名 自行去各家云服务器购买域名 例如 腾讯云 阿里云 华为云等等 购买一个域名之后我们就可以开始搭建了 首先 启动你的Linux服务器 在此页
  • 4、Nginx 配置实例-反向代理

    文章目录 4 nginx 配置实例 反向代理 4 1 反向代理实例一 4 1 1 实验代码 4 3 反向代理实例二 4 3 1 实验代码 尚硅谷 尚硅谷Nginx教程由浅入深 志不强者智不达 言不信者行不果 4 nginx 配置实例 反向代
  • 0401自学web后端之——Flask配置文件

    输出默认config from flask import Flask current app app Flask name with app app context print dict current app config ENV pro
  • 【转】BAT机器学习面试1000题系列(第288~305题)

    288 LSTM神经网络输入输出究竟是怎样的 YJango 本题解析来源 https www zhihu com question 419497412017年1月4日文章Recurrent Layers 介绍 第一要明确的是神经网络所处理的
  • 信息管理毕业设计选题推荐

    文章目录 0 前言 1 java web 管理系统 毕设选题 2 java web 平台 业务系统 毕设选题 3 游戏设计 动画设计类 毕设选题 适合数媒的同学 4 算法开发 5 数据挖掘 毕设选题 6 大数据处理 云计算 区块链 毕设选题
  • 爬虫之代理的问题解决

    爬虫之代理 昨天学习小甲鱼的代理 但是弄了一晚上也没成功 一会是什么不积极相应 一会又是什么远程主机拒绝访问 http 45 32 164 128 ip php是个能返回当前访问的IP的网址 123 163 27 115 9999 是我在h
  • 视觉SLAM技术及其应用(章国锋--复杂环境下的鲁棒SfM与SLAM)

    SLAM 同时定位与地图构建 机器人和计算机视觉领域的基本问题 在未知环境中定位自身方位并同时构建环境三维地图 应用广泛 增强现实 虚拟现实 机器人 无人驾驶 SLAM常用的传感器 红外传感器 较近距离感应 常用与扫地机器人 激光雷达 单线