【视觉SLAM】1-概述

读书笔记

文章目录

  • 1. 经典视觉SLAM框架
  • 2. 数学表述
    • 2.1 运动方程
    • 2.2 观测方程
    • 2.3 问题抽象

1. 经典视觉SLAM框架

在这里插入图片描述

  • 传感器信息读取:相机图像、IMU等多源数据;
  • 前端视觉里程计(Visual Odometry,VO):估计相机的相对运动,生成局部地图,VO又称为前端(Front End);
  • 后端非线性优化(Optimization):接收不同时刻VO测量的相机位姿、回环检测信息,进行联合优化,得到全局一致的轨迹和地图,又称为后端(Back End);
  • 回环检测(Loop Closure Detection):判断机器人是否到达过先前的位置,若检测到回环,则把信息交由后端处理(对VO轨迹产生的累积漂移(Accumulating Drift)误差进行校正);
  • 建图(Mapping):根据估计的轨迹,建立与任务要求对应的地图。

SLAM中地图的形式主要分为度量地图拓扑地图两种:

  • 度量地图(Metric Map):强调精确表示地图中物体的位置关系,通常用稀疏(Sparse)与稠密(Dense)对其分类。选择一部分具有代表意义的物体称为路标(Landmark)(特征点、点云?);
  • 拓扑地图(Topological Map):强调地图元素之间的关系,它是一个图(Graph),由节点和边组成,只考虑节点间的连通性。

2. 数学表述

对于由相机和各类传感器如IMU组成的机器人来说,其在环境中的运动数据可通过两个途径获得:①由传感器数据估计,称为运动;②由相机图像数据估计,称为观测。为了对这两个过程进行数学表述,做如下定义:

  • 在机器人的连续时间运动内取离散时刻 t = 1 , ⋯ , K t=1, \cdots, K t=1,,K
  • x x x 表示机器人自身位置,则其各时刻位置记为 x 1 , ⋯ , x K x_1, \cdots, x_K x1,,xK
  • N N N个路标点表示为 y 1 , ⋯ , y N y_1, \cdots, y_N y1,,yN

分别用运动方程 f ( ⋅ ) f(\cdot) f()观测方程 h ( ⋅ ) h(\cdot) h() 来描述上述两个过程,这两个函数都是一种通用方程表示,这里不用纠结其具体表达式。

2.1 运动方程

x k = f ( x k − 1 , u k , ω k ) x_k=f(x_{k-1},u_k,\omega_k) xk=f(xk1,uk,ωk)
其中, u k u_k uk为运动传感器的输入, ω k \omega_k ωk为该过程的噪声。

2.2 观测方程

机器人在 x k x_k xk位置看到路标 y j y_j yj时,产生观测数据 z k , j z_{k,j} zk,j
z k , j = h ( y j , x k , v k , j ) z_{k,j}=h(y_j,x_k,v_{k,j}) zk,j=h(yj,xk,vk,j)
其中, v k , j v_{k,j} vk,j为观测噪声。

2.3 问题抽象

上述两方程描述了最基本的SLAM问题:已知运动测量读数 u u u、传感器读数 z z z时,如何求解定位问题(估计 x x x)和建图问题(估计 y y y)?

这时,可把SLAM问题建模成一个状态估计问题:如何通过带有噪声的测量数据,估计内部的、隐藏的状态变量。

按照运动和观测方程是否为线性噪声是否服从高斯分布进行分类,上述状态估计问题可分为线性/非线性高斯/非高斯系统。其中线性高斯系统(Linear Gaussian,LG)最简单,其无偏的最优估计可由卡尔曼滤波(Kalman Filter,KF)给出;而复杂的非线性非高斯系统(Non-Linear Non-Gaussian,NLNG)中,可使用扩展卡尔曼滤波器(Extended Kalman Filter,EKF)和非线性优化两大类方法求解。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/471647.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

探索 Python HTTP 的瑞士军刀:Requests 库

文章目录 探索 Python HTTP 的瑞士军刀:Requests 库第一部分:背景介绍第二部分:Requests 库是什么?第三部分:如何安装 Requests 库?第四部分:Requests 库的基本函数使用方法第五部分&#xff1a…

Redisson的可重入锁

初始状态: 表示系统或资源在没有线程持有锁的情况下的状态,任何线程都可以尝试获取锁。 线程 1 获得锁: 线程 1 首次获取了锁并进入受保护的代码区域。 线程 1 再次请求锁: 在持有锁的情况下,线程 1 再次请求锁&a…

基于微信小程序的平安驾校预约平台的设计与实现(源码+LW++远程调试+代码讲解等)

摘 要 互联网发展至今,广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对高校教师成果信息管理混乱,出错率高,信息安全性差,劳动强度大,费时费力…

FFmpeg 4.3 音视频-多路H265监控录放C++开发十三.2:avpacket中包含多个 NALU如何解析头部分析

前提: 注意的是:我们这里是从avframe转换成avpacket 后,从avpacket中查看NALU。 在实际开发中,我们有可能是从摄像头中拿到 RGB 或者 PCM,然后将pcm打包成avframe,然后将avframe转换成avpacket&#xff0…

从0学习React(11)

1. 引言 上个星期的工作内容是写IT资产管理的前端页面。其实,尽管我之前有一些前端开发的经验,但并不是很多。这次让我独立完成一个页面的开发,刚开始时我感到无从下手。 2. 初期的困惑和焦虑 我记得在星期一和星期二的时候,那…

