视觉SLAM十四讲 读书编程笔记 Chapter10 后端1

视觉SLAM笔记(50) 线性系统和 KF 简化最大似然估计、线性高斯系统、卡尔曼滤波器、 推导KF 阅读详情

概述

概率估计的概率解释

在这里插入图片描述

线性系统和KF

经典线性卡尔曼滤波的概率推导:
在这里插入图片描述
在这里插入图片描述

非线性系统和EKF

对于非线性系统,扩展卡尔曼滤波的推导:
在这里插入图片描述

EKF的讨论

  • 假设了马尔科夫性。
  • EKF由于在局部点处进行泰勒展开,非线性误差是不容忽视的问题。
  • EKF需要在程序中存储和维护状态量的均值和方差,如果把路标也放进状态量中,那么计算复杂性会变得很大。

BA与图优化

投影模型与代价函数

  • 相机模型投影计算流程:在这里插入图片描述
    左侧的p是全局坐标系下的三维坐标点,右侧的us,vs是该点在图像平面上的最终像素坐标。中间畸变模块中的rc2=uc2+vc2
  • 观测方程的最小二乘问题构建
    在视觉SLAM中,观测量z=[us,vs]T,那么观测误差可以写为:
    在这里插入图片描述
    整体代价函数为:
    在这里插入图片描述
    其中zij表示位于位姿i除观测到了第j个路标点。对整体代价函数进行最小二乘求解,相当于对位姿和路标同时做了调整,这就是所谓的BA。

BA的求解

  • 把自变量定义成所有待优化的变量:
    在这里插入图片描述
  • 当给自变量一个增量的时候,目标函数变为:
    在这里插入图片描述
    其中Fij表示整个代价函数在当前状态下对相机姿态的偏导数,而Eij表示该函数对路标点位置的偏导。
  • 把相机位姿变量,空间点变量各自放在一起之后的目标函数:
    在这里插入图片描述
    在这里插入图片描述
    目标函数变为:
    在这里插入图片描述
    其中,雅克比矩阵E和F必须是整体目标函数对整体变量的导数。
  • 线性增量方程中的H矩阵形式
    线性增量方程:
    在这里插入图片描述
    整体的雅克比矩阵:
    在这里插入图片描述
    Gauss-Newton法的黑森矩阵:
    在这里插入图片描述
    这个矩阵将是非常大的具有特殊结构的矩阵,利用这个特殊结构,可以加速求解过程。

