【视觉SLAM入门】4. 从状态估计到非线性最小二乘推演------状态估计,最大后验,最大似然,最小二乘,高维高斯分布,非线性优化推导

news/2024/12/22 17:26:27/

"国君含诟"

  • 0. 引入
  • 1. 状态估计
  • 2. 具体求解状态估计==>最小二乘引出

注意: 本节及下一节,我们将会围绕该问题展开---- 噪声中恢复数据进行视觉 S L A M \color {red}噪声中恢复数据进行视觉SLAM 噪声中恢复数据进行视觉SLAM

0. 引入

\;\;\; 至此,(视觉)理想且经典的SLAM问题已经弄清楚了
\;\;\; 之前SLAM的运动和观测都是基于理想情况下的,实际中我们要做的是在噪声数据中恢复理想情况的数据,由于同一时刻观测到不同的点 且 同一点会被观测多次,这为我们带来了更多约束,便于我们进行下来的任务—在实际的噪声环境中考虑SLAM任务。

1. 状态估计

  • 带有顺序的推导,请顺序观看。

\quad 只有图像没有运动传感器时,仅考虑观测方程。
z k , j = h ( y j , x k ) + v k , j 这里设噪声 v 符合高斯分布 v k ∈ N ( 0 , Q k , j ) x = { x 1 , . . . , x N , y 1 , . . . , y M } “状态变量”:要估计的量即位姿和实际点坐标 z_{k,j} = h(y_j, x_k)+v_{k,j}\qquad 这里设噪声v符合高斯分布 \;v_k \in N(0,Q_{k,j}) \\\quad\\x=\begin{Bmatrix}x_1,...,x_N,y_1,...,y_M\end{Bmatrix}\qquad “状态变量”:要估计的量即位姿和实际点坐标 zk,j=h(yj,xk)+vk,j这里设噪声v符合高斯分布vkN(0,Qk,j)x={x1,...,xN,y1,...,yM}状态变量:要估计的量即位姿和实际点坐标
构成一个三维重建中的SFM(Structrue from motion)问题,我们要做的是实时求解SFM问题而已(在多张知道时间先后顺序的图片中恢复结构(这里就是恢复地图点(当然,你知道我说的是世界坐标系下))),问题转换为如下:
P ( x ∣ z , u ) = 无运动传感器 , 无 u P ( x ∣ z ) = 贝叶斯 P ( z ∣ x ) P ( x ) P ( z ) ∝ 分母和和待估计状态无关 P ( z ∣ x ) P ( x ) P(x|z, u)\overset{无运动传感器,无u}{=}\color{red}P(x|z) \overset{贝叶斯}{=}\frac{P(z|x)P(x)}{P(z)} \color{b}\overset{分母和和待估计状态无关}{\propto}P(z|x)P(x) \\ P(xz,u)=无运动传感器,uP(xz)=贝叶斯P(z)P(zx)P(x)分母和和待估计状态无关P(zx)P(x)
红色部分就是贝叶斯公式,它描述的是 “用数据来修正先验得到后验概率的过程”。简单说一下:

  • P ( x ∣ z ) P(x|z) P(xz):后验概率, P ( z ∣ x ) \quad P(z|x) P(zx):似然, P ( x ) \quad P(x) P(x):先验

我们要求的问题则为(观测数据已知):

x M A P ∗ = a r g m a x P ( x ∣ z ) = a r g m a x P ( x ∣ z ) P ( x ) \color{red}x^*_{MAP} \color{b}= argmax\;P(x|z) = argmax\;P(x|z)P(x) xMAP=argmaxP(xz)=argmaxP(xz)P(x)
\quad 这就是最大后验概率:求一个状态最优估计(等式右边),使得在该状态下,后验概率(等式左)最大化 (Maximize a Posterior, MAP)


而实际中,机器人的位姿大概位置也不知道(没有先验),则上式变为求解:

x M L E ∗ = a r g m a x P ( z ∣ x ) \color{red}x^*_{MLE}\color{b}=argmax \; P(z|x) xMLE=argmaxP(zx)
\quad 这就是最大似然估计(Maximize Likelihood Estimation, MLE): 没有先验的时候,即 x \;x x 也未知。

\quad 直观上看该问题:观测数据已知的时候,在什么样的状态下,最有可能产生现在观测到的数据


这篇文章讲贝叶斯和最大似然这些东西比较通俗易懂,不会的可以看一下,本身也比较简单,只是讲清楚比较麻烦。

