当前位置: 首页 > article >正文

图优化以及如何将信息矩阵添加到残差

变量:
1、预积分量: α 、 θ 、 β 、 b k a 、 b k g \alpha、\theta、\beta、b^a_k、b^g_k αθβbkabkg
2、前一次优化后的状态: q k 、 p k 、 v k 、 b k g 、 b k a q_k、p_k、v_k、b^g_k、b^a_k qkpkvkbkgbka,优化过程 b k g 、 b k a b^g_k、b^a_k bkgbka设为常数
3、预积分预测的后一次的位姿: q k + 1 p r e 、 p k + 1 p r e 、 v k + 1 p r e 、 b k + 1 g 、 b k + 1 a q^{pre}_{k+1}、p^{pre}_{k+1}、v^{pre}_{k+1}、b^g_{k+1}、b^a_{k+1} qk+1prepk+1prevk+1prebk+1gbk+1a
4、点云匹配得到的后一次的位姿: q k + 1 p c 、 p k + 1 p c q^{pc}_{k+1}、p^{pc}_{k+1} qk+1pcpk+1pc

残差的求取:
1、imu自身的约束:
(1)每次计算残差之前需要使用零偏更新一次预积分
(2)
E α = q k ∗ ( p k + 1 p r e − p k − v k ∗ d e l t a t − 1 2 g ∗ δ t 2 ) − α E θ = ln ⁡ ( exp ⁡ ( − [ θ ] × ) ∗ q k ∗ ( q k + 1 p r e ) − 1 ) ∨ E β = q k ∗ ( v k + 1 p r e − v k − g ∗ δ t ) − β E b a = b k + 1 a − b k a E b g = b k + 1 g − b k g \begin{align*} E_\alpha &= q_k * (p^{pre}_{k+1} - p_k - v_k * delta t - \frac{1}{2}g*\delta t^2) - \alpha \\ E_\theta &= \ln(\exp(-[\theta]_\times) * q_k * (q^{pre}_{k+1})^{-1})^\vee \\ E_\beta &= q_k * (v^{pre}_{k+1} - v_k - g*\delta t) - \beta \\ E_{b^a} &= b^a_{k+1} - b^a_k \\ E_{b^g} &= b^g_{k+1} - b^g_k \\ \end{align*} EαEθEβEbaEbg=qk(pk+1prepkvkdeltat21gδt2)α=ln(exp([θ]×)qk(qk+1pre)1)=qk(vk+1prevkgδt)β=bk+1abka=bk+1gbkg
(3)在ceres中没有提供直接添加信息矩阵的接口(g2o有),因此需要手动添加信息矩阵到残差中。
在最小二乘法问题中,当我们讨论带信息矩阵的最小二乘法时,通常是指加权最小二乘法(Weighted Least Squares, WLS),其中权重矩阵通常是根据测量误差的逆协方差矩阵来选择的。这种情况下,信息矩阵就是测量误差的逆协方差矩阵。

假设我们要最小化的残差向量为 r ( x ) = y − f ( x ) \mathbf{r}(\mathbf{x}) = \mathbf{y} - f(\mathbf{x}) r(x)=yf(x),其中 y \mathbf{y} y 是观测值向量, f ( x ) f(\mathbf{x}) f(x) 是由参数向量 (\mathbf{x}) 定义的模型预测值。如果观测数据的误差服从已知分布且其协方差矩阵为 Σ \Sigma Σ,则我们可以定义一个加权的残差向量,使得每个观测值的重要性与其误差的大小成反比。这样可以得到如下目标函数:

min ⁡ x 1 2 r ( x ) T Σ − 1 r ( x ) \min_{\mathbf{x}} \frac{1}{2} \mathbf{r}(\mathbf{x})^T \Sigma^{-1} \mathbf{r}(\mathbf{x}) xmin21r(x)TΣ1r(x)

在这个公式中, Σ − 1 \Sigma^{-1} Σ1就是我们所说的信息矩阵,它反映了观测值的精度信息。如果误差是独立同分布的,那么 Σ \Sigma Σ 可能是单位矩阵或对角矩阵,此时加权最小二乘就退化为普通最小二乘。

Σ − 1 \Sigma^{-1} Σ1有两个作用:
1、对残差加权,衡量不同残差之间的重要性,避免某个残差过大,导致难以优化
2、使不同单位之间可以比较,例如面积和体积是不可比的,因此需要引入信息矩阵

