SLAM中的块矩阵与schur补

文章目录

    • SLAM中的块矩阵与schur补
      • Schur补的另一种解释
      • 对角块矩阵的逆为各个块的逆的组合

SLAM中的块矩阵与schur补

Schur补的另一种解释

Schur从概率角度来解释是比较常见的一种推导,可以参考博客https://blog.csdn.net/weixin_41469272/article/details/121994485,此外也可以通过消元与回代的基本原理得到相同的结论。

首先设我们需要求解以下问题:
[ A B C D ] [ x 1 x 2 ] = [ v w ] \begin{bmatrix}A&B\\C&D\end{bmatrix}\begin{bmatrix}x_{1}\\x_{2}\end{bmatrix}=\begin{bmatrix}v\\w\end{bmatrix} [ACBD][x1x2]=[vw]
通常对于SLAM问题,信息矩阵中的{ B = C T B=C^T B=CT}, A , D A,D AD为可逆(对称)方阵

可以得到:
A x 1 + B x 2 = v C x 1 + D x 2 = w Ax_{1}+Bx_{2}=v\\Cx_{1}+Dx_{2}=w Ax1+Bx2=vCx1+Dx2=w
设我们需要marg掉 x 2 x_2 x2,或者先求解 x 1 x_1 x1 H Δ x = b H\Delta x=b HΔx=b问题),

我们对第一行左右两侧均乘以 B D − 1 BD^{-1} BD1,继而可以得到:
B D − 1 C x 1 + B D − 1 D x 2 = B D − 1 w ⇒ B x 2 = B D − 1 w − B D − 1 C x 1 BD^{-1}Cx_{1}+BD^{-1}Dx_{2}=BD^{-1}w \Rightarrow Bx_{2}=BD^{-1}w-BD^{-1}Cx_{1} BD1Cx1+BD1Dx2=BD1wBx2=BD1wBD1Cx1

带入 C x 1 + D x 2 = w Cx_{1}+Dx_{2}=w Cx1+Dx2=w得:
( A − B D − 1 C ) x 1 = v − B D − 1 w (A-BD^{-1}C)x_{1}=v-BD^{-1}w (ABD1C)x1=vBD1w

从而可以看出,我们通过回代同样得到了Schur补的情况。从而,我们可以知道无论是边缘化变量,还是更新参数的 H Δ x = b H\Delta x=b HΔx=b的分块求解问题,归根到底都可以理解为变量的消元问题。

对角块矩阵的逆为各个块的逆的组合

对于给定的 ( 9 × 9 9 \times 9 9×9) 矩阵:

B = [ A 1 0 0 0 A 2 0 0 0 A 3 ] B = \begin{bmatrix} A_{1} & 0 & 0 \\ 0 & A_{2} & 0 \\ 0 & 0 & A_{3} \end{bmatrix} B= A1000A2000A3

其中 A 1 A_1 A1, A 2 A_2 A2, 和 A 3 A_3 A3 均为可逆的 3 × 3 3 \times 3 3×3 矩阵,可以通过求解块对角矩阵的逆来找到 B B B的逆。

1. 块对角矩阵的逆

对于一个块对角矩阵:

B = [ A 1 0 0 0 A 2 0 0 0 A 3 ] B = \begin{bmatrix} A_{1} & 0 & 0 \\ 0 & A_{2} & 0 \\ 0 & 0 & A_{3} \end{bmatrix} B= A1000A2000A3

其逆矩阵也是一个块对角矩阵,其形式为:

B − 1 = [ A 1 − 1 0 0 0 A 2 − 1 0 0 0 A 3 − 1 ] B^{-1} = \begin{bmatrix} A_{1}^{-1} & 0 & 0 \\ 0 & A_{2}^{-1} & 0 \\ 0 & 0 & A_{3}^{-1} \end{bmatrix} B1= A11000A21000A31

2. 证明