稀疏性和边缘化

  • H矩阵的稀疏性是由雅克比矩阵J(x)的稀疏性引起的。
    考虑代价函数中的一项eij,它所对应的的雅克比矩阵具有如下的形式:
    在这里插入图片描述
    可以看到,对于eij的雅克比矩阵,除了位于第i处位姿和第j个路标点位置的导数不为0,其余地方都为零。这体现了误差项与其他路标和轨迹无关的特性。

  • J引起H矩阵的稀疏性
    设Jij只在i,j处有非零块,那么它对H的贡献为JijTJij,这个JijTJij也仅有四个非零块,位于(i,i),(i,j),(j,i),(j,j)位置。
    在这里插入图片描述
    对于整体的H,由于:
    在这里插入图片描述
    可以对H进行分块:
    在这里插入图片描述

  • H具有稀疏结构
    将H进行分块之后,H11只与相机位姿有关,H22只与路标点有关。当遍历i,j时,以下事实总是成立:

  1. 不管I,j怎么变,H11都是对角阵,只在Hi,i处有非零块.
  2. 同理,H22也是对角阵,只在Hj,j处有非零块.
  3. 对于H12和H21,他们可能是稀疏的,也可能是稠密的,视具体的观测数据而定.
  • 一个简单的H具有稀疏结构的说明例子
    假设一个场景内有2个相机位姿(C1,C2)和6个路标(P1,P2,P3,P4,P5,P6).相机C1观测到路标P1,P2,P3,P4,相机C2观测到路标P3,P4,P5,P6在这里插入图片描述
    可以推出,该场景下BA目标函数为:
    在这里插入图片描述
    其中e11描述了C1看到了P1这件事情,与其他的相机位姿和路标无关。把所有的变量按照如下的顺序排放:
    在这里插入图片描述
    那么,e11的雅克比矩阵J11可以表示为:
    在这里插入图片描述
    形象地表示为:
    在这里插入图片描述
    那么,整体雅克比矩阵以及黑森矩阵可以形象地表示为:
    在这里插入图片描述
    对于H矩阵当中处于非对角线的矩阵块来说,如果该矩阵块非零,则其位置对应的变量之间在图中会存在一条边,如下图e26所示:
    在这里插入图片描述
  • 一般情况下的H矩阵的稀疏性
    设有m个相机位姿,n个路标点,通常情况下n远远大于m,所以H矩阵左上角块显得非常小,而右下角的对角块占据了大量的地方,就像一个箭头,可以成之为箭头形矩阵,如下图所示:
    在这里插入图片描述
  • 边缘化或Schur消元
    我们把矩阵H进行如下的区域划分:
    在这里插入图片描述
    对应的线性方程组由H delta_x = g变为如下形式:
    在这里插入图片描述
    其中,B是对角块矩阵,每个对角块的维度和相机参数的维度相同,对角块的个数等于相机变量的个数。同理,C也是对角块矩阵,由于三维空间中的每个路标点为三维,所以每个块为3*3的矩阵,同样的,C的规模远远大于B。
    因为,对角块矩阵求逆的难度远小于对一般矩阵的求逆难度,因为我们只需要对那些对角线矩阵块分别求逆即可。考虑到这个特性,我们对线性方程组进行高斯消元,目标是消去右上角的非对角部分E:
    在这里插入图片描述
    经过消元之后,方程组第一行变成和delta xp无关的项。单独把它拿出来,得到关于位姿部分的增量方程:
    在这里插入图片描述
    我们求解这个方程,得到delta xc,然后将其带入到原方程求解出delta xp,这个过程就是Schur消元或者边缘化。
  • 边缘化或Schur的优势
  1. 在消元过程中,由于C为对角块,C-1容易解出
  2. 求解了delta xc之后,路标部分的增量方程由delta xp = C-1(w - ETdelta xc)给出,这依然用到了C-1易于求解的特性。
  • delta xc的求解
    在这里插入图片描述
    上述方程没有可用的特殊结构,是一个普通的线性方程,记此方程的系数为S,它的稀疏性也具有特定的物理意义。S矩阵的非对角线上的非零矩阵块,表示该处对应的两个相机之间存在着共同观测的路标点。
  • 概率角度解释边缘化
    之所以称为边缘化,是因为把求(delta xc,delta xp)的问题,转化成了先求delta xc,再求delta xp的过程,这相当于做了条件概率展开:
    P(xc,xp) = P(xc)P(xp|xc)
    不考虑xp的影响,求出xc,这相当于求出了关于xc的边缘分布,故称边缘化。

鲁棒核函数

将最小化误差项的二范数平方和作为目标函数,存在一个严重的问题:如果出于误匹配等原因,某个误差项给的数据是错误的,算法会认为这是一条误差很大的边,梯度也很大,不得已顺应这条边的无理要求,使调整失败。
出现这种问题的原因是,当误差很大时,二范数增长得太快。解决办法就是将增长得太快的二范数换成一个增长没那么快的函数,同时保证自己的光滑性质。因为它们使得整个优化结果更为稳健,所以又叫它们鲁棒核函数。
鲁棒核函数有很多种,比如Huber核:
在这里插入图片描述
在这里插入图片描述

实践:g2o

出现错误:
在这里插入图片描述
./g2o_customBundle: error while loading shared libraries: libg2o_core.so: cannot open shared object file: No such file or directory
解决办法:
执行如下命令,再重新运行即可

sudo ldconfig

运行结果:
在这里插入图片描述在这里插入图片描述

实践:Ceres

在这里插入图片描述
在这里插入图片描述

08-SD卡-TF卡硬件电路设计 SD卡-TF卡硬件电路设计 阅读详情

相关推荐