r ( x ) \mathbf{r}(\mathbf{x}) r(x) x \mathbf{x} x 的非线性函数时,我们可以用泰勒级数展开来近似 r ( x ) \mathbf{r}(\mathbf{x}) r(x),从而得到线性化后的最小二乘问题。如果当前参数估计为 x k \mathbf{x}_k xk,则线性化后的残差可以表示为:

r ( x k + Δ x ) ≈ r ( x k ) + J ( x k ) Δ x \mathbf{r}(\mathbf{x}_k + \Delta \mathbf{x}) \approx \mathbf{r}(\mathbf{x}_k) + J(\mathbf{x}_k) \Delta \mathbf{x} r(xk+Δx)r(xk)+J(xk)Δx

其中 J ( x k ) J(\mathbf{x}_k) J(xk) 是雅可比矩阵。将此代入目标函数中,我们得到:

min ⁡ Δ x 1 2 ( r ( x k ) + J ( x k ) Δ x ) T Σ − 1 ( r ( x k ) + J ( x k ) Δ x ) \min_{\Delta \mathbf{x}} \frac{1}{2} (\mathbf{r}(\mathbf{x}_k) + J(\mathbf{x}_k) \Delta \mathbf{x})^T \Sigma^{-1} (\mathbf{r}(\mathbf{x}_k) + J(\mathbf{x}_k) \Delta \mathbf{x}) minΔx21(r(xk)+J(xk)Δx)TΣ1(r(xk)+J(xk)Δx)

对上式关于 Δ x \Delta \mathbf{x} Δx 求导并令导数为零,可以得到正规方程:

J ( x k ) T Σ − 1 J ( x k ) Δ x = − J ( x k ) T Σ − 1 r ( x k ) J(\mathbf{x}_k)^T \Sigma^{-1} J(\mathbf{x}_k) \Delta \mathbf{x} = -J(\mathbf{x}_k)^T \Sigma^{-1} \mathbf{r}(\mathbf{x}_k) J(xk)TΣ1J(xk)Δx=J(xk)TΣ1r(xk)

现在需要手动把 Σ − 1 \Sigma^{-1} Σ1加入到残差中:
min ⁡ x 1 2 r ( x ) T Σ − 1 r ( x ) = min ⁡ x 1 2 r ( x ) T L L T r ( x ) = min ⁡ x 1 2 ( L T r ( x ) ) T ( L T r ( x ) ) \min_{\mathbf{x}} \frac{1}{2} \mathbf{r}(\mathbf{x})^T \Sigma^{-1} \mathbf{r}(\mathbf{x}) = \min_{\mathbf{x}} \frac{1}{2} \mathbf{r}(\mathbf{x})^T LL^T \mathbf{r}(\mathbf{x}) = \min_{\mathbf{x}} \frac{1}{2} (L^T\mathbf{r}(\mathbf{x}))^T (L^T \mathbf{r}(\mathbf{x})) xmin21r(x)TΣ1r(x)=xmin21r(x)TLLTr(x)=xmin21(LTr(x))T(LTr(x))