X X X B B B 的逆矩阵,即 B X = I BX = I BX=I,其中 I I I 9 × 9 9 \times 9 9×9 的单位矩阵。

考虑以下矩阵乘法:

[ A 1 0 0 0 A 2 0 0 0 A 3 ] [ A 1 − 1 0 0 0 A 2 − 1 0 0 0 A 3 − 1 ] = [ A 1 A 1 − 1 0 0 0 A 2 A 2 − 1 0 0 0 A 3 A 3 − 1 ] = [ I 3 0 0 0 I 3 0 0 0 I 3 ] \begin{bmatrix} A_{1} & 0 & 0 \\ 0 & A_{2} & 0 \\ 0 & 0 & A_{3} \end{bmatrix} \begin{bmatrix} A_{1}^{-1} & 0 & 0 \\ 0 & A_{2}^{-1} & 0 \\ 0 & 0 & A_{3}^{-1} \end{bmatrix} = \begin{bmatrix} A_{1}A_{1}^{-1} & 0 & 0 \\ 0 & A_{2}A_{2}^{-1} & 0 \\ 0 & 0 & A_{3}A_{3}^{-1} \end{bmatrix} = \begin{bmatrix} I_{3} & 0 & 0 \\ 0 & I_{3} & 0 \\ 0 & 0 & I_{3} \end{bmatrix} A1000A2000A3 A11000A21000A31 = A1A11000A2A21000A3A31 = I3000I3000I3

这里的 I 3 I_{3} I3 3 × 3 3 \times 3 3×3 的单位矩阵。

可以看到,右边的矩阵确实是 9 × 9 9 \times 9 9×9 的单位矩阵 I I I。因此,

[ A 1 − 1 0 0 0 A 2 − 1 0 0 0 A 3 − 1 ] \begin{bmatrix} A_{1}^{-1} & 0 & 0 \\ 0 & A_{2}^{-1} & 0 \\ 0 & 0 & A_{3}^{-1} \end{bmatrix} A11000A21000A31

是 B$ 的逆矩阵。

因而型如以下的SLAM求解问题,可以使用schur补+对角块矩阵逆的特性,高效求解
[ B E E T C ] [ Δ x c Δ x p ] = [ 2 20 ] \left[\begin{matrix}B&E\\E^{T}&C\end{matrix}\right]\left[\begin{matrix}\Delta x_{c}\\\Delta x_{p}\end{matrix}\right]=\left[\begin{matrix}2\\20\end{matrix}\right] [BETEC][ΔxcΔxp]=[220]
其中, Δ x c \Delta x_{c} Δxc对应传感器位姿变量的更新量; Δ x c \Delta x_{c} Δxc特征点位置对应的更新量。SLAM问题中的信息矩阵的结构对应如下图所示,其中关于特征点的部分(该矩阵中的C块矩阵)为对角块矩阵。

Schur补得到:
[ B − E C − 1 E T 0 E T C ] [ Δ x c Δ x p ] = [ v − E C − 1 w w ] . \begin{bmatrix}B-EC^{-1}E^T&\mathbf{0}\\E^T&C\end{bmatrix}\left[\begin{array}{c}\Delta\boldsymbol{x}_c\\\Delta\boldsymbol{x}_p\end{array}\right]=\left[\begin{array}{c}\boldsymbol{v}-\boldsymbol{E}C^{-1}\boldsymbol{w}\\\\\boldsymbol{w}\end{array}\right]. [BEC1ETET0C][ΔxcΔxp]= vEC1ww .

从而可以将求逆问题简化为对角块矩阵求逆的问题,先得到 Δ x c \Delta\boldsymbol{x}_c Δxc
[ B − C − 1 E T ] Δ x c = v − E C − 1 w . [B-C^{-1}E^T]\Delta\boldsymbol{x}_c=\boldsymbol{v}-EC^{-1}\boldsymbol{w}. [BC1ET]Δxc=vEC1w.