IP路由原理、静态路由及动态路由区分

什么是路由 路由是指导IP报文发送的路径信息。 直连路由:目的地所在网络与路由器直接相连。 间接路由:目的地所在网络与路由器非直接相连。 静态路由是由管理员手工配置而生成的路由。 动态路由路由器使用路由协议从其他路由器那里获悉的路由。

weixin_42227328的博客 5471

激光SLAM后端优化总结之图优化

优化问题,可以用图的方式表示,图的节点是需要优化的变量,边是优化变量之间的约束。节点可以是位姿,也可以是landmark;边可以是位姿之间的关系也可以是观测量;

SLAM小学僧 4324

再生龙(clonezilla)镜像比目标盘大——基于centos8.5

再生龙恢复到小盘遇到的问题及处理,首先是修改分区大小,进入dracut模式后再尝试恢复临时系统。

u010101453的博客 3692

《视觉SLAM十四讲》第八讲-libg2o_core.so: cannot open shared object file: No such file or directory

《视觉SLAM十四讲》第八讲-libg2o_core.so: cannot open shared object file: No such file or directory

qq_39779233的博客 847

从原理到实战:ARS548 4D毫米波雷达数据处理与多模态融合全解析

本文深入解析了4D毫米波雷达ARS548的工作原理与数据处理全流程。从FMCW测距测速、MIMO虚拟天线阵列到点云生成的三步FFT处理,提供了详尽的Python代码实现。文章进一步探讨了与激光雷达、相机的多模态时空对齐与融合策略,并指导如何构建用于自动驾驶感知训练的多模态标注数据集,为相关算法工程师提供了从理论到实践的完整指南。

weixin_29161719的博客 369

EDSR图像超分辨程序复现(踩坑及解决记录)

EDSR图像超分辨程序复现(踩坑及解决记录)

Sunny_Coder的博客 3643

视觉SLAM⑨后端Ⅰ(KF、EKF、非线性优化)

1.理解后端的概念 2.理解以EKF为代表的滤波器后端的工作原理 3.理解非线性优化的后端,明白稀疏性是如何利用的

qq_41694024的博客 3781

达妙电机MIT模式调参实战:如何从‘曲线偏离’到‘完美追踪’正弦波?

本文详细解析了达妙电机MIT模式调参实战,从曲线偏离到完美追踪正弦波的方法论。通过MATLAB实时曲线分析,深入探讨位置环(kp)和速度环(kd)的双重调节技巧,帮助工程师优化参数组合,提升电机控制精度和稳定性。

weixin_29053073的博客 737

视觉SLAM面试题汇总(三)

北京某自动驾驶公司: 1. 点云的聚类;求法向量;多个点集,求点集的法向量; 2. LM算法里面lamda的作用; 3. KD-Tree 4. 描述子距离的匹配的方法?除了暴力匹配还有什么方法?(提示:点对匹配的集中方式:暴力匹配;FLANN匹配;使用词袋模型进行初步筛选的匹配;重投影的匹配) 5. ORB-SLAM中特征匹配 6. 四叉树特征点均匀化原理 7. 对于非二进制的描述子,如sift描述子,是如何计算出他们之间的距离的? 8. 哈希表 9. ORB-SLAM2的整体流程 ..

qq_38167930的博客 4785

2.4G板载PCB IFA天线仿真设计

本文简单介绍下2.4GHz的板载PCB IFA天线的HFSS仿真与设计。

射频问问 (RFASK.NET) 是在"微波射频网(MWRF.NET)”系列原创技术专栏基础上升级打造的技术问答学习平台。 6016

YOLOv8改进 | 主干网络 | 增加网络结构增强小目标检测能力【独家创新——附结构图】

YOLOv8改进,小目标检测,yolov8

kay_545 6022

《视觉SLAM十四讲 第二版》笔记及课后习题(第一讲)

前言 之所以想要写这个系列的博客,是因为想要总结一下高博的《SLAM视觉十四讲第二版》的各章内容以及自己对书后习题的一些做法,也算是对自己学习过程的一个总结和回顾。那么,正式开始! 第一讲、预备知识 SLAM 是Simultaneous Localization and Mapping 的缩写,中文译作“同时定位与地图构建”。它是指搭载特定传感器的主体,在没有环境先验信息的情况下,于运动过程中建...