2. 具体求解状态估计==>最小二乘引出

前边假设误差符合高斯,则实际上运动方程符合高维高斯分布,那么上边的最大似然也符合,即:
P ( z j , k ∣ x k , y j ) = 符合高斯分布 N ( h ( y j , x k ) , Q k , j ) P(z_{j,k}|x_k,y_j) \overset{符合高斯分布}{=} N(h(y_j,x_k),Q_{k,j})\qquad P(zj,kxk,yj)=符合高斯分布N(h(yj,xk),Qk,j)

  • 其中的 h ( y j , x k ) \;h(y_j,x_k) h(yj,xk) 是运动方程中的理想情况即高斯理想均值, Q k , j \;Q_{k,j} Qk,j 是运动方程中的误差项,但是高维。

首先回忆一下高维高斯分布吧:概率密度函数如下( Σ 称为协方差矩阵 \Sigma称为协方差矩阵 Σ称为协方差矩阵):
P ( x ) = 1 ( 2 π ) N ⋅ d e t ( Σ ) e x p ( − 1 2 ( x − μ ) T Σ − 1 ( x − μ ) ) P(x) = \frac{1}{\sqrt {(2\pi)^N \cdot det(\Sigma)}}exp(-\frac{1}{2}(x-\mu)^T\Sigma^{-1}(x-\mu)) P(x)=(2π)Ndet(Σ) 1exp(21(xμ)TΣ1(xμ))
求解该高斯问题的最大值,一般最小化负对数
− l n ( P ( x ) ) = 1 2 l n ( ( 2 π ) N ⋅ d e t ( Σ ) ) + 1 2 ( x − μ ) T Σ − 1 ( x − μ ) -ln(P(x)) = \frac{1}{2}ln((2\pi)^N \cdot det(\Sigma))+\frac{1}{2}(x-\mu)^T\Sigma^{-1}(x-\mu) ln(P(x))=21ln((2π)Ndet(Σ))+21(xμ)TΣ1(xμ)
二次型 \color{red}二次型 二次型一般这样:
x T A x x^TAx xTAx

将我们上边的推理的状态分布带入该高维高斯分布的最小化负对数等式中:
x ∗ = a r g m i n ( ( z k , j − h ( x k , y j ) ) T ⋅ Q k , j − 1 ⋅ ( z k , j − h ( x k , y j ) ) ) ⇓ 因为第一项与 x 无关,所以只要最小化等式右侧二次型项即可 ⇓ 其实这件事等价于最小化误差的平方 ( 范数意义下 ) 这个括号里的 z k , j 恰好是观测, h ( x k , y j ) 刚好是真实值,印证了上述的误差 x^* = argmin\;((z_{k,j}-h(x_k,y_j))^T\cdot Q^{-1}_{k,j}\cdot (z_{k,j}-h(x_k,y_j))) \\\quad \\\Downarrow 因为第一项与x无关,所以只要最小化等式右侧二次型项即可 \\\Downarrow 其实这件事等价于最小化误差的平方(范数意义下) \\\quad \\ 这个括号里的 \;z_{k,j}恰好是观测,h(x_k,y_j)刚好是真实值,印证了上述的误差 x=argmin((zk,jh(xk,yj))TQk,j1(zk,jh(xk,yj)))因为第一项与x无关,所以只要最小化等式右侧二次型项即可其实这件事等价于最小化误差的平方(范数意义下)这个括号里的zk,j恰好是观测,h(xk,yj)刚好是真实值,印证了上述的误差

\quad 那么对于任意运动和观测方程,定义它们分别的误差:

{ e v , k = x k − f ( x k − 1 , v k ) 运动误差,一帧图像相机只有一个位姿 e y , j , k = z k , j − h ( x k , y j ) 观测误差,一帧图像有多个点 ⇓ 求误差的平方和( a s w e a l l k n o w : A t A = A 的平方) J ( x ) = ∑ k e v , k T R k − 1 e v , k + ∑ k ∑ j e y , k , j T Q k , j − 1 e y , k , j 其中的 R k 代表运动方程的误差所符合的高斯分布的误差项 同理 Q k , j 代表运动方程的误差所符合的高斯分布的误差项 \begin{cases} e_{v,k} = x_k - f(x_{k-1}, v_k)\quad 运动误差,一帧图像相机只有一个位姿 \\e_{y,j,k} = z_{k,j} - h(x_k,y_j) \quad 观测误差,一帧图像有多个点 \end{cases} \\ \quad \\ \Downarrow 求误差的平方和(as\;we\;all\;know:A^tA=A的平方) \\ \quad \\J(x) = \sum_ke^T_{v,k}R_k^{-1}e_{v,k}+\sum_k\sum_je_{y,k,j}^TQ^{-1}_{k,j}e_{y,k,j} \\其中的R_{k}代表运动方程的误差所符合的高斯分布的误差项 \\同理Q_{k,j}代表运动方程的误差所符合的高斯分布的误差项 {ev,k=xkf(xk1,vk)运动误差,一帧图像相机只有一个位姿ey,j,k=zk,jh(xk,yj)观测误差,一帧图像有多个点求误差的平方和(asweallknow:AtA=A的平方)J(x)=kev,kTRk1ev,k+kjey,k,jTQk,j1ey,k,j其中的Rk代表运动方程的误差所符合的高斯分布的误差项同理Qk,j代表运动方程的误差所符合的高斯分布的误差项

这是SLAM中通用的最小二乘问题(Least Square Problem)。根据以上推导, J ( x ) J(x) J(x) 的最优解就等价于状态的最大似然估计。
即一个非线性优化问题:微调状态估计值,使得误差下降到一个极小值的过程。
由于它的每个误差项仅于一两个状态有关,采取参数块的方式进行分块求各个误差的雅克比矩阵然后再带入整体的雅克比矩阵中。

  • 对于变换的表述,李代数的使用可以使它没有约束。

至此,我们的问题转为研究一个 无约束的,非线性的最小二乘问题


下一节推理非线性最小二乘问题的求解,下一节再更吧,我要去写论文了,等我再更新的时候,就是我论文写完的时候。我先随便扔个链接哈哈。


http://www.ppmy.cn/news/815603.html

相关文章

计算机无法识别佳能5d2,计算机无法识别所有的Usb设备

在手工删除量产工具添加的驱动mpfilt.sys,并在注册表中删除对于该文件的引用后,重新启动计算机,结果无法识别所有的usb设备,usb鼠标都不亮,无法使用,在设备管理器里面,所有的Intel(R) ICH9 Fami…

【一天三道算法题】代码随想录刷题——Day2

一.移除元素 题目链接:力扣 思路: 0.做这道题之前要知道一个先决条件:数组在内存中是连续的,不能单独删除数组中的某个元素,我们只能覆盖。 1.这道题可以用暴力解法去做,两个for循环,外层负责…

认识MQTT(C语言)

MQTT基础概念 MQTT 入门介绍 | 菜鸟教程 MQTT使用 在linux下搭建MQTT服务器(Broker) 在linux下执行下面命令安装MQTT服务器 📎mosquitto-1.6.3.tar.gzhttps://www.yuque.com/attachments/yuque/0/2023/gz/35243076/1687955850547-b594126…

android+4.4+稳定性,新系统新UI!台电A10h四核安卓4.4.2性能测试

国内著名商标,数码用户首选品牌的台电科技在12月20日全国首发了安卓4.4.2系统,并且运行台电全新tUI同时,支持从安卓4.2系统OTA一键升级至安卓4.4.2系统!作为国内首款升级到目前全球最新的Android4.4.2系统之后,整体性能…

台电P89s mini root教程

根据论坛内的一些内容再结合自己的使用心得整理如下,本人双11购入P89s mini root成功 自带软件什么的都不见了以下是个人root过程,有不一样的地方欢迎交流,说实话我也不是很懂1、升级原厂1.03固件版本至1.06版本(看有人说需要升级…

在山脉数组中查找元素Leetcode162,Leetcode 852,Leetcode1095和Leetcode941

一、在山脉数组中查找峰值元素 典型的题目有:Leetcode 162. 寻找峰值 和 Leetcode 852. 山脉数组的峰顶索引,都是要找出数组中峰值元素的索引。峰值元素的取值比它两边的元素要大,就像山峰的峰顶一样,因此这种数组也被称为山脉数…

数据结构 查找

一.查找的基本概念 在计算机科学中,查找是一种在数据结构中寻找特定值的过程。在编程中,查找可以用于在数组、列表、树等数据结构中搜索特定值。不同的查找算法有不同的时间和空间复杂度,因此在选择查找算法时需要根据数据结构和查询需求来权…