而后,再带入 B Δ x c + E Δ x p = v B\Delta\boldsymbol{x}_c+E\Delta\boldsymbol{x}_p=\boldsymbol{v} BΔxc+EΔxp=v计算得到 Δ x p \Delta\boldsymbol{x}_p Δxp

此外,也可以利用SAM的方法参考链接,经过因式分解,得到上三角阵,而后使用回代的方法进行求解。

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

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

相关文章

若依搭建 帝可得 售货机 笔记

一、搭建项目 1.后端gitee链接: 启动项目时记得修改mysql和redis的相关信息;创建项目相关数据库,并导入初始化的SQL脚本 dkd-parent: 帝可得后台管理系统 (gitee.com) 2.前端gitee链接: 启动项目时记得安装依赖:np…

Github Action 自动部署更新静态网页服务

本文首发于 Anyeの小站,点击跳转 获得更优质的阅读体验 前言 贴一段胡话 在用过 应用:静态网页服务 之后,事实证明: 总而言之,自动化是一个很令人着迷的东西,摆脱重复繁琐的工作,解放了双手的…

JCR一区 | Matlab实现GAF-PCNN-MATT、GASF-CNN、GADF-CNN的多特征输入数据分类预测/故障诊断

JJCR一区 | Matlab实现GAF-PCNN-MATT、GASF-CNN、GADF-CNN的多特征输入数据分类预测/故障诊断 目录 JJCR一区 | Matlab实现GAF-PCNN-MATT、GASF-CNN、GADF-CNN的多特征输入数据分类预测/故障诊断分类效果格拉姆矩阵图GAF-PCNN-MATTGASF-CNNGADF-CNN 基本介绍程序设计参考资料 分…

【45 Pandas+Pyecharts | 去哪儿海南旅游攻略数据分析可视化】

文章目录 🏳️‍🌈 1. 导入模块🏳️‍🌈 2. Pandas数据处理2.1 读取数据2.2 查看数据信息2.3 日期处理,提取年份、月份2.4 经费处理2.5 天数处理 🏳️‍🌈 3. Pyecharts数据可视化3.1 出发日期_…

华南师范大学“大学生校外实践教学基地”授牌仪式暨见习参观活动圆满结束

为促进校企合作的深入发展,培育出具有实际应用技能的人才,7月9日,华南师范大学数学科学院与广东泰迪智能科技股份有限公司联合开展“大学生校外实践教学基地”授牌仪式暨见习参观活动。华南师范大学数学科学院数据科学系主任陈艳男、副主任陈…

深入理解model.eval()与torch.no_grad()

model.eval() 使用model.eval()切换到测试模式,不会更新模型的w(权重),b(偏置)参数通知dropout层和batchnorm层在train和val中间进行切换: 在train模式,dropout层会按照设定的参数p…

Idea 2023 使用GitLab提交代码提示输入Token

项目场景: 今天电脑换硬盘了,安装了 IDEA2023 款的社区版开发工具,下载代码后,提交并推送代码到远程服务器的时候,提示输入Token,并不是用户名和密码。 问题描述 推送代码到远程GitLab本地仓库的时候&…

单链表--续(C语言详细版)

2.6 在指定位置之前插入数据 // 在指定位置之前插入数据 void SLTInsert(SLTNode** pphead, SLTNode* pos, SLTDataType x); 分为两种情况:1. 插入的数据在链表中间;2. 插入的数据在链表的前面。 // 在指定位置之前插入数据 void SLTInsert(SLTNode** …

AI绘画何以突飞猛进? 从历史到技术突破, 一文读懂火爆的AI绘画发展史

前言 自从前段时间偶然间被当下AI绘画的水平震住之后(超越一切的AI作画神器,和它创作的234个盔甲美女未来战士) ,作者深感当今AI绘画的飞速进展或许已远超所有人的预期。 而这里的前因后果,包括AI绘画的历史&#xff…

十九.升职加薪系列-JVM优化-解决JVM性能瓶颈的JIT即时编译器