weixin_43619346的博客 4459

【图像超分】论文精读:SRConvNet: A Transformer-Style ConvNet for Lightweight Image Super-Resolution

本文提出了一种轻量级图像超分辨率重建方法SRConvNet,结合了卷积神经网络和Transformer的优势。针对传统Transformer计算复杂度高的问题,设计了傅立叶调制注意力(FMA)替代自注意力机制,通过区域频率空间调制实现高效的全局依赖建模;同时引入动态混合层(DML),采用混合尺度动态卷积结合通道拆分机制增强局部特征提取。实验表明,SRConvNet在计算效率和参数数量上显著优于现有轻量级超分方法,同时保持了优异的重建性能。该方法为移动端部署提供了有效的解决方案,在精度与复杂度间取得了良好平衡

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 808

《视觉SLAM十四讲 第二版》笔记及课后习题(第二讲)

读书笔记: 这一讲算是全书的一个大纲,最关键的就是介绍了经典视觉SLAM框架。 小萝卜的例子 小萝卜要解决的问题分为两个: 要明白自身的状态 这就是location 要明白外在的环境 这就是mapping 对于视觉SLAM而言,熟悉各类相机的优缺点很有必要: SLAM问题的数学表述: 运动方程和观测方程: 经典视觉SLAM框架: 我们把整个视觉 SLAM 流程分为以下几步: 传感器...

weixin_43619346的博客 4037

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

《视觉SLAM十四讲 第二版》笔记及课后习题(第七讲)

读书笔记:视觉里程计1

weixin_43619346的博客 4539

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

《视觉SLAM十四讲 第二版》笔记及课后习题(第十二讲)

读书笔记:建图

weixin_43619346的博客 3109

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

视觉SLAM十四讲 读书编程笔记 Chapter 1&2

视觉SLAM十四讲 读书编程笔记 Chapter 1&21.有线性方程组Ax=b,若已知A,b,需要求解x,该如何求解?这对A和b有哪些要求?2.单目SLAM有哪些特性?3.双目相机有哪些特性?4.整体视觉SLAM流程图5.视觉SLAM流程图的一些理解6.SLAM问题的数学表达 1.有线性方程组Ax=b,若已知A,b,需要求解x,该如何求解?这对A和b有哪些要求? 答:x=A-1b,其中A...

wolfcsharp的博客 899

《视觉SLAM十四讲 第二版》笔记及课后习题(第十讲)

读书笔记:后端2 上讲我们重点介绍了以BA 为主的图优化。BA 能精确地优化每个相机位姿与特征点位置。不过在更大的场景中,大量特征点的存在会严重降低计算效率,导致计算量越来越大以至于无法实时化。本讲介绍两种在更大场景下使用的后端优化方法:位姿图。 位姿图(Pose Graph) Pose Graph即是省略了特征点的Bundle Adjustment。 Pose Graph 示意图。当我们不再优化...

weixin_43619346的博客 1948

视觉SLAM十四讲(2):初识SLAM

这一讲主要介绍视觉SLAM的结构,并完成第一个SLAM程序:HelloSLAM。 目录 2.1 小萝卜的例子 单目相机 双目相机 深度相机 2.2 经典视觉SLAM框架 2.3 SLAM问题的数学表述 2.4 编程实践 Hello SLAM 使用cmake 使用库 【高翔】视觉SLAM十四讲 2.1 小萝卜的例子 这一节高翔博士首先介绍了自己组装的“小萝卜”机器人,小萝卜要想具有自主运动的能力,首先要知道自身的姿态,然后是了解外界的环境。这两类问题都需要使用传感器,视觉SL.

10点43的博客 3418

《视觉SLAM十四讲 第二版》笔记及课后习题(第十一讲)

读书笔记:回环检测

weixin_43619346的博客 1855

视觉SLAM十四讲 读书编程笔记 Chapter11 后端2