因此可以使用Cholesky分解(https://blog.csdn.net/ergevv/article/details/139260380)将 Σ − 1 \Sigma^{-1} Σ1分解成 L L T LL^T LLT,则残差 r ( x ) \mathbf{r}(\mathbf{x}) r(x)变成了 L T r ( x ) L^T \mathbf{r}(\mathbf{x}) LTr(x)

重新推导高斯牛顿验证一下:
r ( x ) ′ = L T r ( x ) \mathbf{r}(\mathbf{x}) '=L^T \mathbf{r}(\mathbf{x}) r(x)=LTr(x)
L T r ( x k + Δ x ) ≈ L T r ( x k ) + L T J ( x k ) Δ x L^T\mathbf{r}(\mathbf{x}_k + \Delta \mathbf{x}) \approx L^T\mathbf{r}(\mathbf{x}_k) + L^TJ(\mathbf{x}_k) \Delta \mathbf{x} LTr(xk+Δx)LTr(xk)+LTJ(xk)Δx

min ⁡ x k 1 2 ( L T r ( x k ) + L T J ( x k ) Δ x ) T ( L T r ( x k ) + L T J ( x k ) Δ x ) \min_{\mathbf{x_k}} \frac{1}{2} (L^T\mathbf{r}(\mathbf{x}_k) + L^TJ(\mathbf{x}_k) \Delta \mathbf{x})^T (L^T\mathbf{r}(\mathbf{x}_k) + L^TJ(\mathbf{x}_k) \Delta \mathbf{x}) xkmin21(LTr(xk)+LTJ(xk)Δx)T(LTr(xk)+LTJ(xk)Δx)

对上式关于 Δ x \Delta \mathbf{x} Δx 求导并令导数为零,可以得到正规方程:

( L T J ( x k ) ) T L T J ( x k ) Δ x = − ( L T J ( x k ) ) T L T r ( x k ) (L^TJ(\mathbf{x}_k))^T L^TJ(\mathbf{x}_k) \Delta \mathbf{x} = -(L^TJ(\mathbf{x}_k))^T L^T\mathbf{r}(\mathbf{x}_k) (LTJ(xk))TLTJ(xk)Δx=(LTJ(xk))TLTr(xk)

J ( x k ) T L L T J ( x k ) Δ x = − J ( x k ) T L L T r ( x k ) J(\mathbf{x}_k)^T LL^TJ(\mathbf{x}_k) \Delta \mathbf{x} = -J(\mathbf{x}_k)^T LL^T\mathbf{r}(\mathbf{x}_k) J(xk)TLLTJ(xk)Δx=J(xk)TLLTr(xk)

J ( x k ) T Σ − 1 J ( x k ) Δ x = − J ( x k ) T Σ − 1 r ( x k ) J(\mathbf{x}_k)^T \Sigma^{-1} J(\mathbf{x}_k) \Delta \mathbf{x} = -J(\mathbf{x}_k)^T \Sigma^{-1} \mathbf{r}(\mathbf{x}_k) J(xk)TΣ1J(xk)Δx=J(xk)TΣ1r(xk)

2、点云和imu之间的约束:
E θ p c = ( q k + 1 p c ) − 1 ∗ q k + 1 p r e E p p c = p k + 1 p r e − p k + 1 p c \begin{align*} E^{pc}_\theta &= (q^{pc}_{k+1})^{-1} * q^{pre}_{k+1}\\ E^{pc}_p &= p^{pre}_{k+1} - p^{pc}_{k+1}\\ \end{align*} EθpcEppc=(qk+1pc)1qk+1pre=pk+1prepk+1pc

这里就不分析残差对变量的雅可比矩阵了,因为ceres和g2o都支持自动求导


http://www.kler.cn/a/377908.html

相关文章:

  • GitCode 光引计划投稿|JavaVision:引领全能视觉智能识别新纪元
  • gitlab代码推送
  • 记录仪方案_记录仪安卓主板定制_音视频记录仪PCBA定制开发
  • 财会〔2024〕22号发布,全面提高管理会计数字化、智能化水平,泛微·齐业成来助力
  • RHEL 7.5 源码安装 mysql-5.7.17 数据库
  • 解锁移动设备管理新技能-RayLink远程控制手机
  • 网络编程项目之UDP聊天室
  • 【书生.浦语实战营】——入门岛
  • 【OpenSearch】机器学习(Machine Learning)神经搜索教程
  • 【Android】View的事件分发机制
  • Java项目实战II基于Spring Boot的美食烹饪互动平台的设计与实现(开发文档+数据库+源码)
  • 十四届蓝桥杯STEMA考试Python真题试卷第二套第二题
  • 解锁同城流量密码,六大实用技巧全解析
  • 勒索软件通过易受攻击的 Cyber​​Panel 实例攻击网络托管服务器
  • 探索 Spring Boot 中 Elasticsearch 的实战应用
  • Java实战项目-基于 SpringBoot+Vue 的医院管理系统
  • 在Vue中处理图片加载失败:自动替换备用图片
  • kafka实时返回浏览数据
  • 迷宫求解:探索最优路径的算法与应用
  • Java接入Hive
  • IMX6ULL裸机-汇编_反汇编_机器码
  • win10 更新npm 和 node
  • Redis系列---常见问题
  • Hadoop生态圈框架部署(一)- Linux操作系统安装及配置
  • [CARLA系列--01]CARLA 0.9.15 在Windows下的安装教程(一)
  • 系统架构师如何备考-超有用的备考经验(送博主用到的资料)