对于相机位姿的变换可以通过旋转矩阵或者四元数进行表示,对于旋转矩阵的定义满足:
R{∣R∣=1RRT=IR \begin{cases} |R| = 1 \\ RR^T = I\\ \end{cases} R{∣R∣=1RRT=I​
即RRR 为正交矩阵,且行列式为1 。 旋转矩阵的行列式为什么等于1?

除了旋转矩阵外,还需要仿射矩阵,仿射矩阵是在经过线性变换后进行平移变换。因为平移变换无法用两个矩阵相乘的方式表示,因此通过齐次坐标可以很好的解决这个问题,所谓齐次坐标就是将一个原本是nnn维的向量用一个n+1n+1n+1维向量来表示。

相机的位姿变换为一个连续且平滑的过程,连续指的是左连续等于右连续,而平滑指的是存在高阶导数。那么这些连续的位姿变换再加上乘法即构成了李群SO(3)SO(3)SO(3)(特殊正交群)。

在后端优化的过程中,导入李代数的原因有: 关于李群与李代数的的理解与总结
(1)旋转矩阵需要满足正交矩阵的约束,额外的约束会增加优化的困难。
(2)解决李群中不存在加法运算,无法描述求导的问题。

已知旋转矩阵的导数可以用一个反对称矩阵和旋转矩阵本身表示:
R(t)˙=ϕ(t)∧R(t)\dot{R(t)}= \phi(t) ^∧R(t)R(t)˙​=ϕ(t)∧R(t)那么根据微分方程,可以得到IR(t)dR(t)=ϕ(t)∧dt{I \over R(t)}dR(t)= \phi(t) ^∧dt R(t)I​dR(t)=ϕ(t)∧dtlnR(t)=ϕ(t)∧t+clnR(t)= \phi(t) ^∧t+c lnR(t)=ϕ(t)∧t+cR(t)=eϕ(t)∧t+cR(t)= e^{\phi(t) ^∧t+c }R(t)=eϕ(t)∧t+c且当t=0t=0t=0时,RRR为单位阵III,因此可简化得到:R(t)=eϕ(t)∧tR(t)= e^{\phi(t) ^∧t }R(t)=eϕ(t)∧t由此便引出了李代数与李群之间的关系。


在解决旋转矩阵求导之前,需要了解BCH(baker Campbell hausdorff)公式,描述了当两个李群的矩阵相乘时,李代数如何运算。
eϕ1∧eϕ2∧=e(ϕ1+ϕ2)∧e^{\phi_1 ^∧}e^{\phi_2^∧} = e^{(\phi_1+\phi_2) ^∧}eϕ1∧​eϕ2∧​=e(ϕ1​+ϕ2​)∧ln(exp(ϕ1∧)exp(ϕ2∧))=ϕ1∧+ϕ2∧+12[ϕ1∧,ϕ2∧]+112[ϕ1∧,[ϕ1∧,ϕ2∧]]−112[ϕ2∧,[ϕ1∧,ϕ2∧]]⋯ln(exp(\phi_1 ^∧)exp(\phi_2^∧)) = \phi_1 ^∧+\phi_2 ^∧+{1\over 2}[\phi_1 ^∧,\phi_2 ^∧]+{1\over 12}[\phi_1 ^∧,[\phi_1 ^∧,\phi_2 ^∧]]-{1\over 12}[\phi_2 ^∧,[\phi_1 ^∧,\phi_2 ^∧]]\cdotsln(exp(ϕ1∧​)exp(ϕ2∧​))=ϕ1∧​+ϕ2∧​+21​[ϕ1∧​,ϕ2∧​]+121​[ϕ1∧​,[ϕ1∧​,ϕ2∧​]]−121​[ϕ2∧​,[ϕ1∧​,ϕ2∧​]]⋯
其中[,][,][,]为李括号,李括号的运算为:[ϕ1,ϕ2]=[Φ1Φ2−Φ2Φ1]∨[\phi_1,\phi_2]=[\Phi_1\Phi_2-\Phi_2\Phi_1]^\vee[ϕ1​,ϕ2​]=[Φ1​Φ2​−Φ2​Φ1​]∨
BCH公式中,当向量为小量时,二次以上的项都将被忽略,所以BCH公式的近似表达式为:
ln(exp(ϕ1∧)exp(ϕ2∧))≈{Jl(ϕ2)−1ϕ1+ϕ2,当ϕ1为小量时Jr(ϕ1)−1ϕ2+ϕ1,当ϕ2为小量时ln(exp(\phi_1 ^∧)exp(\phi_2^∧)) \approx \begin{cases} J_l (\phi_2)^{-1}\phi_1 +\phi_2,当\phi_1为小量时\\ J_r (\phi_1)^{-1}\phi_2 +\phi_1, 当\phi_2为小量时\\ \end{cases} ln(exp(ϕ1∧​)exp(ϕ2∧​))≈{Jl​(ϕ2​)−1ϕ1​+ϕ2​,当ϕ1​为小量时Jr​(ϕ1​)−1ϕ2​+ϕ1​,当ϕ2​为小量时​
近似的BCH公式按ϕ\phiϕ的大小不同,可以将两式分为左乘右乘
左乘近似雅可比可以表示成下式:

Jr=J=sinθθI+(1−sinθθ)aaT+1−cosθθa∧J_r = J = {sin\theta\over \theta}I+(1-{sin \theta \over \theta})aa^T+{1-cos \theta \over \theta }a^∧Jr​=J=θsinθ​I+(1−θsinθ​)aaT+θ1−cosθ​a∧Jr−1=θ2cotθ2I+(1−θ2cotθ2)aaT−θ2a∧J_r^{-1} = {\theta\over 2}cot{\theta\over 2}I+(1-{\theta\over 2}cot{\theta\over 2})aa^T-{\theta\over 2}a^∧Jr−1​=2θ​cot2θ​I+(1−2θ​cot2θ​)aaT−2θ​a∧

右乘近似雅可比仅需要对自变量取负号:
Jr(ϕ)=Jl(−ϕ)J_r(\phi) = J_l(-\phi)Jr​(ϕ)=Jl​(−ϕ)


参考文章:李代数求导与扰动模型
在SLAM中,我们经常会构建与位姿有关的残差函数,然后讨论该函数关于位姿的雅克比,优化当前的估计值。使用李代数解决求导问题的思路分为两种:
(1)用李代数表示姿态,然后对根据李代数加法来对李代数求导。
根据导数的定义,在李代数上做加法:
exp((ϕ+Δϕ)∧=exp((JlΔϕ)∧)exp(ϕ∧)=exp(ϕ∧)exp((JrΔϕ)∧)exp((\phi+\Delta\phi)^∧ = exp((J_l \Delta \phi)^∧)exp(\phi^∧) = exp(\phi^∧)exp((J_r \Delta\phi)^∧)exp((ϕ+Δϕ)∧=exp((Jl​Δϕ)∧)exp(ϕ∧)=exp(ϕ∧)exp((Jr​Δϕ)∧)
用李代数表示姿态:R=exp(ϕ∧)R=exp(\phi^∧)R=exp(ϕ∧) d(RP)dR⟹d(exp(ϕ∧)p)dϕ=lim⁡δϕ→0exp(ϕ+δϕ)∧p−exp(ϕ∧)pδϕ{d(RP) \over dR} \implies {d( exp(\phi^∧)p) \over d\phi} = \lim_{\delta \phi\to\ 0}{exp(\phi+\delta \phi)^∧p-exp(\phi^∧)p \over \delta \phi}dRd(RP)​⟹dϕd(exp(ϕ∧)p)​=δϕ→ 0lim​δϕexp(ϕ+δϕ)∧p−exp(ϕ∧)p​ =lim⁡δϕ→0exp((Jlδϕ)∧)exp(ϕ∧)p−exp(ϕ∧)pδϕ= \lim_{\delta \phi\to\ 0}{ exp((J_l \delta \phi)^∧)exp(\phi^∧) p-exp(\phi^∧)p \over \delta \phi}=δϕ→ 0lim​δϕexp((Jl​δϕ)∧)exp(ϕ∧)p−exp(ϕ∧)p​
利用极限公式:ex=1+xe^{x} = 1+xex=1+x =lim⁡δϕ→0(I+(Jlδϕ)∧)exp(ϕ∧)p−exp(ϕ∧)pδϕ= \lim_{\delta \phi\to\ 0}{ (I+(J_l \delta \phi)^∧)exp(\phi^∧) p-exp(\phi^∧)p \over \delta \phi}=δϕ→ 0lim​δϕ(I+(Jl​δϕ)∧)exp(ϕ∧)p−exp(ϕ∧)p​ =lim⁡δϕ→0(Jlδϕ)∧exp(ϕ∧)pδϕ= \lim_{\delta \phi\to\ 0}{ (J_l \delta \phi)^∧exp(\phi^∧) p \over \delta \phi}=δϕ→ 0lim​δϕ(Jl​δϕ)∧exp(ϕ∧)p​ 根据反对称矩阵:ATB=−BTAA^TB = -B^TAATB=−BTA =lim⁡δϕ→0(Jlδϕ)∧exp(ϕ∧)pδϕ=lim⁡δϕ→0−(exp(ϕ∧)p)∧Jlδϕδϕ=−(Rp)∧Jl= \lim_{\delta \phi\to\ 0}{ (J_l \delta \phi)^∧exp(\phi^∧) p \over \delta \phi}= \lim_{\delta \phi\to\ 0}{ -(exp(\phi^∧) p)^∧J_l \delta \phi \over \delta \phi} = -(Rp)^∧J_l=δϕ→ 0lim​δϕ(Jl​δϕ)∧exp(ϕ∧)p​=δϕ→ 0lim​δϕ−(exp(ϕ∧)p)∧Jl​δϕ​=−(Rp)∧Jl​

(2)对李群左乘或右乘微小扰动,然后对该扰动求导,称为左扰动和右扰动模型。
把增量扰动直接添加在李群上,然后使用李代数表示此扰动(左扰动):
d(RP)dφ=lim⁡φ→0exp(φ∧)exp(ϕ∧)p−exp(ϕ∧)pφ{d(RP) \over d\varphi} = \lim_{\varphi\to\ 0}{exp(\varphi^∧)exp(\phi^∧)p-exp(\phi^∧)p \over \varphi}dφd(RP)​=φ→ 0lim​φexp(φ∧)exp(ϕ∧)p−exp(ϕ∧)p​ =lim⁡φ→0(I+φ∧)exp(ϕ∧)p−exp(ϕ∧)pφ= \lim_{\varphi\to\ 0}{(I+\varphi^∧)exp(\phi^∧)p-exp(\phi^∧)p \over \varphi}=φ→ 0lim​φ(I+φ∧)exp(ϕ∧)p−exp(ϕ∧)p​ =lim⁡φ→0φ∧exp(ϕ∧)pφ=lim⁡φ→0φ∧Rpφ=lim⁡φ→0−(Rp)∧φφ=−(Rp)∧= \lim_{\varphi\to\ 0}{\varphi^∧exp(\phi^∧)p \over \varphi} = \lim_{\varphi\to\ 0}{\varphi^∧Rp \over \varphi} = \lim_{\varphi\to\ 0}{- (Rp)^∧\varphi \over \varphi} =- (Rp)^∧ =φ→ 0lim​φφ∧exp(ϕ∧)p​=φ→ 0lim​φφ∧Rp​=φ→ 0lim​φ−(Rp)∧φ​=−(Rp)∧ 因此,左扰动模型比微分模型要少一个雅可比矩阵。

对于如何选择右扰动还是左扰动,参考知乎文章旋转的左扰动和右扰动。

一般旋转扰动的定义是在机体bodybodybody坐标系上添加一个小的旋转 θb′b\theta^b_{b'}θb′b​ ,这样扰动的旋转角比较小,可以保证比较好的线性而且避免奇异性,即 Rb′b=[θb′b]∧R_{b'}^b = [\theta^b_{b'}]^∧Rb′b​=[θb′b​]∧。

(1)当 poseposepose 表达在 worldworldworld 坐标系时,根据旋转的叠加方式,添加的是右扰动:
Rb′w=RbwRb′b=Rbw(I+[θb′b]∧)R_{b'}^w = R_{b}^w R_{b'}^b = R_{b}^w(I+ [\theta^b_{b'}]^∧)Rb′w​=Rbw​Rb′b​=Rbw​(I+[θb′b​]∧)
(2)当 poseposepose 表达在 bodybodybody 坐标系时,根据旋转的叠加方式,添加的是左扰动:
Rwb′=Rbb′Rwb=(I+[θbb′]∧)Rwb=(I−[θb′b]∧)RwbR^{b'}_w = R^{b'}_b R^{b}_w = (I+ [\theta_b^{b'}]^∧)R^{b}_w = (I- [\theta^b_{b'}]^∧)R^{b}_wRwb′​=Rbb′​Rwb​=(I+[θbb′​]∧)Rwb​=(I−[θb′b​]∧)Rwb​


参考博客:VINS-MONO ProjectionFactor代码分析及公式推导
在重投影误差中,以VINS为例,重投影误差计算的是单位球面切平面上的误差,单位球面模型相对于单位平面模型可以适用的相机模型更广泛。其中确定的常量为切平面基构成的矩阵BBB和输入的特征点lll在单位相机平面的投影(Plci,Plcj)(P_l^{c_i},P_l^{cj})(Plci​​,Plcj​),需要优化的变量包括第i、ji、ji、j两帧在世界坐标系下的姿态(Rbiw,Rbjw)(R_{b_i}^w,R_{b_j}^w)(Rbi​w​,Rbj​w​),IMU与相机之间的外参关系(Rcb,tcb)(R_c^b,t_c^b)(Rcb​,tcb​),逆深度(λl)(\lambda_l)(λl​)。

那么第lll特征点在第jjj帧下的重投影坐标Plcj′P_l^{c_j'}Plcj′​​为:
Plcj′=RcbT{RbjwT[Rbiw(RcbPlciλl+tcb⏟转换到IMU坐标系)+tbiw⏞转换到世界坐标系]−tcb⏟转换到第j帧IMU坐标系下}⏟转换到第j帧相机坐标系下P_l^{c_j'}= \underbrace{{R_c^b}^T \{ \underbrace{{R_{b_j}^{w}}^T[\overbrace{R_{b_i}^w(\underbrace{R_c^b{P_l^{c_i} \over \lambda_l}+t_c^b}_{\text{转换到IMU坐标系}} )+t_{b_i}^w}^{\text{转换到世界坐标系}}] - t_c^b}_{\text{转换到第}j\text{帧IMU坐标系下}} \}}_{\text{转换到第}j\text{帧相机坐标系下}} Plcj′​​=转换到第j帧相机坐标系下Rcb​T{转换到第j帧IMU坐标系下Rbj​w​T[Rbi​w​(转换到IMU坐标系Rcb​λl​Plci​​​+tcb​​​)+tbi​w​​转换到世界坐标系​]−tcb​​​}​​

//pts_i为l个特征点在第i帧单位相机平面的投影,pts_j同理(常量)
// 下列变量中其中只有 tangent_base、pts_i、pts_j为常量,其他都是待优化变量
// 第i帧单位相机坐标系 -> 第i帧相机坐标系 -> 第i帧IMU 坐标系 -> 世界坐标系 -> 第j帧IMU 坐标系 ->  第j帧相机坐标系
Eigen::Vector3d pts_camera_i = pts_i / inv_dep_i; // 特征点的逆深度 inv_dep_i
Eigen::Vector3d pts_imu_i = qic * pts_camera_i + tic; // imu和相机间的外参
Eigen::Vector3d pts_w = Qi * pts_imu_i + Pi; // 第i帧的位姿
Eigen::Vector3d pts_imu_j = Qj.inverse() * (pts_w - Pj); // 第j帧的位姿
Eigen::Vector3d pts_camera_j = qic.inverse() * (pts_imu_j - tic); // pts_i在第j帧的重投影
Eigen::Map<Eigen::Vector2d> residual(residuals);

因此残差公式可以表示为:
e=B∗(Plcj′∥Plcj′∥2−Plcj∥Plcj∥2)e = B *({P_l^{c_j'} \over \lVert P_l^{c'_j} \rVert_2}-{P_l^{c_j} \over \lVert P_l^{c_j} \rVert_2})e=B∗(∥Plcj′​​∥2​Plcj′​​​−∥Plcj​​∥2​Plcj​​​)令TTT为待优化的变量,rrr表示投影前的残差,即r=Plcj′∥Plcj′∥2−Plcj∥Plcj∥2r={P_l^{c_j'} \over \lVert P_l^{c'_j} \rVert_2}-{P_l^{c_j} \over \lVert P_l^{c_j} \rVert_2}r=∥Plcj′​​∥2​Plcj′​​​−∥Plcj​​∥2​Plcj​​​,通过链式法则,可得:∂e∂T=∂e∂r∂r∂Plcj′∥Plcj′∥2Plcj′∥Plcj′∥2∂T{∂e \over ∂T} ={∂e \over ∂r} {∂r \over ∂{P_l^{c_j'} \over \lVert P_l^{c'_j} \rVert_2}} {{P_l^{c_j'} \over \lVert P_l^{c'_j} \rVert_2} \over ∂T}∂T∂e​=∂r∂e​∂∥Plcj′​​∥2​Plcj′​​​∂r​∂T∥Plcj′​​∥2​Plcj′​​​​其中因为Plcj∥Plcj∥2{P_l^{c_j} \over \lVert P_l^{c_j} \rVert_2}∥Plcj​​∥2​Plcj​​​为常量,因此:∂e∂r∂r∂Plcj′∥Plcj′∥2=B{∂e \over ∂r} {∂r \over ∂{P_l^{c_j'} \over \lVert P_l^{c'_j} \rVert_2}} = B∂r∂e​∂∥Plcj′​​∥2​Plcj′​​​∂r​=B 化简得到:∂e∂T=BPlcj′∥Plcj′∥2∂T{∂e \over ∂T} = B {{P_l^{c_j'} \over \lVert P_l^{c'_j} \rVert_2} \over ∂T}∂T∂e​=B∂T∥Plcj′​​∥2​Plcj′​​​​
综上,残差的雅可比矩阵,等于Plcj′∥Plcj′∥2{{P_l^{c_j'} \over \lVert P_l^{c'_j} \rVert_2}}∥Plcj′​​∥2​Plcj′​​​的雅可比矩阵在切平面上的投影。

那么对于该雅可比矩阵如何求,设f(x)=Plcj′f(x) = P_l^{c_j'}f(x)=Plcj′​​,由链式法则可以得到:
df(x)∥f(x)∥2dx=(1∥f(x)∥2−∥f(x)∥23)f(x)f(x)T)f′(x){d{f(x) \over \lVert f(x) \rVert_2}\over dx} =({1 \over \lVert f(x) \rVert_2}- \lVert f(x) \rVert_2^3)f(x)f(x)^T)f'(x)dxd∥f(x)∥2​f(x)​​=(∥f(x)∥2​1​−∥f(x)∥23​)f(x)f(x)T)f′(x)
具体求导过程省略,上式中前半部分是关于重投影坐标的已知函数,因此只需要求解得到f′(x)f'(x)f′(x),就可以得到残差的雅可比矩阵,接下来对Plcj′P_l^{c_j'}Plcj′​​求导。


上一部分已经推导出第jjj帧下的重投影坐标Plcj′P_l^{c_j'}Plcj′​​,将该公式展开:
Plcj′=RcbTRbjwTRbiwRcbPlci1λl+RcbTRbjwTRbiwtcb+RcbTRbjwTtbiw−RcbTRbjwTtbjw−RcbTtcbTP_l^{c_j'} = {R_c^b}^T {R_{b_j}^w}^T {R_{b_i}^w} {R_{c}^b} {P_{l}^{c_i}}{1 \over \lambda_l} + {R_{c}^b}^T {R_{b_j}^w}^T {R_{b_i}^w} {t_{c}^b} + {R_{c}^b}^T {R_{b_j}^w}^T {t_{b_i}^w} - {R_{c}^b}^T {R_{b_j}^w}^T {t_{b_j}^w}- {R_{c}^b}^T {t_{c}^b}^TPlcj′​​=Rcb​TRbj​w​TRbi​w​Rcb​Plci​​λl​1​+Rcb​TRbj​w​TRbi​w​tcb​+Rcb​TRbj​w​Ttbi​w​−Rcb​TRbj​w​Ttbj​w​−Rcb​Ttcb​T 需要优化的变量都需要进行求导。包括(Rbiw,Rbjw),(Rcb,tcb),(λl)(R_{b_i}^w,R_{b_j}^w),(R_c^b,t_c^b),(\lambda_l)(Rbi​w​,Rbj​w​),(Rcb​,tcb​),(λl​)。

(1)第i、ji、ji、j两帧在世界坐标系下的姿态(Rbiw,Rbjw)(R_{b_i}^w,R_{b_j}^w)(Rbi​w​,Rbj​w​)
(2)IMU与相机之间的外参关系(Rcb,tcb)(R_c^b,t_c^b)(Rcb​,tcb​)
(3)逆深度(λl)(\lambda_l)(λl​)

以第iii帧为例,需要对旋转Rbiw{R_{b_i}^w}Rbi​w​和平移tbiw{t_{b_i}^w}tbi​w​进行求导。将除此之外的变量设为 A=RcbTRbjwTA = {R_{c}^b}^T {R_{b_j}^w}^TA=Rcb​TRbj​w​T 和 x=RcbPlci1λl+tcbx = {R_{c}^b} {P_{l}^{c_i}}{1 \over \lambda_l} + {t_{c}^b}x=Rcb​Plci​​λl​1​+tcb​
即化简得到(与优化量无关的后两项舍去):Plcj′=A(Rbjwx+tbiw)P_l^{c_j'} = A(R_{b_j}^wx+t_{b_i}^w)Plcj′​​=A(Rbj​w​x+tbi​w​)对tbiw{t_{b_i}^w}tbi​w​进行求导:
∂Plcj′∂tbiw=A=RcbTRbjwT{∂P_l^{c_j'} \over ∂{t_{b_i}^w}} =A= {R_{c}^b}^T {R_{b_j}^w}^T ∂tbi​w​∂Plcj′​​​=A=Rcb​TRbj​w​T
对Rbiw{R_{b_i}^w}Rbi​w​进行求导,因为 poseposepose 表达在 worldworldworld 坐标系,根据旋转的叠加方式,添加的是右扰动:
∂Plci′∂φ=lim⁡φ→0A(exp(ϕi∧)exp(φ∧)x+tbiw)−A(exp(ϕi∧)x+tbiw)φ{∂P_l^{c_i'} \over ∂\varphi} = \lim_{\varphi\to\ 0}{ A({exp(\phi_i^∧)} {exp(\varphi^∧)}x+t_{b_i}^w)-A({exp(\phi^∧_i)}x+t_{b_i}^w)\over \varphi}∂φ∂Plci′​​​=φ→ 0lim​φA(exp(ϕi∧​)exp(φ∧)x+tbi​w​)−A(exp(ϕi∧​)x+tbi​w​)​=lim⁡φ→0Aexp(ϕi∧)[exp(φ∧)−I]xφ= \lim_{\varphi\to\ 0}{ A{exp(\phi_i^∧)} [{exp(\varphi^∧)}-I]x\over \varphi}=φ→ 0lim​φAexp(ϕi∧​)[exp(φ∧)−I]x​=lim⁡φ→0Aexp(ϕi∧)[I+φ∧−I]xφ= \lim_{\varphi\to\ 0}{ A{exp(\phi_i^∧)} [{I+\varphi^∧}-I]x\over \varphi}=φ→ 0lim​φAexp(ϕi∧​)[I+φ∧−I]x​=lim⁡φ→0Aexp(ϕi∧)φ∧xφ=lim⁡φ→0−Aexp(ϕi∧)x∧φφ=lim⁡φ→0−Aexp(ϕi∧)x∧= \lim_{\varphi\to\ 0}{ A{exp(\phi_i^∧)} {\varphi^∧}x\over \varphi} = \lim_{\varphi\to\ 0}{- A{exp(\phi_i^∧)}x^∧ {\varphi}\over \varphi} = \lim_{\varphi\to\ 0}{- A{exp(\phi_i^∧)}x^∧} =φ→ 0lim​φAexp(ϕi∧​)φ∧x​=φ→ 0lim​φ−Aexp(ϕi∧​)x∧φ​=φ→ 0lim​−Aexp(ϕi∧​)x∧将AAA与xxx带入可得到:
∂Plci′∂φ=−RcbTRbjwTRbiw(RcbPlci1λl+tcb)∧{∂P_l^{c_i'} \over ∂\varphi} = - {R_{c}^b}^T {R_{b_j}^w}^T{R_{b_i}^w}( {R_{c}^b} {P_{l}^{c_i}}{1 \over \lambda_l} + {t_{c}^b})^∧∂φ∂Plci′​​​=−Rcb​TRbj​w​TRbi​w​(Rcb​Plci​​λl​1​+tcb​)∧

综上重投影坐标Plcj′P_l^{c_j'}Plcj′​​对位姿的求导已经推导完成,其余求导相似的方法,略略略!

扰动模型的求导可以替代关于状态量的雅可比,扰动模型FFF下误差状态的求导 ,将它在dx=0dx=0dx=0处做泰勒展开:
f(x0+dx)=F(dx)=F(0)+F′(0)(dx−0)=f(x0)+∂f(x0⨁dx)∂dxdxf(x_0+dx) = F(dx) \\ =F(0)+F'(0)(dx-0) \\ =f(x_0)+{∂f(x_0\bigoplus dx) \over ∂dx}dxf(x0​+dx)=F(dx)=F(0)+F′(0)(dx−0)=f(x0​)+∂dx∂f(x0​⨁dx)​dx


在单位平面模型下:视觉残差函数及雅可比公式推导

在 VSLAM 的后端优化中的重投影误差的雅可比计算详细推导相关推荐

  1. Kalibr源码学习(一): 重投影误差

    Kalibr源码学习(一): 重投影误差 给自己挖一个大坑, 从标定结果来学习Kalibr的标定源码, 这里基本以KB模型为例, 也就是标定时, kalibr的模型设定为 --model pinhol ...

  2. OpenCV 相机校正过程中,calibrateCamera函数projectPoints函数的重投影误差的分析

    OpenCV 校正过程中,calibrateCamera函数的ret和重投影误差的分析 OpenCV对相机进行校正的过程中,校正返回值retval和重投影误差的计算公式表示和分析. OpenCV 校正 ...

  3. 重投影误差-LM优化(数学基础)

    一.历史由来 Adjustment computation最早是由geodesy的人搞出来的.19世纪中期的时候,geodetics的学者就开始研究large scale triangulations ...

  4. 使用Ceres优化重投影误差进行相机标定(仅个人笔记)

    重投影误差的类 class ProjectErrorCostFunctionPinehole { public:ProjectErrorCostFunctionPinehole(const Eigen ...

  5. SLAM专题(10)- 最小化重投影误差与Bundle Adjustment (BA)

    在SFM(structure from motion)的计算中BA(Bundle Adjustment)作为最后一步优化具有很重要的作用,在近几年兴起的基于图的SLAM(simultaneous lo ...

  6. 最小化重投影误差(BA法)求解PnP

    1.引言 PnP算法是什么.用途以及部分求解方法我在PnP算法详解(超详细公式推导)中介绍过,但在那篇文章中基于基于优化的PnP求解方法我没有讲,因为我觉得这个方法比较重要,涉及一些李群李代数求导和非 ...

  7. python 正方形去畸变_opencv 角点检测+相机标定+去畸变+重投影误差计算

    https://blog.csdn.net/u010128736/article/details/52875137 https://blog.csdn.net/h532600610/article/d ...

  8. 空间几何-欧拉角、四元数、重投影误差

    空间几何基础 欧拉角和万向锁 四元数 重投影误差 欧拉角和万向锁 欧拉角中的描述物体运动的方向的方式 :偏航-俯仰-滚转(yaw-pitch-roll),等价于围绕ZYX轴进行旋转. 如图,每次旋转有 ...

  9. BA_重投影误差e对于相机的位姿ξ和对空间点的坐标P的雅可比矩阵的推导

    1. 基本思路 重投影误差表示为e, 相机的位姿表示为ξ (或者表示为T=(R,t)), 空间点表示为P, 则空间点投影到相机坐标系下的空间坐标点的相机坐标表示为P'=[X', Y', Z'], 则 ...

最新文章

  1. Go 学习笔记(35)— Go 接口 interface (接口声明、接口初始化、接口方法调用、接口运算、类型断言、类型查询、空接口)
  2. ARM Cortex-M学习简介
  3. mysql bandwidth_内存带宽对mysql影响多大
  4. Zen Coding css,html缩写替换大观 快速写出html,css
  5. [Project Euler]加入欧拉 Problem 9
  6. windows 访问linux中的mongodb,MongoDB的linux系统下的安装与连接
  7. java list移除符合条件的元素_从List中移除指定 List 中包含的其所有元素(可选操作)。...
  8. 实木地板被机器人弄成坑_防腐木地板怎选择 防腐木地板怎样安装
  9. java int转integer方法
  10. C语言:一种高效、易学的编程语言
  11. vue 图片拖拉转放大缩小组件
  12. win7u盘内容在计算机右侧,怎么设置电脑管家在文件系统窗口的侧边展示U盘内容...
  13. 黑苹果日记三(驱动)
  14. 数据降维——因子分析
  15. 我来告诉你spyder打不开在哪里看找问题
  16. 【解决问题】修复虚拟机报错,写入文件时出错,请确认您有访问该目录的权限
  17. catflag Crypto KeyBoard
  18. PIPIOJ 1004: 惠民工程
  19. python打印一整年的日历
  20. 【mysql】获取指定日期是当年第几周,指定日期所在周的开始和结束日期

热门文章

  1. 【Soul网关探秘】微内核架构及实现
  2. 《数字图像处理》-(3)-1从傅里叶级数到傅里叶变换详细推导以及傅里叶图像的性质
  3. Python中IO编程-文件读写
  4. MySQL:指定索引+事务+存储引擎的配置 开发必备 天呐!为什么会有索引这种东西
  5. 成为一棵大树必备的6个条件
  6. Android面试总结-中高级
  7. 2013中国互联网公司、全球互联网公司最新市值排名(2013.04.20)
  8. 2021顺丰科技实习 面经
  9. Windows中Latex应用排版、常用引用、公式、表格等
  10. 知识图谱(七)——事件抽取