因子图优化

news2024/10/2 10:41:17

最大后验概率估计问题

我们常将状态估计问题建模为最大后验估计(MAP)。之所以命名为最大后验估计,是因为它在给定了观测 Z \bm Z Z的情况下,最大化状态 X \bm X X的后验概率密度 p ( X ∣ Z ) p(\bm X|\bm Z) p(XZ)
X M A P = arg ⁡ max ⁡ X p ( X ∣ Z ) = arg ⁡ max ⁡ X p ( Z ∣ X ) p ( X ) p ( Z ) \begin{aligned} \bm X^{\rm MAP}&=\arg\max_{\bm X}p(\bm X|\bm Z)\\ &=\arg\max_{\bm X}\dfrac{p(\bm Z|\bm X)p(\bm X)}{p(\bm Z)} \end{aligned} XMAP=argXmaxp(XZ)=argXmaxp(Z)p(ZX)p(X)
上式利用了贝叶斯法则,将后验概率密度表示为观测概率密度 p ( Z ∣ X ) p(\bm Z|\bm X) p(ZX)与状态的先验概率密度 p ( X ) p(\bm X) p(X)的乘积,再利用因子 p ( Z ) p(\bm Z) p(Z)进行归一化。当给定观测 Z \bm Z Z时,归一化项就与最大后验概率无关,可以被忽略。将最大后验估计表述为另一种形式:
X M A P = arg ⁡ max ⁡ X l ( X ; Z ) p ( X ) \bm X^{\rm MAP}=\arg\max_{\bm X}l(\bm X;\bm Z)p(\bm X) XMAP=argXmaxl(X;Z)p(X)
这里,是给定观测 Z \bm Z Z的情况下状态量 X \bm X X的似然估计,被定义为任意一个与 p ( Z ∣ X ) p(\bm Z|\bm X) p(ZX)成正比的函数:
l ( X ; Z ) ∝ p ( Z ∣ X ) l(\bm X;\bm Z)\propto p(\bm Z|\bm X) l(X;Z)p(ZX)
符号 l ( X ; Z ) l(\bm X;\bm Z) l(X;Z)也强调了似然估计是关于 X \bm X X的函数,而不是关于 Z \bm Z Z的函数。并非状态 X X X中的每一部分都和所有观测相关,因此根据变量块的独立性可以将 p ( X ∣ Z ) p(\bm X|\bm Z) p(XZ)分解为 p ( X ∣ Z ) = ∏ i p ( x i ∣ z i ) p(\bm X|\bm Z)=\prod_i p(\bm x_i|\bm z_i) p(XZ)=ip(xizi),等同于 l ( X ; Z ) = ∏ i l ( x i ; z i ) l(\bm X;\bm Z)=\prod_i l(\bm x_i;\bm z_i) l(X;Z)=il(xi;zi)

设观测模型为
z i = h i ( x i ) + η i \bm z_i = h_i(\bm x_i)+\bm \eta_i zi=hi(xi)+ηi

在多数情况下,认为观测值受到均值为零的高斯噪声干扰。其中 h i ( ⋅ ) h_i(\cdot) hi()是观测函数,噪声 η i \bm \eta_i ηi由协方差矩阵为 R i \bm R_i Ri的零均值高斯分布描述。对于观测量 z i \bm z_i zi条件概率 p ( z i ∣ x i ) p(\bm z_i|\bm x_i) p(zixi) 如下:
p ( z i ∣ x i ) = N ( z i ; h ( x i ) , Σ i ) = 1 ∣ 2 π Σ i ∣ exp ⁡ { − 1 2 ∥ h i ( x i ) − z i ∥ Σ i 2 } p(\bm z_i|\bm x_i)=\mathcal{N}(\bm z_i;h(\bm x_i),\bm \Sigma_i) = \dfrac{1}{\sqrt{|2\pi \bm \Sigma_i|}}\exp\left\{-\dfrac{1}{2}\left\|h_i(\bm x_i)-\bm z_i\right\|_{\bm \Sigma_i}^2\right\} p(zixi)=N(zi;h(xi),Σi)=∣2πΣi 1exp{21hi(xi)ziΣi2}
其中 ∣ ⋅ ∣ |\cdot| 表示求行列式, ∥ x − μ ∥ Σ 2 = d e f ( x − μ ) T Σ − 1 ( x − μ ) \| \bm x -\bm \mu\|_{\bm \Sigma}^2\overset{\rm def}{=}(\bm x - \bm \mu)^T\bm \Sigma^{-1}(\bm x - \bm \mu) xμΣ2=def(xμ)TΣ1(xμ)表示马氏距离的平方。

