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.xdnf.cn/news/1475153.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

BaseServlet的封装

创建BaseServlet的必要性 如果不创建BaseServlet,现在我们只要实现一个功能,我们就需要创建一个servlet! 例如:用户模块(登录,注册,退出录,激活,发送邮件等等功能) 也就是说,我们必须要创建一…

Vue3使用ref绑定组件获取valueRef.value为null的解决

问题: onMounted(() > {nextTick(()>{console.log(treeselectRef, treeselectRef.value);console.log(treeselectRef.value, treeselectRef.value);}); });输出: 查看绑定和定义都没有问题,还是获取不到 解决:使用getCur…

YOLOv5+DecoupleHead解耦头(YOLOx)

一、解耦头原理 在目标检测中,分类任务和回归任务之间的冲突是一个众所周知的问题。因此,用于分类和定位的解耦头被广泛应用于大多数一级和二级探测器。但是,由于YOLO系列的主干和特征金字塔(如FPN, PAN)不断演化,它们的检测头仍然是耦合的。 从下表可以看出,头耦合时端…

leetcode 1398 购买了产品A和产品B却没有购买产品C的顾客(postgresql)

需求 Customers 表: ---------------------------- | Column Name | Type | ---------------------------- | customer_id | int | | customer_name | varchar | ---------------------------- customer_id 是这张表的主键。 customer_name 是顾客的名称。 Order…

水果商城系统 SpringBoot+Vue

1、技术栈 技术栈:SpringBootVueMybatis等使用环境:Windows10 谷歌浏览器开发环境:jdk1.8 Maven mysql Idea 数据库仅供学习参考 【已经答辩过的毕业设计】 项目源码地址 2、功能划分 3、效果演示

【软件分享】我们为分类而生—eCognition

分类是各位小伙伴入门遥感需要做的一项基础的工作,在进行遥感影像中的地物进行分类和提取时,如何提高分类精度,常常令人头疼。今天小编带来此前接触过的一个工具,他的名字是—eCognition,感觉比ENVI好用,在…

gui创新点charts图表

import javax.swing.*; import java.awt.*;public class ComboChartExample extends JPanel {Overrideprotected void paintComponent(Graphics g) {super.paintComponent(g);// 数据int[] values {100, 200, 150, 300, 250};int[] lineValues {120, 180, 160, 280, 230};Str…

掌上教务系统-计算机毕业设计源码84604

摘要 在数字化教育日益成为主流的今天,教务管理系统的智能化和便捷性显得尤为重要。为满足学校、教师、学生及家长对教务管理的高效需求,我们基于Spring Boot框架设计并实现了一款掌上教务系统。该系统不仅具备课程分类管理功能,使各类课程信…

Git 查看、新建、删除、切换分支

Git 是一个版本控制系统,软件开发者用它来跟踪应用程序的变化并进行项目协作。 分支的诞生便于开发人员在彼此独立的环境中进行开发工作。主分支(通常是 main 或 master)可以保持稳定,而新的功能或修复可以在单独的分支中进行开发…

猫咪健康新选择!福派斯鲜肉猫粮里的果蔬纤维大揭秘

你们是不是对福派斯鲜肉猫粮中那些丰富的果蔬粗纤维特别好奇呢?🤔 其实,这些看似简单的粗纤维,对猫咪的健康可是大有裨益的! 粗纤维在猫粮中起到多种重要作用,并且对猫咪的健康和消化系统有着显著的影响。以…

运维系列.Nginx中使用HTTP压缩功能

运维专题 Nginx中使用HTTP压缩功能 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite:http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this article:https://blog.csdn.net/qq_28550…

linux 安装Openjdk1.8

一、在线安装 1、更新软件包 sudo apt-get update 2、安装openjdk sudo apt-get install openjdk-8-jdk 3、配置openjdk1.8 openjdk默认会安装在/usr/lib/jvm/java-8-openjdk-amd64 vim ~/.bashrc export JAVA_HOME/usr/lib/jvm/java-8-openjdk-amd64 export JRE_HOME${J…

计算机网络-组播数据转发原理

一、组播数据转发原理 前面已经学习了组播的基本概念和网络组成结构了,今天来学习下组播数据的转发。首先我们要先明确组播网络也是和单播一样需要网络可达的,因此也是需要单播网络支持的基础上配置组播转发数据。单播网络不通组播网络就没有意义了。 组…

docker 本地部署大模型(ollama)

docker 安装 ollama docker search ollama docker pull ollama/ollama###docker下载ollama部署 docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama### 下载模型 docker exec -it ollama ollama pull llama3### 交互式运行模型docker exec -i…

Python采集京东标题,店铺,销量,价格,SKU,评论,图片

京东的许多数据是通过 JavaScript 动态加载的,包括销量、价格、评论和评论时间等信息。我们无法仅通过传统的静态网页爬取方法获取到这些数据。需要使用到如 Selenium 或 Pyppeteer 等能够模拟浏览器行为的工具。 另外,京东的评论系统是独立的一个系统&a…

SCI一区TOP|准随机分形搜索算法(QRFS)原理及实现【免费获取Matlab代码】

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2024年,LA Beltran受到分形几何、低差异序列启发,提出了准随机分形搜索算法(Quasi-random Fractal Search, QRFS)。 2.算法原理 2.1算法思…

本地图片压缩工具

一、简介 1、一款免费的本地图片压缩工具,支持多种图片格式并且没有体积限制,支持批量压缩。本地运行的方式保护了图片的隐私。它兼容 JPG、PNG、GIF、SVG 等多种格式,并允许用户设置压缩强度、尺寸和输出格式 二、下载 1、文末有下载链接,不明白可以私聊我哈(麻烦咚咚咚,…

一.2.(4)放大电路静态工作点的稳定;

1.Rb对Q点及Au的影响 输入特性曲线:Rb减少,IBQ,UBEQ增大 输出特性曲线:ICQ增大,UCEQ减少 AUUO/Ui分子减少,分母增大,但由于分子带负号,所以|Au|减少 2.Rc对Q点及Au的影响 输入特性曲…

【TB作品】51单片机 Proteus仿真00016 乒乓球游戏机

课题任务 本课题任务 (联机乒乓球游戏)如下图所示: 同步显示 oo 8个LED ooooo oo ooooo 8个LED 单片机 单片机 按键 主机 从机 按键 设计题目:两机联机乒乓球游戏 图1课题任务示意图 具体说明: 共有两个单片机,每个单片机接8个LED和1 个按键,两个单片机使用串口连接。 (2)单片机…

UE C++ 多镜头设置缩放 平移

一.整体思路 首先需要在 想要控制的躯体Pawn上,生成不同相机对应的SpringArm组件。其次是在Controller上,拿到这个Pawn,并在其中设置输入响应,并定义响应事件。响应事件里有指向Pawn的指针,并把Pawn的缩放平移功能进行…