Ceres中LocalParameterization参数Jacobian矩阵计算过程

Ceres中有一些变量实际的自由度比自身维度要低。例如四元数维度为4,其实际自由度为3。对于这类变量,Ceres在优化这类变量时,会定义一个LocalParameterization(新版为Manifold)来更新变量。
这类变量有两种空间,一种是流形空间ManifoldGlobalSize),另一种是切空间Tangent(LocalSize)。例如四元数为Manifold空间维度为4,Tangent空间为3。Ceres在Evaluate函数中定义了一个jacobian矩阵(定义为J1),然后再LocalParameterizationComputeJacobian函数中又定义了一个jacaobian矩阵(定义为J2)。其中J1是残差对Manifold变量求导,J2Manifold是对Tangent变量求导。根据链式法则,J1*J2是残差实际更新的jacobian矩阵。

以四元数为例,QuaternionParameterization 的方法 bool ComputeJacobian(const double* x, double* jacobian) 计算得到一个 4x3 的矩阵。这些由 ComputeJacobian 计算得到的矩阵在 ceres 代码中被称作 “global_to_local”,含义是 Manifold 上变量对 Tangent Space 上变量的导数。在 ceres::CostFunction 处提供 residuals 对 Manifold 上变量的导数: ∂ e ∂ X G \frac{\partial{e}}{\partial{X^G}} XGe

乘以Manifold 上变量对 Tangent Space 上变量的导数 ∂ X G ∂ X L \frac{\partial{X^G}}{\partial{X^L}} XLXG在这里插入图片描述

根据链式法则变成残差对 Tangent Space 上变量的导数,这个导数就是最终用于计算梯度的jacobian矩阵: ∂ e ∂ X L = ∂ e ∂ X G ∂ X G ∂ X L \frac{\partial{e}}{\partial{X^L}} =\frac{\partial{e}}{\partial{X^G}}\frac{\partial{X^G}}{\partial{X^L}} XLe=XGeXLXG
上述一些基础概念以及公式推导的一些细节可以参考下述三个链接:
[ceres-solver] From QuaternionParameterization to LocalParameterization
vins estimator PoseLocalParameterization
【Ceres】(二)LocalParameterization参数化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值