概率问题的图表示

贝叶斯网络

贝叶斯网络是一个有向图模型,图中的节点代表变量 θ j \bm \theta_j θj。我们将全部感兴趣的随机变量集合表示为 Θ = { θ 1 , ⋯   , θ n } \varTheta=\{\bm \theta_1,\cdots,\bm\theta_n\} Θ={θ1,,θn}。一个贝叶斯网络在所有的变量 Θ \varTheta Θ上的联合概率密度函数 p ( Θ ) p(\varTheta) p(Θ)被定义为与每个节点相关联的条件概率密度的乘积:

p ( Θ ) ≜ ∏ j p ( θ j ∣ π j ) p\left(\varTheta\right)\triangleq\prod_{j}p\left(\bm\theta_{j}|\bm\pi_{j}\right) p(Θ)jp(θjπj)
式中, p ( θ j ∣ π j ) p\left(\bm\theta_{j}|\bm\pi_{j}\right) p(θjπj)是节点的条件概率密度函数, π j \bm\pi_j πj θ j \bm\theta_j θj的父节点。在一个贝叶斯网络中,联合概率密度的分解由其图结构,特别是它与父节点之间的关系所决定。

以一个小型SLAM问题为例,一个机器人在3个连续位姿 x 1 , x 2 , x 3 \bm x_1,\bm x_2,\bm x_3 x1,x2,x3对2个路标点 l 1 , l 2 \bm l_1,\bm l_2 l1,l2进行观测,假设在第一个位姿 x 1 \bm x_1 x1处有队绝对位姿的观测量 z 1 \bm z_1 z1,其余观测量为对路标的相对观测 z 2 , z 3 , z 4 \bm z_2,\bm z_3,\bm z_4 z2,z3,z4。按照通常的贝叶斯网络定义,联合概率密度 p ( X , Z ) = p ( x 1 , x 2 , x 3 , l 1 , l 2 , z 1 , z 2 , z 3 , z 4 ) p(\bm X,\bm Z)=p(\bm x_1,\bm x_2,\bm x_3,\bm l_1,\bm l_2,\bm z_1,\bm z_2,\bm z_3,\bm z_4) p(X,Z)=p(x1,x2,x3,l1,l2,z1,z2,z3,z4)可由一系列概率密度函数的乘积得到:

p ( X , Z ) = p ( x 1 ) p ( x 2 ∣ x 1 ) p ( x 3 ∣ x 2 ) p ( l 1 ) p ( l 2 ) × p ( z 1 ∣ x 1 ) p ( z 2 ∣ x 1 , l 1 ) p ( z 3 ∣ x 2 , l 1 ) p ( z 4 ∣ x 3 , l 2 ) \begin{aligned} p\left(\bm X,\bm Z\right)& =p\left(\bm x_{1}\right)p\left(\bm x_{2}|\bm x_{1}\right)p\left(\bm x_{3}|\bm x_{2}\right) p\left(\bm l_{1}\right)p\left(\bm l_{2}\right) \\ &\times p\left(\bm z_{1}|\bm x_{1}\right) p\left(\bm z_{2}|x_{1},\bm l_{1}\right)p\left(\bm z_{3}|\bm x_{2},\bm l_{1}\right)p\left(\bm z_{4}|\bm x_{3},\bm l_{2}\right) \end{aligned} p(X,Z)=p(x1)p(x2x1)p(x3x2)p(l1)p(l2)×p(z1x1)p(z2x1,l1)p(z3x2,l1)p(z4x3,l2)
在这里插入图片描述

因子图

因子图也是一种刻画概率问题的方式。贝叶斯网络是一种非常适合用于建模的语言,相比而言因子图则更适合用于推断。像贝叶斯网络一样,因子图允许我们将一个联合概率密度表示为一系列因子的乘积。然而因子图比贝叶斯网络更加通用,因为它不仅可以指定概率密度,还可以指定在变量 X \bm X X的集合上的任意一个因子函数 ϕ ( X ) \phi(\bm X ) ϕ(X)