Chapter11 后端2位姿图位姿图的意义位姿图的优化 位姿图 位姿图的意义 随着时间的流逝,空间点和相机位姿数据不断增多,BA的计算效率会不断下降。 实际上,经过若干次优化迭代之后,空间位置估计会收敛至一个值保持不动。因此,我们更倾向于在优化几次之后就把特征点固定住,只把它们看作位姿估计的约束,而不再实际地优化它们的空间位置。 我们可以构建一个只有轨迹的图优化,而位姿节点之间的边,可以由两个关...

wolfcsharp的博客 607

【读书笔记】《视觉SLAM十四讲(高翔著)》 第7讲

文章目录7.1 特征点法 (P132)7.2 实践:特征提取和匹配 (P138) 7.1 特征点法 (P132) 视觉SLAM→前端(视觉里程计VO)→特征点法(主流)、直接法 →后端 【7.1.1 特征点】 特征点概念的引入:特征点——图像中比较有代表性的点。特征点应该在相机运动之后保持稳定。 目前知名的特征点:SIFT SURF ORB等,这些人工设计的特征点具备如下性质:可重复性,可区别性...

dahailuoa6的博客 785

《第10讲 后端1》 读书笔记

本文是《视觉SLAM十四讲》第10讲的个人读书笔记,为防止后期记忆遗忘写的。 本节知识脉络 前面前端的内容,只能求出短时间或者说相邻两帧的转换关系,并建立局部意义的地图。然而当时间延长或者规模变大之后,那么将会出现累积误差。而后端就是要解决这个长时间、大规模建图的问题。 对于问题的解决,后端分为批量和渐进两种解决方法。其中渐进是以卡尔曼滤波为代表,而批量是以非线性优化(BA、图优化等)为代表...

LWHGMAN的博客 2165

《视觉SLAM十四讲 第二版》笔记及课后习题(第九讲)

读书笔记:后端1 本讲开始,我们转入SLAM 系统的另一个重要模块:后端优化。 我们看到,前端视觉里程计能给出一个短时间内的轨迹和地图,但由于不可避免的误差累积,这个地图在长时间内是不准确的。所以,在视觉里程计的基础上,我们还希望构建一个尺度、规模更大的优化问题,以考虑长时间内的最优轨迹和地图。不过,考虑到精度与性能的平衡,实际当中存在着许多不同的做法。 ...

weixin_43619346的博客 2495

视觉Slam十四讲读书笔记

视觉Slam十四讲读书笔记 文章目录视觉Slam十四讲读书笔记@[toc]2 初识SLAM2.4 编程基础2.4.2 hello slam2.4.3 cmake编译2.4.4 使用库2.3 SLAM问题的数学表达3 三维空间刚体运动3.1 旋转矩阵3.3 旋转向量和欧拉角3.3.1 旋转向量3.3.2 欧拉角3.4 四元数3.5 相似、仿射、射影4 李群与李代数6 非线性优化6.1 状态估计问题6.1.1 最大后验与最大似然6.1.2 最小二乘法引入6.2 非线性最小二乘6.2.1 一阶二阶梯度6.2.2

weixin_43521275的博客 250

《视觉SLAM十四讲》学习笔记

双目相机:由已知i基线的双单目组成,通过基线(双单目间距)估计各像素空间位置,但配置与标定较为复杂,视差计算耗费资源,深度量程和精度受双目基线和分辨率限制。(1)g++ stoi.cpp -o stoi -std=c++11 使用标准c++11来编译程序, 将stoi.cpp 编译为名为stoi的可执行文件。SLAM问题其实就是状态估计问题,一致运动测量读数u和传感器读数z,求解定位问题和建图问题,对x和y进行估计。功能:主要有O1,O2,O3,Os,分别优化大小,功能,功能,大小。

qq_51164061的博客 557
上一篇: 视觉SLAM十四讲 读书编程笔记 Chapter6 非线性优化
下一篇: 视觉SLAM十四讲 读书编程笔记 Chapter11 后端2
Leo-Ma
博客等级 码龄11年 1701粉丝 124原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值