前言 在很多年以前,做C或者C的程序员经常说Java语言的运行速度不如C或C,Java运行速度慢主要是因为它是解释执行的,而C或C是编译执行的,解释执行需要通过JVM虚拟机将字节码实时翻译成机器码(边翻译边执行)&…

Rust 版本升级:rustup update stable 报错

Rust 版本升级 rustup update stable 报错 一、报错内容 error: could not download file from ‘https://static.rust-lang.org/dist/channel-rust-stable.toml.sha256’ to ‘/Users/xxx/.rustup/tmp/rv6vdfu3eupwo64m_file’: failed to make network request: error sendi…

【实战场景】@Transactional中使用for update的注意点

【实战场景】Transactional中使用for update的注意点 开篇词:干货篇:知识回顾注意点1.锁的范围和粒度:2.事务的隔离级别:3.死锁:4.性能影响:5.事务的边界:6.异常处理:7. 数据库和存储…

【漏洞复现】网神 SecGate 3600 防火墙 sys_export_conf_local_save 任意文件读取

免责声明: 本文内容旨在提供有关特定漏洞或安全漏洞的信息,以帮助用户更好地了解可能存在的风险。公布此类信息的目的在于促进网络安全意识和技术进步,并非出于任何恶意目的。阅读者应该明白,在利用本文提到的漏洞信息或进行相关测…

javaweb学习day5--《HTML篇》Springboot的模块创建、HTML的相关知识点详解

一、前言 从今天开始,就要启动后端的学习了,Springboot会贯穿到底,一定要跟着小编严谨的去搭建Springboot环境,依赖添加的过程可能需要2分钟左右,读者们要耐心等待一下,搭建好Springboot之后才算正式的开始…

算力革命:弹性租赁,解锁无限可能

华为创始人任正非曾在一场程序设计竞赛中说道,我们即将进入第四次工业革命,基础就是大算力。事实上,随着5G、人工智能等信息技术的迅猛发展,算力需求持续增长,但高昂的成本和快速的技术迭代让许多中小企业和个人开发者…

Covalent Network(CXT)通过社区投票将代币迁移并更名为 CXT,以推动人工智能更深层次的创新

专注于人工智能和 Web3 的模块化数据基础设施 Covalent Network(CXT)宣布,其治理提案已通过社区投票并顺利实施,即将原生代币 CQT 迁移为新的 CXT 代币,并部署至新的合约。这一关键性转变标志着 Covalent Network&…

git删除提交记录,并使用idea将代码重新提交到gitee仓库

git 新建分支将之前的记录删除重新提交 转载链接 https://blog.csdn.net/qq_37142541/article/details/139860956

03-NoSQL之Redis配置与优化

一、redis与memcache总体对比 1.性能 Redis:只使用单核,平均每一个核上Redis在存储小数据时比Memcached性能更高。 Memcached:可以使用多核,而在100k以上的数据中,Memcached性能要高于Redis。 2.内存使用效率 MemC…

springboot文达办公物资管理系统-计算机毕业设计源码51191

摘要 本文介绍了一种名为"文达办公物资管理系统"的基于JAVA语言、基于Springboot框架和MYSQL数据库开发的管理系统。该系统主要分为管理员和员工用户两个角色,以满足不同用户的需求。 对于管理员用户,系统提供了仪器设备管理、设备借用管理、设…

【大数据技术】换新电脑了,如何快速迁移MySQL到新电脑上(含程序+数据),这样既快速又高效,省去了“各种安装+各种配置+各种迁移数据”带来的麻烦和时间

【大数据技术】换新电脑了,如何快速迁移MySQL到新电脑上(含程序数据 背景步骤总结 背景 很久没有写博文了哦,最近我换了新的笔记本,于是需要在新笔记本电脑上搭建MySQL环境,因为我原电脑上是安装的MySQL解压版,故我想偷偷懒&…