我们考虑在小型 SLAM 例子上进行最大后验概率推断。考虑到未知量依赖于观测量 Z \bm Z Z ,可以利用贝叶斯法则将后验概率 p ( X ∣ Z ) p(\bm X|\bm Z) p(XZ)重写为如下形式:
p ( X ∣ Z ) ∝ p ( x 1 ) p ( x 2 ∣ x 1 ) p ( x 3 ∣ x 2 ) p ( l 1 ) p ( l 2 ) × l ( x 1 ; z 1 ) l ( x 1 , l 1 ; z 2 ) l ( x 2 , l 1 ; z 3 ) l ( x 3 , l 2 ; z 4 ) \begin{aligned} p\left(\bm X|\bm Z\right)& \propto p\left(\bm x_{1}\right)p\left(\bm x_{2}|\bm x_{1}\right)p\left(\bm x_{3}|\bm x_{2}\right) p\left(\bm l_{1}\right)p\left(\bm l_{2}\right) \\ &\times l\left(\bm x_{1};\bm z_{1}\right)l\left(\bm x_{1},\bm l_{1};\bm z_{2}\right)l\left(\bm x_{2},\bm l_{1};\bm z_{3}\right)l\left(\bm x_{3},\bm l_{2};\bm z_{4}\right) \end{aligned} p(XZ)p(x1)p(x2x1)p(x3x2)p(l1)p(l2)×l(x1;z1)l(x1,l1;z2)l(x2,l1;z3)l(x3,l2;z4)
显然,上式表示在未知变量上的未归一化的因子的概率密度。为了使这个因式分解更加明确,我们使用了因子图(factor graph)。与贝叶斯网络一样,所有的未知状态量 X \bm X X,包括机器人位姿和路标点,都用一个节点表示。然而,与贝叶斯网络不同的是,观测量不会被显式地表示出来。
在这里插入图片描述
在形式上,因子图是有两种类型节点的二分图 F = ( U , V , E ) \bm F = (\mathcal{U},\mathcal{V},\mathcal{E}) F=(U,V,E):因子节点(factor) ϕ i \bm \phi_i ϕi和变量节点(variable) x j ∈ V \bm x_j\in \mathcal{V} xjV,边总是存在于因子节点和变量节点之间。与因子 ϕ i \bm \phi_i ϕi相邻的变量节点几何被写作 N ( ϕ i ) \mathcal{N}(\bm \phi_i) N(ϕi),并且我们将对这个变量集合的赋值写作 X i \bm X_i Xi。然后就可以将因子图 F \bm F F定义为对作用于全体变量的函数 ϕ ( X ) \bm \phi(\bm X) ϕ(X)
ϕ ( X ) = ∏ i ϕ i ( X i ) \phi(\bm X)=\prod_i \phi_i(\bm X_i) ϕ(X)=iϕi(Xi)

每一个贝叶斯网络都可以很容易的转换为因子图。因为贝叶斯网络中的每一个节点都指示了相应的变量及其父节点的一个条件概率密度,所以转换过程非常简单:每一个贝叶斯网络节点都分解为相应因子图中的一个变量节点和一个因子节点。因子节点与变量节点相连接,和贝叶斯网络中的父节点与对应的变量节点相连接的含义是一样的。如果贝叶斯网络中的一些节点是证据节点(evidence node),即它们所包含的变量是已知的。我们就可以忽略相应的变量节点:已知变量变成了响应因子中的固定参数。

将一个贝叶斯网络 p ( X ∣ Z ) p(\bm X|\bm Z) p(XZ)转换为一个因子图,通过在证据观测 Z \bm Z Z上进行条件化会生成一个后验概率的表示 ϕ ( X ) ∝ p ( X ∣ Z ) \phi (\bm X)\propto p(\bm X|\bm Z) ϕ(X)p(XZ)

下面我们将说明对一个符合高斯噪声模型的SLAM问题进行最大后验概率估计,等价于求解一个非线性最小二乘问题。实际上对于任何一个因子图,最大后验概率估计等价于最大化所有因子的乘积:
X M A P = arg ⁡ max ⁡ X ϕ ( X ) = arg ⁡ max ⁡ X ∏ i ϕ i ( X i ) (1) \begin{aligned} \bm X^{\rm MAP}&=\arg\max_{\bm X} \phi(\bm X) \\&=\arg\max_{\bm X}\prod_i \phi_i(\bm X_i) \end{aligned}\tag{1} XMAP=argXmaxϕ(X)=argXmaxiϕi(Xi)(1)
让我们假设所有因子都具有如下形式:
ϕ i ( X i ) ∝ exp ⁡ { − 1 2 ∥ h i ( X i ) − z i ∥ Σ i 2 } \phi_i(\bm X_i)\propto\exp\left\{-\dfrac{1}{2}\left\|h_i(\bm X_i)-\bm z_i\right\|_{\bm \Sigma_i}^2\right\} ϕi(Xi)exp{21hi(Xi)ziΣi2}
其中既包括简单的高斯先验,也包括由受到零均值高斯噪声干扰的观测量推导出来的似然因子。
对(1)式取负对数并丢掉 1 2 \frac{1}{2} 21,问题就转化为非线性最小二乘的和,每一个最小二乘项对应着一个概率:

X M A P = arg ⁡ max ⁡ X ∑ i ∥ h i ( X i ) − z i ∥ Σ i 2 \bm X^{\rm MAP} = \arg\max_{\bm X}\sum_i \|h_i(\bm X_i)-\bm z_i\|^2_{\bm \Sigma_i} XMAP=argXmaxihi(Xi)ziΣi2

线性化

使用泰勒展开公式将非线性最小二乘目标函数中的所有观测函数 h i ( ⋅ ) h_i(\cdot) hi()线性化

h j ( X i ) = h i ( X i 0 + Δ i ) ≈ h i ( X i 0 ) + H i Δ i h_j(\bm X_i)=h_i(\bm X^0_i+\bm \Delta_i)\approx h_i(\bm X^0_i)+\bm H_i\bm \Delta_i hj(Xi)=hi(Xi0+Δi)hi(Xi0)+HiΔi

其中 Δ i ≜ X i − X i 0 \bm \Delta _i\triangleq \bm X_i - \bm X_i^0 ΔiXiXi0是状态更新向量, H i \bm H_i Hi是偏微分矩阵
H i ≜ ∂ h i ( X i ) ∂ X i ∣ X i 0 \bm H_i\triangleq \left.\dfrac{\partial h_i(\bm X_i)}{\partial \bm X_i}\right|_{\bm X_i^0} HiXihi(Xi) Xi0

将泰勒展开式带入非线性最小二乘问题,可以得到线型最小二乘问题,其状态更新向量如下:

Δ ∗ = arg ⁡ min ⁡ Δ ∑ i ∥ h i ( X i 0 ) + H i Δ i − z i ∥ Σ i 2 \begin{aligned} \bm\Delta^\ast &= \arg\min_{\bm \Delta}\sum_i\left\| h_i(\bm X_i^0)+\bm H_i\bm\Delta_i-\bm z_i\right\|^2_{\bm \Sigma_i} \end{aligned} Δ=argΔmini hi(Xi0)+HiΔizi Σi2
通过简单的变量变换,可以将马氏范数转换为2-范数:
∥ e ∥ Σ 2 = e T Σ − 1 e = ( Σ − 1 2 e ) T ( Σ − 1 2 e ) = ∥ Σ − 1 2 e ∥ 2 2 \left\|\bm e\right\|^2_{\bm \Sigma}=\bm e^T\bm \Sigma^{-1}\bm e=(\bm \Sigma^{-\frac{1}{2}}\bm e)^T(\bm \Sigma^{-\frac{1}{2}}\bm e)=\left\|\bm \Sigma^{-\frac{1}{2}}\bm e\right\|^2_2 eΣ2=eTΣ1e=(Σ21e)T(Σ21e)= Σ21e 22

A i = Σ i 1 2 H i b i = Σ i 1 2 ( z i − h i ( X i 0 ) ) \begin{aligned} \bm A_i &= \bm\Sigma_i^{\frac{1}{2}}\bm H_i\\ b_i &= \bm\Sigma_i^{\frac{1}{2}}\left(\bm z_i-h_i(\bm X_i^0)\right) \end{aligned} Aibi=Σi21Hi=Σi21(zihi(Xi0))
最终得到如下标准最小二乘问题:
Δ ∗ = arg ⁡ min ⁡ Δ ∑ i ∥ A i Δ i − b i ∥ 2 2 = arg ⁡ min ⁡ Δ ∥ A Δ − b ∥ 2 2 \begin{aligned} \bm \Delta^\ast &= \arg\min_{\bm \Delta}\sum_i\left\|\bm A_i\bm\Delta_i-b_i\right\|^2_2 \\&=\arg\min_{\bm \Delta}\left\|\bm A\bm\Delta-\bm b\right\|^2_2 \end{aligned} Δ=argΔminiAiΔibi22=argΔminAΔb22
因此这样就将求解最大后验概率问题转化为了矩阵求解问题,概率的条件化操作对应着矩阵的QR分解。

