首页 > 其他分享 >视觉SLAM十四讲学习笔记-非线性优化的状态估计问题

视觉SLAM十四讲学习笔记-非线性优化的状态估计问题

时间:2024-09-03 15:52:11浏览次数:16  
标签:方程 非线性 笔记 观测 相机 估计 SLAM 位姿

视觉SLAM十四讲学习笔记-非线性优化的状态估计问题

经典SLAM模型的位姿可以由变换矩阵来描述,然后用李代数进行优化。观测方程由相机成像模型给出,其中内参是随相机固定的,而外参则是相机的位姿。由于噪声的存在,运动方程和观测方程的等式必定不是精确成立的。得到的数据通常是受各种未知噪声影响的。即使有高精度的相机,运动方程和观测方程也只能近似成立。所以问题是如何在有噪声的数据中进行准确的状态估计,这需要一定程度的最优化背景知识。

附赠自动驾驶最全的学习资料和量产经验:链接

6.1 状态估计问题

6.1.1 批量状态估计与最大后验估计

经典 SLAM 模型由一个运动方程和一个观测方程构成:

image

xk是相机的位姿变量,可以由Tk∈SE(3)表达。运动方程与输入的具体形式有关,在视觉SLAM中没有特殊性(和普通的机器人、车辆的情况一样)。观测方程则由针孔模型给定。假设在xk处对路标yj进行了一次观测,对应到图像上的像素位置z_k,j_,那么,观测方程可以表示成

image

其中K为相机内参,s_为像素点的距离,也是(R_k_y_j +t_k_)的第三个分量。如果使用变换矩阵Tk描述位姿,那么路标点yj必须以齐次坐标来描述,计算完成后要转换为非齐次坐标

在运动和观测方程中,通常假设两个噪声项wk,_v_k,j满足零均值的高斯分布:

image

其中N表示高斯分布,0表示零均值,Rk,Qk,j为协方差矩阵。在这些噪声的影响下,希望通过带噪声的数据z和u推断位姿x和地图y(以及它们的概率分布),这构成了一个状态估计问题。

处理这个状态估计问题的方法分成两种。

第一种:由于在SLAM过程中,这些数据是随时间逐渐过来的,所以在直观上,应该持有一个当前时刻的估计状态,然后用新的数据来更新它。这种方式称为增量(incremental)的方法,或者叫滤波器。在SLAM的早期研究,主要使用扩展卡尔曼滤波器(EKF)及其衍生方法来求解。

第二种:是把数据累加起来一并处理,这种方式称为批量(batch)的方法。例如

标签:方程,非线性,笔记,观测,相机,估计,SLAM,位姿
From: https://blog.csdn.net/liuphahaha/article/details/141863994

相关文章

  • 笔记 | Angular 实现 keep-alive (路由复用)
    Angular的路由复用策略(RouteReuseStrategy)是一种用于优化路由跳转性能和提高用户体验的机制。通过实现RouteReuseStrategy接口,后可以自定义路由的复用行为,避免不必要的组件销毁和重建,同时保持组件的状态。以下是对Angular路由复用策略的详细介绍:一、基本概念RouteReuseStrateg......
  • win10更新为win11后OneNote笔记全部消失的完整解决方案
    目录背景解决步骤1:下载OneNoteforWindows10,找到笔记HereisthelinktooldOneNoteforWindows10app解决步骤2:导出找到的笔记使用OneNote网页版导出笔记解决步骤3:导入找到的笔记至新版OneNote解决报错:直接copy一份副本至当前笔记本背景电脑更新为win11后,我打开OneNote准......
  • [编程笔记] 从 bcp 客户端收到一个对 colid 7 无效的列长度
    最近在做一个工具改造,实现A库数据导B库的功能。今天遇到一个奇怪问题,“从bcp客户端收到一个对colid7无效的列长度”。代码是从A库执行SELECT语句到本地DataTable,再将DataTable插入到B库,插入的过程是通过SqlBulkCopy实现的,这样做的好处是不用写INSERT语句,只......
  • OpenFeign深入学习笔记
    OpenFeign是一个声明式的Web服务客户端,它使得编写Web服务客户端变得更加容易。OpenFeign是在SpringCloud生态系统中的一个组件,它整合了Ribbon(客户端负载均衡器)和Eureka(服务发现组件),从而简化了微服务之间的调用。在SpringCloud应用中,我们经常会使用OpenFeign,比如......
  • 2024/09/03笔记
    开发---测试-----运维----UI排期巡检绿色,黄色,红色IDE:/dev/hd,hda,hda1,hda2,hdc1SATA/SAS/SCSI:/dev/sda,sda1PCI-E3.03000Mb/S4.05000-70005.07000-1W/dev/vdavda1virtual/dev/xvdaxen(笨重)---KVMvirtual瀑布式开发敏捷式开发----持续集成:将小模块......
  • OpenFeign深入学习笔记
    OpenFeign是一个声明式的Web服务客户端,它使得编写Web服务客户端变得更加容易。OpenFeign是在SpringCloud生态系统中的一个组件,它整合了Ribbon(客户端负载均衡器)和Eureka(服务发现组件),从而简化了微服务之间的调用。在SpringCloud应用中,我们经常会使用OpenFei......
  • C++学习笔记(四)类和对象
    类和对象C++对象模型和this指针成员变量和成员函数的存储C++中的成员变量和成员函数是分开存储的,只有非静态成员变量才属于类的对象上classPerson{intm_Age;//非静态成员变量staticintm_B;//静态成员变量voidfunc(){//不属于类的对象上}staticv......
  • 笔记:《利用Python进行数据分析》之透视表和交叉表
    透视表和交叉表透视表(pivottable)是各种电子表格程序和其他数据分析软件中一种常见的数据汇总工具。它根据一个或多个键对数据进行聚合,并根据行和列上的分组键将数据分配到各个矩形区域中。在Python和pandas中,可以通过本章所介绍的groupby功能以及(能够利用层次化索引的)重塑运......
  • 算法题笔记
    时间和空间复杂度:referdoc小记:时间复杂度是用大写的“O”来表示的,比如:O(1),O(n),O(logn),O(nlogn),O(n²)等常量可以被忽略。例如5n,换成大O表示法就是O(n)。对于算法的空间复杂度也可以简单的进行总结一下:如果申请的是有限个数(常量)的变量,空间复杂度为O(1)。如果申请的......
  • 读书笔记:高效C/C++调试
    高效C/C++调试(美)严琦、卢宪廷目录第1章调试符号和调试器11.1调试符号11.1.1调试符号概览2全局变量文件行号数据类型1.1.2DWARF格式31.2实战故事1:数据类型的不一致141.3调试器的内部结构161.3.1用户界面161.3.2符号管理模块161.3.3目标管理模块......