BILSTM法律网站用户提问自动分类

项目源码获取方式见文章末尾! 600多个深度学习项目资料,快来加入社群一起学习吧。 《------往期经典推荐------》 项目名称 1.【基于CNN-RNN的影像报告生成】 2.【卫星图像道路检测DeepLabV3Plus模型】 3.【GAN模型实现二次元头像生成】 4.【CNN模型实现…

unity 一个物体随键盘上下左右旋转和前进的脚本

注意:脚本挂在gamaobject 上面 ,操作对象的目标 this.gameObject 为操作对象 using System.Collections; using System.Collections.Generic; using UnityEngine;public class changePosition : MonoBehaviour {//操作对象的目标 this.gameObject 为操…

【论文阅读】Virtual Compiler Is All You Need For Assembly Code Search

阅读笔记:Virtual Compiler Is All You Need For Assembly Code Search 1. 研究背景 逆向工程:逆向工程需要在庞大的二进制文件中快速定位特定功能(例如恶意行为)。传统方法依赖于经验和启发式算法,效率低下。汇编代码搜索:通过自然语言搜索汇编代码功能,能够更高效地处…

Wireshark中的length栏位

注:Ethernet II的最小data length为46,如果小于,会补全到46. 1.指定网卡抓取的,链路为ethernet。 IPv4 Ethernet II 长度为 14 bytes - L1ipv4 header中的length包括header和payload的总长度 - L2wireshark中length表示抓取的pac…

CentOS网络配置

上一篇文章:VMware Workstation安装Centos系统 在CentOS系统中进行网络配置是确保系统能够顺畅接入网络的重要步骤。本文将详细介绍如何配置静态IP地址、网关、DNS等关键网络参数,以帮助需要的人快速掌握CentOS网络配置的基本方法和技巧。通过遵循本文的…

前端搭建低代码平台,微前端如何选型?

目录 背景 一、微前端是什么? 二、三大特性 三、现有微前端解决方案 1、iframe 2、Web Components 3、ESM 4、EMP 5、Fronts 6、无界(文档) 7、qiankun 四、我们选择的方案 引入qiankun并使用(src外层作为主应用) 主应…

CSS:怎么把网站都变成灰色

当大家看到全站的内容都变成了灰色,包括按钮、图片等等。这时候我们可能会好奇这是怎么做到的呢? 有人会以为所有的内容都统一换了一个 CSS 样式,图片也全换成灰色的了,按钮等样式也统一换成了灰色样式。但你想想这个成本也太高了…

基于Spring Boot的计算机课程管理:工程认证的实践

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统,它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等,非常…

flinkOnYarn并配置prometheus+grafana监控告警

flinkOnYarn并配置prometheusgrafana监控告警 一、相关服务版本: flink版本:1.17.2 pushgateway版本:1.10.0 prometheus版本:3.0.0 grafana-v11.3.0参考了网上的多个文档以及学习某硅谷的视频,总结了一下文档&#x…

在esxi8.0中安装黑群晖的过程记录及小问题处理

问题记录 1.某种原因在网页中安装系统后,发现synology搜出来的设备还是169的地址,但是点击设置需要输入管理员账号密码才能设置ip,试了一下,账号输入admin,密码留空正常设置。 2.晚上试了一下,在全新的esxi…

基于微信小程序的公务员考试学习平台的设计与实现,LW+源码+讲解

摘 要 小程序公考学习平台使用Java语言进行编码,使用Mysql创建数据表保存本系统产生的数据。系统可以提供信息显示和相应服务,其管理小程序公考学习平台信息,查看小程序公考学习平台信息,管理小程序公考学习平台。 总之&#x…

深度学习之pytorch常见的学习率绘制

文章目录 0. Scope1. StepLR2. MultiStepLR3. ExponentialLR4. CosineAnnealingLR5. ReduceLROnPlateau6. CyclicLR7. OneCycleLR小结参考文献 https://blog.csdn.net/coldasice342/article/details/143435848 0. Scope 在深度学习中,学习率(Learning R…

2024 年(第 7 届)“泰迪杯”数据分析技能赛B 题 特殊医学用途配方食品数据分析 完整代码 结果 可视化分享

一、背景特殊医学用途配方食品简称特医食品,是指为满足进食受限、消化吸收障碍、代谢素乱或者特定疾病状态人群对营养素或者膳食的特殊需要,专门加工配置而成的配方食品,包括0月龄至12月龄的特殊医学用途婴儿配方食品和适用于1岁以上的特殊医…

数据产品:深度探索与案例剖析

​在当今数字化时代,数据产品正逐渐成为各行业发展的关键驱动力。让我们深入了解数据产品的分类与特点,以及通过典型案例分析,感受数据产品的强大魅力。 首先,数据产品主要分为报表型、分析型、平台型等不同类别。 报表型数据产品…

opc da 服务器数据 转 IEC61850项目案例

目录 1 案例说明 2 VFBOX网关工作原理 3 应用条件 4 查看OPC DA服务器的相关参数 5 配置网关采集opc da数据 6 用IEC61850协议转发数据 7 网关使用多个逻辑设备和逻辑节点的方法 8 在服务器上运行仰科OPC DA采集软件 9 案例总结 1 案例说明 在OPC DA服务器上运行OPC …