变量消元

变量消元算法是一种将因子图转换回贝叶斯网络的方法, 将未归一化的后验概率 ϕ ( X ) ∝ p ( X ∣ Z ) \phi(\bm X)\propto p(\bm X|\bm Z) ϕ(X)p(XZ)表示为一系列因子的乘积,等价于概率的条件分解。变量消元算法将因子图 ϕ ( X ) = ϕ ( x 1 , ⋯   , x n ) \phi(\bm X)=\phi(\bm x_1,\cdots,\bm x_n) ϕ(X)=ϕ(x1,,xn)分解为如下形式的因子化贝叶斯网络概率密度。

p ( X ) = p ( x 1 ∣ S 1 ) p ( x 2 ∣ S 2 ) ⋯ p ( x n ) = ∏ j p ( x j ∣ S j ) p(\bm X)=p(\bm x_1 | \bm S_1)p(\bm x_2|\bm S_2)\cdots p(\bm x_n) = \prod_j p(\bm x_j|\bm S_j) p(X)=p(x1S1)p(x2S2)p(xn)=jp(xjSj)
选定的变量消元顺序为 x 1 , ⋯   , x n \bm x_1,\cdots,\bm x_n x1,,xn,与变量 x j \bm x_j xj相关的分离器 S ( x j ) \mathcal{S}(\bm x_j) S(xj)记为 S j \bm S_j Sj。分离器是这样一组变量的集合:在 x j \bm x_j xj被消去后, x j \bm x_j xj 在这组变量上会被条件化。

线性最小二乘项的和可以表示为
A [ x ; S ] − b \bm A\begin{bmatrix}\bm x;\bm S\end{bmatrix}-\bm b A[x;S]b
通过对增广矩阵 [ A ∣ b ] \begin{bmatrix}\bm A|\bm b\end{bmatrix} [Ab]进行部分QR分解可以转化为
[ A ∣ b ] = Q [ R T d A ˉ b ˉ ] \begin{bmatrix}\bm A|\bm b\end{bmatrix}=\bm Q \begin{bmatrix} \bm R&\bm T&\bm d\\ &\bar{\bm A}&\bar{\bm b} \end{bmatrix} [Ab]=Q[RTAˉdbˉ]
因此
∥ A [ x ; S ] − b ∥ 2 2 = ∥ R x + T S − d ∥ 2 2 + ∥ A ˉ S − b ˉ ∥ 2 2 \left\|\bm A\begin{bmatrix}\bm x;\bm S\end{bmatrix}-\bm b\right\|_2^2=\left\|\bm R\bm x+\bm T \bm S-\bm d\right\|_2^2+ \left\|\bar{\bm A}\bm S- \bar{\bm b}\right\|_2^2 A[x;S]b 22=Rx+TSd22+ AˉSbˉ 22

对应高斯概率的条件化:
p ( x ; S ) ∝ exp ⁡ { − 1 2 ∥ A [ x ; S ] − b ∥ 2 2 } = p ( x ∣ S ) p ( S ) ∝ exp ⁡ { − 1 2 ∥ R x + T S − d ∥ 2 2 } exp ⁡ { − 1 2 ∥ A ˉ S − b ˉ ∥ 2 2 } \begin{aligned} &p(\bm x;\bm S)\propto\exp\left\{-\dfrac{1}{2}\left\|\bm A\begin{bmatrix}\bm x;\bm S\end{bmatrix}-\bm b\right\|_2^2\right\} \\ =&p(\bm x|\bm S)p(\bm S)\propto\exp\left\{-\dfrac{1}{2}\left\|\bm R\bm x+\bm T \bm S-\bm d\right\|_2^2\right\}\exp\left\{-\dfrac{1}{2}\left\|\bar{\bm A}\bm S- \bar{\bm b}\right\|_2^2\right\} \end{aligned} =p(x;S)exp{21 A[x;S]b 22}p(xS)p(S)exp{21Rx+TSd22}exp{21 AˉSbˉ 22}
通过上述的变量消元法,按照特定的变量消元顺序,可以将一个因子图转化为一个贝叶斯网络,并且消元得到的贝叶斯网络有一个特殊的性质:他是一个弦图(chordal graph),即任何一个长度大于3的无向环都有一个弦。弦定义为链接环中两个非连续节点的边。通过识别这个弦图中的团(一组全连接的变量),贝叶斯网络可以被重写为贝叶斯树(Bayes tree)。
在这里插入图片描述

