左右扰动问题
左右绕动都是函数在线性化点处的展开,因为姿态数据是不符合向量直接的加法的,所有从左边增加的扰动量和从右边加的扰动量结果会不一致
左右绕动关系
结论:
E x p ( 左 ) ∗ X = X ∗ E x p ( 右 ) Exp(左)*X = X * Exp(右) Exp(左)∗X=X∗Exp(右)
E x p ( 左 ) = X ∗ E x p ( 右 ) ∗ X − 1 Exp(左) = X * Exp(右) * X^{-1} Exp(左)=X∗Exp(右)∗X−1
$左 = Adj(X) * 右 $
关系验证
e r r = R 12 T R 1 R 2 err = R_{12}^TR_1 R_2 err=R12TR1R2
左右扰动的雅可比矩阵
对 R 1 R_1 R1的左雅可比矩阵:
∂ e r r ∂ R 1 = l n ( R 12 T E x p ( δ θ ) R 1 R 2 ) − l n ( R 12 T R 1 R 2 ) δ θ \frac{\partial err}{ \partial R_1} = \frac{ln(R_{12}^T Exp(\delta \theta) R_1 R_2) - ln(R_{12}^T R_1 R_2) } { \delta \theta } ∂R1∂err=δθln(R12TExp(δθ)R1R2)−ln(R12TR1R2)
= l n ( R 12 T R 1 R 2 E x p ( ( R 1 R 2 ) T δ θ ) ) − l n ( R 12 T R 1 R 2 ) δ θ = \frac{ln(R_{12}^T R_1 R_2 Exp( (R_1 R_2 )^T \delta \theta) ) - ln(R_{12}^T R_1 R_2) } { \delta \theta } =δθln(R12TR1R2Exp((R1R2)Tδθ))−ln(R12TR1R2)
= J r − 1 ( R 12 T R 1 R 2 ) ( R 1 R 2 ) T = J^{-1}_r(R_{12}^T R_1 R_2) (R_1 R_2)^T =Jr−1(R12TR1R2)(R1R2)T
对 R 1 R_1 R1的右雅可比矩阵:
∂ e r r ∂ R 1 = l n ( R 12 T R 1 E x p ( δ θ ) R 2 ) − l n ( R 12 T R 1 R 2 ) δ θ \frac{\partial err}{ \partial R_1} = \frac{ln(R_{12}^T R_1 Exp(\delta \theta) R_2) - ln(R_{12}^T R_1 R_2) } { \delta \theta } ∂R1∂err=δθln(R12TR1Exp(δθ)R2)−ln(R12TR1R2)
= l n ( R 12 T R 1 R 2 E x p ( R 2 T δ θ ) ) − l n ( R 12 T R 1 R 2 ) δ θ = \frac{ln(R_{12}^T R_1 R_2 Exp( R_2 ^T \delta \theta) ) - ln(R_{12}^T R_1 R_2) } { \delta \theta } =δθln(R12TR1R2Exp(R2Tδθ))−ln(R12TR1R2)
= J r − 1 ( R 12 T R 1 R 2 ) R 2 T = J^{-1}_r(R_{12}^T R_1 R_2) R_2^T =Jr−1(R12TR1R2)R2T
左右扰动雅可比矩阵关系验证
关系验证:
根据第一小结得到的左扰动模型和右扰动模型关系
E x p ( 左 ) ∗ X = X ∗ E x p ( 右 ) Exp(左)*X = X * Exp(右) Exp(左)∗X=X∗Exp(右) 得到的 左 = A d j 右 左 = Adj 右 左=Adj右 对于旋转来说 A d j = X Adj = X Adj=X
所以观察对 R 1 R_1 R1 的左右绕动,正好差一个 A d j ( R 1 ) Adj(R_1) Adj(R1)
右雅可比矩阵用于左乘更新
目的:为了手动求解雅可比矩阵更见简单!
个人感觉采用左雅可比矩阵和右雅可比矩阵都是可以的,只要统一就行了(左绕动左乘更新、右绕动右乘更新),涉及到不统一的地方就需要做转换。比如在 e r r err err 对 R 2 R_2 R2的雅可比矩阵推倒中,明显右绕动更见简单,但如果我系统设置的整体是一个左绕动更新,那就需要转换了。
转换1从jacobian入手
虽然推倒出了右绕动,但是可以利用左右绕动之间的关系进行转换就可以直接对Jacobian转换成左绕动的Jacobian
∂ e r r ∂ θ l = ∂ e r r ∂ θ r ∗ ∂ θ r ∂ θ l \frac{\partial err}{ \partial \theta_l} = \frac{\partial err}{ \partial \theta_r} * \frac{\partial \theta_r}{ \partial \theta_l} ∂θl∂err=∂θr∂err∗∂θl∂θr 其中 ∂ θ r ∂ θ l = A d j − 1 ( X ) \frac{\partial \theta_r}{ \partial \theta_l} = Adj^{-1}(X) ∂θl∂θr=Adj−1(X)
转换2从 δ x \delta x δx入手
用右绕动雅可比求解出来的 δ x \delta x δx是右绕动增量,通过 左 = A d j ( X ) 右 左 = Adj(X) 右 左=Adj(X)右可以把右绕动增量转换为左绕动增量,再送到定义的广义的+函数里面
从求解式子入手
在GN方法中,求解 H Δ x = b H \Delta x = b HΔx=b 将 右 = A d j − 1 ∗ 左 右 = Adj^{-1} * 左 右=Adj−1∗左 带入
H A d j − 1 δ x l = b H Adj^{-1} \delta x_l = b HAdj−1δxl=b 左右均添加一个系数 ( A d j − 1 ) T H A d j − 1 δ x l = ( A d j − 1 ) T b (Adj^{-1} )^T H Adj^{-1} \delta x_l = (Adj^{-1} )^T b (Adj−1)THAdj−1δxl=(Adj−1)Tb (这里加一个系数是为了保证新H的对称)
同时再展开一下 ( A d j − 1 ) T J T J A d j − 1 δ x l = ( A d j − 1 ) T J T ∗ r e s (Adj^{-1} )^T J^T J Adj^{-1} \delta x_l = (Adj^{-1} )^T J^T * res (Adj−1)TJTJAdj−1δxl=(Adj−1)TJT∗res 可以看出 其实是对雅可比矩阵改变是等效的!