利用贝叶斯树存储和计算信息矩阵(即协方差矩阵),的的树结构,在进行增量推断时,每增加一个新的观测时。对应增加一个新的因子,这种情况下,贝叶斯树中只有包含因子的变量节点的团到根团之间的路径会受影响。包含因子的变量节点的团以下的子树,以及任何其他不包含 因子的变量节点的子树则并未受影响。因此,为了更新贝叶斯树,树中受影响的部分被转换回一个因子图,将与新的测量相关联的新的因子添加进去。通过对这个临时因子图使用任意一种方便的消元顺序进行重新消元,可以生成一棵新的贝叶斯子树,并且之前没有受影响的子树也可以重新添加回去。
在这里插入图片描述

之所以能够实现这样的效果是由于贝叶斯树的两个重要的性质。两个性质都来自贝叶斯树包含了消元过程的信息流:第一,贝叶斯树是由反向消元顺序的弦贝叶斯网络生成的。在这种方式下,每个团中的变量通过对它们的子团进行消元来收集信息。因此,在任何团中的信息只会向上传播直到根节点上。第二,只有与某个因子连接的第一个变量被消元,这个因子的信息才进入消元过程。结合这两个性质,我们看到,一个新的因子并不能影响任何没有与该因子相连的变量的后继变量。然而,变量上的因子到根节点有不同的(即独立的)路径,这意味着必须重新对这些路径进行消元来表达它们之间新的依赖。

因子图优化 iSAM2 利用上述方法实现了增量平滑建图,可以高效的增量求解非线性优化问题。选择性地对那些距离线性化点的偏差大于阈值的变量因子进行重新线性化。相比于由增加新的因子引起的对树的修改,我们现在对包含受影响变量(不仅仅是前端变量,还有分离器变量)的所有团进行重新处理。

这会影响到树的大部分,但是在绝大多数情况下,这也比重新计算整棵树的代价要小得多。我们也需要回到原始的完整因子图上计算,而不是将团转换成局部因子图。在消元的过程中同时需要进行一定量的缓存。在文献中有对整个增量非线性算法(iSAM2)详细的描述。

GTSAM

流型运算

a , b a,b a,b是李群上的元素, δ \delta δ是李代数空间的向量
a . compose ( b ) = a ∗ b a . between ( b ) = a . inverse ( ) ∗ b a . localaordinates ( b ) = b ⊟ a = log ⁡ ( a − 1 b ) a . retract ( δ ) = a ⊞ δ = a exp ⁡ ( δ ) \begin{aligned} a.\text{compose}(b)&= a*b\\ a.\text{between}(b)&=a.\text{inverse}()*b\\ a.\text{localaordinates}\left(b\right) &= b\boxminus a=\log \left( a^{-1}b\right) \\ a.\text{retract}\left( \delta \right) &=a\boxplus \delta=a\exp\left( \delta \right) \end{aligned} a.compose(b)a.between(b)a.localaordinates(b)a.retract(δ)=ab=a.inverse()b=ba=log(a1b)=aδ=aexp(δ)
对于gtsam::Pose2的构造函数是平移在前,旋转在后gtsam::Pose2(x, y, yaw),其噪声协方差模型也是平移在前(x,y),旋转在后(yaw)。而这与gtsam::Pose3的定义恰恰相反:
对于gtsam::Pose3的构造函数是旋转在前,平移在后gtsam::Pose3(gtsam::Rot3, gtsam::Point3),其噪声协方差模型也是旋转在前(roll,pitch,yaw),平移在后(x,y,z)

 // Add a prior on pose x0. This indirectly specifies where the origin is.
  // 0.1 rad std on roll, pitch, yaw, 30cm std on x,y,z.
  auto noise = noiseModel::Diagonal::Sigmas(
      (Vector(6) << Vector3::Constant(0.1), Vector3::Constant(0.3)).finished());
  newgraph.push_back(PriorFactor<Pose3>(X(0), pose_0, noise));

Jacobian矩阵

GTSAM中对Jacobian矩阵 H H H的定义如下:
h ( q exp ⁡ ξ ^ ) ≈ h ( q ) + H ξ h(q\exp\hat{\xi})\approx h(q)+H\xi h(qexpξ^)h(q)+Hξ
其中 exp ⁡ ξ ^ \exp\hat\xi expξ^是变量的指数映射

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

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

相关文章

迅为RK3568开发板驱动教程更新了兄弟们,思路更科学

驱动视频全新升级&#xff0c;并持续更新~更全&#xff0c;思路更科学&#xff0c;入门更简单。 迅为基于iTOP-RK3568开发板进行讲解&#xff0c;本次更新内容为第九期&#xff0c;主要讲解设备模型&#xff0c;共计29讲。 教程观看链接&#xff1a;B站搜索-迅为电子 课程目录…

Mysql——SUM()函数

目录 一、前期准备工作 新建表如下&#xff1a; 插入的数据如下&#xff1a; 二、SUM()函数的用法 1.求和&#xff0c;返回指定列的总和 SUM 函数可以对单个列求和&#xff0c;也可以对多个列运算后求和&#xff0c;计算中忽略 NULL 值 SUM函数与分组 GROUP BY 使用&a…

MySQL调优系列(五)——索引详解

一、索引的定义 数据库索引就像是书前面的目录&#xff0c;能加快数据库的查询速度。 索引是一种数据结构&#xff0c;用于帮助我们在大量数据中快速定位到我们想要查找的数据。 是一种帮助MySQL高效获取数据的数据结构。 ps&#xff1a;大多数情况下&#xff0c;索引查询都是…

计算机图形学 | 实验九:纹理贴图和天空盒

计算机图形学 | 实验九&#xff1a;纹理贴图和天空盒 计算机图形学 | 实验九&#xff1a;纹理贴图和天空盒实验概述顶点数据立方体顶点数据天空盒顶点数组 纹理载入创建纹理纹理读取纹理绑定 使用纹理立方体着色器顶点着色器片元着色器 天空盒着色器顶点着色器片元着色器 立方体…

管好【SD-WEBUI】中大量的模型:模型信息预览插件(Part.3)

文章目录 &#xff08;零&#xff09;前言&#xff08;一&#xff09;模型预览图&#xff08;一&#xff09;模型信息预览插件&#xff08;Model Preview&#xff09;&#xff08;1.1&#xff09;示例&#xff08;Markdown描述提示词备注&#xff09;&#xff08;1.2&#xff0…

AI大模型驱动下,数字虚拟人与虚拟场景为高等学院建设带来何种改变?

继今年年初美国人工智能研究实验室OpenAI推出ChatGPT&#xff08;一种人工智能驱动的自然语言处理工具&#xff09;之后一段时间里&#xff0c;阿里、百度、商汤等一众国内IT巨头纷纷发布了各自的AI大模型&#xff08;可浅理解为用于AI学习用的超大量数据&#xff09;&#xff…

运动控制轴单位设置(H5U PLC)

H5U PLC运动控制相关应用,请参看下面博客文章 10轴总线控制(汇川H5UPLC+总线伺服编程应用)_RXXW_Dor的博客-CSDN博客H5UPLC控制总线伺服的详细配置过程,可以参看下面的文章链接:汇川H5U PLC通过EtherCAT总线控制SV660N和X3E伺服_ethercat总线伺服如何控制_RXXW_Dor的博客-C…

使用MFT进行加密文件传输的7个好处

至少&#xff0c;托管文件传输&#xff08;MFT&#xff09;解决方案是一种产品&#xff0c;它包含入站和出站文件传输的所有方面&#xff0c;同时使用行业标准的网络协议和无缝加密。它可以从单个集中管理点在您的网络&#xff0c;系统&#xff0c;应用程序&#xff0c;贸易伙伴…

2024王道数据结构考研丨第二章:线性表

2024王道数据结构考研笔记专栏将持续更新&#xff0c;欢迎 点此 收藏&#xff0c;共同交流学习… 文章目录 第二章&#xff1a;线性表2.1线性表的定义2.2顺序表的定义2.2.1静态分配:2.2.2动态分配 2.2顺序表的基本操作1.插入操作 &#xff1a;平均时间复杂度O(n)2.删除操作&…

小白怎么入门网络安全?看这篇文章就够啦!(2023最新)

作为一名从业多年的网络安全工程师&#xff0c;我了解到&#xff0c;网络安全是一个高度技术密集的领域&#xff0c;它涵盖了网络架构、网络协议、操作系统、编程语言、密码学、安全漏洞、入侵检测和应急响应等多个方面。如果你是零基础的小白&#xff0c;想要进入这个行业&…

5个设计师必备的页面设计工具!

在现代科技飞速发展的时代&#xff0c;设计软件的选择越来越多。本文将盘点 5 大主流页面设计工具其中&#xff0c;即时设计是一款协同页面设计工具&#xff0c;提供在线编辑和保存等功能&#xff0c;同时拥有免费设计素材和在线留言评论等实用功能。它的云端协作设计使得复杂的…

街电入局两轮电动车充电,讲出了“跃迁”式的新故事?

以共享单车为起点&#xff0c;中国的共享经济正蓬勃发展。国家信息中心披露的数据显示&#xff0c;2022年&#xff0c;中国共享经济市场交易规模约38320亿元&#xff0c;同比增长约3.9%。 虽然同属共享经济&#xff0c;但与部分共享单车企业嫁入“豪门”全身而退不同&#xff…

【接口自动化测试】cookie绕过验证码自动登录?(保持登录状态)

目录 前言 cookie工作原理 cookie绕过登录 【自动化测试工程师学习路线】 1、自动化测试必备Python编程内容​ 2、Web UI 自动化测试基础内容​ 3、Web UI 自动化测试实战内容​ 4、APP UI 自动化测试基础内容​ 5、APP UI 自动化测试实战内容​ 6、API 接口自动化测…

实验四 面向对象分析与设计——UML类图与时序图

一、实验目的&#xff1a; 掌握面向对象分析中静态结构模型与动态行为模型的基本思想。学会识别系统中的类、类的属性和操作以及类之间的关系&#xff0c;掌握UML类图的绘制方法。了解时序图的作用和组成元素&#xff0c;掌握UML时序图的绘制方法。 二、实验仪器及实验环境&a…

ATA-2000系列高压放大器在压电陶瓷中的典型应用

ATA-2000系列高压放大器在压电陶瓷中的典型应用 压电陶瓷介绍&#xff1a; 压电陶瓷是一种能够将机械能和电能互相转换的陶瓷材料。压电陶瓷除具有压电性外&#xff0c;还具有介电性、弹性等,已被广泛应用于医学成像、声传感器、声换能器、超声马达等。压电陶瓷利用其材料在机…

改进YOLOv7 | 头部解耦 | 将YOLOX解耦头添加到YOLOv7 | 涨点杀器

改进YOLOv7 | 头部解耦 | 将YOLOX解耦头添加到YOLOv7 论文地址:https://arxiv.org/abs/2107.08430 文章目录 改进YOLOv7 | 头部解耦 | 将YOLOX解耦头添加到YOLOv71. 解耦头原理2. 解耦头对收敛速度的影响3. 解耦头对精度的影响4. 代码改进方式第一步第二步第三步第四步第五步参…

字节跳动测试岗四面总结....

字节一面 1、 简单做一下自我介绍 2、 简要介绍一下项目/你负责的模块/选一个模块说一下你设计的用例 3 、get请求和post请求的区别 4、 如何判断前后端bug/3xx是什么意思 5、 说一下XXX项目中你做的接口测试/做了多少次 6、 http和https的区别 7、 考了几个ADB命令/查看…

NebulaGraph和HugeGraph调研

1、社区资料丰富程度 各平台搜索词条数汇总 图数据库百度搜索必应搜索谷歌搜索CSDN知乎掘金简书语雀githubgiteestackoverflowNebulaGraph261000072600090600128810768131324188202HugeGraph45720001156500530009630170215132811 经过对比&#xff0c;NebulaGraph 在谷歌搜索…

大数据期末复习资料2023 Beta版

大数据单元1在线测试&#xff1a;https://ks.wjx.top/vm/tv3XfFg.aspx# 大数据单元2在线测试&#xff1a;https://ks.wjx.top/vm/QfXBgWP.aspx# 大数据单元3在线测试-1&#xff1a;https://ks.wjx.top/vm/PeLX5WR.aspx# 大数据单元3在线测试-2&#xff1a;https://ks.wjx.top/v…

重磅来袭,ChatGPT官方的掌上神器目前仅支持IOS

今天凌晨&#xff0c;OpenAI 推出了 ChatGPT 的 iOS app&#xff0c;在这个开放的世界里&#xff0c;智能化的 AI 功能早已经突破了人类的想象力。而 ChatGPT 确实不会让我们失望&#xff0c;它的真「iPhone 时刻」来了&#xff01;从现在起&#xff0c;我们可以在 iPhone 上使…