对于相机位姿的变换可以通过旋转矩阵或者四元数进行表示,对于旋转矩阵的定义满足:
R
{
∣
R
∣
=
1
R
R
T
=
I
R \begin{cases} |R| = 1 \\ RR^T = I\\ \end{cases}
R{∣R∣=1RRT=I
即
R
R
R 为正交矩阵,且行列式为1 。 旋转矩阵的行列式为什么等于1?
除了旋转矩阵外,还需要仿射矩阵,仿射矩阵是在经过线性变换后进行平移变换。因为平移变换无法用两个矩阵相乘的方式表示,因此通过齐次坐标可以很好的解决这个问题,所谓齐次坐标就是将一个原本是 n n n维的向量用一个 n + 1 n+1 n+1维向量来表示。
相机的位姿变换为一个连续且平滑的过程,连续指的是左连续等于右连续,而平滑指的是存在高阶导数。那么这些连续的位姿变换再加上乘法即构成了李群 S O ( 3 ) SO(3) SO(3)(特殊正交群)。
在后端优化的过程中,导入李代数的原因有: 关于李群与李代数的的理解与总结
(1)旋转矩阵需要满足正交矩阵的约束,额外的约束会增加优化的困难。
(2)解决李群中不存在加法运算,无法描述求导的问题。
已知旋转矩阵的导数可以用一个反对称矩阵和旋转矩阵本身表示:
R
(
t
)
˙
=
ϕ
(
t
)
∧
R
(
t
)
\dot{R(t)}= \phi(t) ^∧R(t)
R(t)˙=ϕ(t)∧R(t)那么根据微分方程,可以得到
I
R
(
t
)
d
R
(
t
)
=
ϕ
(
t
)
∧
d
t
{I \over R(t)}dR(t)= \phi(t) ^∧dt
R(t)IdR(t)=ϕ(t)∧dt
l
n
R
(
t
)
=
ϕ
(
t
)
∧
t
+
c
lnR(t)= \phi(t) ^∧t+c
lnR(t)=ϕ(t)∧t+c
R
(
t
)
=
e
ϕ
(
t
)
∧
t
+
c
R(t)= e^{\phi(t) ^∧t+c }
R(t)=eϕ(t)∧t+c且当
t
=
0
t=0
t=0时,
R
R
R为单位阵
I
I
I,因此可简化得到:
R
(
t
)
=
e
ϕ
(
t
)
∧
t
R(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)∧
l
n
(
e
x
p
(
ϕ
1
∧
)
e
x
p
(
ϕ
2
∧
)
)
=
ϕ
1
∧
+
ϕ
2
∧
+
1
2
[
ϕ
1
∧
,
ϕ
2
∧
]
+
1
12
[
ϕ
1
∧
,
[
ϕ
1
∧
,
ϕ
2
∧
]
]
−
1
12
[
ϕ
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 ^∧]]\cdots
ln(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公式的近似表达式为:
l
n
(
e
x
p
(
ϕ
1
∧
)
e
x
p
(
ϕ
2
∧
)
)
≈
{
J
l
(
ϕ
2
)
−
1
ϕ
1
+
ϕ
2
,
当
ϕ
1
为小量时
J
r
(
ϕ
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
ϕ的大小不同,可以将两式分为左乘和右乘。
左乘近似雅可比可以表示成下式:
J r = J = s i n θ θ I + ( 1 − s i n θ θ ) a a T + 1 − c o s θ θ 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∧ J r − 1 = θ 2 c o t θ 2 I + ( 1 − θ 2 c o t θ 2 ) a a T − θ 2 a ∧ 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∧
右乘近似雅可比仅需要对自变量取负号:
J
r
(
ϕ
)
=
J
l
(
−
ϕ
)
J_r(\phi) = J_l(-\phi)
Jr(ϕ)=Jl(−ϕ)
参考文章:李代数求导与扰动模型
在SLAM中,我们经常会构建与位姿有关的残差函数,然后讨论该函数关于位姿的雅克比,优化当前的估计值。使用李代数解决求导问题的思路分为两种:
(1)用李代数表示姿态,然后对根据李代数加法来对李代数求导。
根据导数的定义,在李代数上做加法:
e
x
p
(
(
ϕ
+
Δ
ϕ
)
∧
=
e
x
p
(
(
J
l
Δ
ϕ
)
∧
)
e
x
p
(
ϕ
∧
)
=
e
x
p
(
ϕ
∧
)
e
x
p
(
(
J
r
Δ
ϕ
)
∧
)
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
=
e
x
p
(
ϕ
∧
)
R=exp(\phi^∧)
R=exp(ϕ∧)
d
(
R
P
)
d
R
⟹
d
(
e
x
p
(
ϕ
∧
)
p
)
d
ϕ
=
lim
δ
ϕ
→
0
e
x
p
(
ϕ
+
δ
ϕ
)
∧
p
−
e
x
p
(
ϕ
∧
)
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
δ
ϕ
→
0
e
x
p
(
(
J
l
δ
ϕ
)
∧
)
e
x
p
(
ϕ
∧
)
p
−
e
x
p
(
ϕ
∧
)
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
利用极限公式:
e
x
=
1
+
x
e^{x} = 1+x
ex=1+x
=
lim
δ
ϕ
→
0
(
I
+
(
J
l
δ
ϕ
)
∧
)
e
x
p
(
ϕ
∧
)
p
−
e
x
p
(
ϕ
∧
)
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
(
J
l
δ
ϕ
)
∧
e
x
p
(
ϕ
∧
)
p
δ
ϕ
= \lim_{\delta \phi\to\ 0}{ (J_l \delta \phi)^∧exp(\phi^∧) p \over \delta \phi}
=δϕ→ 0limδϕ(Jlδϕ)∧exp(ϕ∧)p 根据反对称矩阵:
A
T
B
=
−
B
T
A
A^TB = -B^TA
ATB=−BTA
=
lim
δ
ϕ
→
0
(
J
l
δ
ϕ
)
∧
e
x
p
(
ϕ
∧
)
p
δ
ϕ
=
lim
δ
ϕ
→
0
−
(
e
x
p
(
ϕ
∧
)
p
)
∧
J
l
δ
ϕ
δ
ϕ
=
−
(
R
p
)
∧
J
l
= \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
(
R
P
)
d
φ
=
lim
φ
→
0
e
x
p
(
φ
∧
)
e
x
p
(
ϕ
∧
)
p
−
e
x
p
(
ϕ
∧
)
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
+
φ
∧
)
e
x
p
(
ϕ
∧
)
p
−
e
x
p
(
ϕ
∧
)
p
φ
= \lim_{\varphi\to\ 0}{(I+\varphi^∧)exp(\phi^∧)p-exp(\phi^∧)p \over \varphi}
=φ→ 0limφ(I+φ∧)exp(ϕ∧)p−exp(ϕ∧)p
=
lim
φ
→
0
φ
∧
e
x
p
(
ϕ
∧
)
p
φ
=
lim
φ
→
0
φ
∧
R
p
φ
=
lim
φ
→
0
−
(
R
p
)
∧
φ
φ
=
−
(
R
p
)
∧
= \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)∧ 因此,左扰动模型比微分模型要少一个雅可比矩阵。
对于如何选择右扰动还是左扰动,参考知乎文章旋转的左扰动和右扰动。
一般旋转扰动的定义是在机体 b o d y body body坐标系上添加一个小的旋转 θ b ′ b \theta^b_{b'} θb′b ,这样扰动的旋转角比较小,可以保证比较好的线性而且避免奇异性,即 R b ′ b = [ θ b ′ b ] ∧ R_{b'}^b = [\theta^b_{b'}]^∧ Rb′b=[θb′b]∧。
(1)当
p
o
s
e
pose
pose 表达在
w
o
r
l
d
world
world 坐标系时,根据旋转的叠加方式,添加的是右扰动:
R
b
′
w
=
R
b
w
R
b
′
b
=
R
b
w
(
I
+
[
θ
b
′
b
]
∧
)
R_{b'}^w = R_{b}^w R_{b'}^b = R_{b}^w(I+ [\theta^b_{b'}]^∧)
Rb′w=RbwRb′b=Rbw(I+[θb′b]∧)
(2)当
p
o
s
e
pose
pose 表达在
b
o
d
y
body
body 坐标系时,根据旋转的叠加方式,添加的是左扰动:
R
w
b
′
=
R
b
b
′
R
w
b
=
(
I
+
[
θ
b
b
′
]
∧
)
R
w
b
=
(
I
−
[
θ
b
′
b
]
∧
)
R
w
b
R^{b'}_w = R^{b'}_b R^{b}_w = (I+ [\theta_b^{b'}]^∧)R^{b}_w = (I- [\theta^b_{b'}]^∧)R^{b}_w
Rwb′=Rbb′Rwb=(I+[θbb′]∧)Rwb=(I−[θb′b]∧)Rwb
参考博客:VINS-MONO ProjectionFactor代码分析及公式推导
在重投影误差中,以VINS为例,重投影误差计算的是单位球面切平面上的误差,单位球面模型相对于单位平面模型可以适用的相机模型更广泛。其中确定的常量为切平面基构成的矩阵
B
B
B和输入的特征点
l
l
l在单位相机平面的投影
(
P
l
c
i
,
P
l
c
j
)
(P_l^{c_i},P_l^{cj})
(Plci,Plcj),需要优化的变量包括第
i
、
j
i、j
i、j两帧在世界坐标系下的姿态
(
R
b
i
w
,
R
b
j
w
)
(R_{b_i}^w,R_{b_j}^w)
(Rbiw,Rbjw),IMU与相机之间的外参关系
(
R
c
b
,
t
c
b
)
(R_c^b,t_c^b)
(Rcb,tcb),逆深度
(
λ
l
)
(\lambda_l)
(λl)。
那么第
l
l
l特征点在第
j
j
j帧下的重投影坐标
P
l
c
j
′
P_l^{c_j'}
Plcj′为:
P
l
c
j
′
=
R
c
b
T
{
R
b
j
w
T
[
R
b
i
w
(
R
c
b
P
l
c
i
λ
l
+
t
c
b
⏟
转换到IMU坐标系
)
+
t
b
i
w
⏞
转换到世界坐标系
]
−
t
c
b
⏟
转换到第
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帧相机坐标系下
RcbT{转换到第j帧IMU坐标系下
RbjwT[Rbiw(转换到IMU坐标系
RcbλlPlci+tcb)+tbiw
转换到世界坐标系]−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
∗
(
P
l
c
j
′
∥
P
l
c
j
′
∥
2
−
P
l
c
j
∥
P
l
c
j
∥
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′∥2Plcj′−∥Plcj∥2Plcj)令
T
T
T为待优化的变量,
r
r
r表示投影前的残差,即
r
=
P
l
c
j
′
∥
P
l
c
j
′
∥
2
−
P
l
c
j
∥
P
l
c
j
∥
2
r={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′∥2Plcj′−∥Plcj∥2Plcj,通过链式法则,可得:
∂
e
∂
T
=
∂
e
∂
r
∂
r
∂
P
l
c
j
′
∥
P
l
c
j
′
∥
2
P
l
c
j
′
∥
P
l
c
j
′
∥
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′∥2Plcj′∂r∂T∥Plcj′∥2Plcj′其中因为
P
l
c
j
∥
P
l
c
j
∥
2
{P_l^{c_j} \over \lVert P_l^{c_j} \rVert_2}
∥Plcj∥2Plcj为常量,因此:
∂
e
∂
r
∂
r
∂
P
l
c
j
′
∥
P
l
c
j
′
∥
2
=
B
{∂e \over ∂r} {∂r \over ∂{P_l^{c_j'} \over \lVert P_l^{c'_j} \rVert_2}} = B
∂r∂e∂∥Plcj′∥2Plcj′∂r=B 化简得到:
∂
e
∂
T
=
B
P
l
c
j
′
∥
P
l
c
j
′
∥
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′∥2Plcj′
综上,残差的雅可比矩阵,等于
P
l
c
j
′
∥
P
l
c
j
′
∥
2
{{P_l^{c_j'} \over \lVert P_l^{c'_j} \rVert_2}}
∥Plcj′∥2Plcj′的雅可比矩阵在切平面上的投影。
那么对于该雅可比矩阵如何求,设
f
(
x
)
=
P
l
c
j
′
f(x) = P_l^{c_j'}
f(x)=Plcj′,由链式法则可以得到:
d
f
(
x
)
∥
f
(
x
)
∥
2
d
x
=
(
1
∥
f
(
x
)
∥
2
−
∥
f
(
x
)
∥
2
3
)
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)∥2f(x)=(∥f(x)∥21−∥f(x)∥23)f(x)f(x)T)f′(x)
具体求导过程省略,上式中前半部分是关于重投影坐标的已知函数,因此只需要求解得到
f
′
(
x
)
f'(x)
f′(x),就可以得到残差的雅可比矩阵,接下来对
P
l
c
j
′
P_l^{c_j'}
Plcj′求导。
上一部分已经推导出第
j
j
j帧下的重投影坐标
P
l
c
j
′
P_l^{c_j'}
Plcj′,将该公式展开:
P
l
c
j
′
=
R
c
b
T
R
b
j
w
T
R
b
i
w
R
c
b
P
l
c
i
1
λ
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
T
P_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}^T
Plcj′=RcbTRbjwTRbiwRcbPlciλl1+RcbTRbjwTRbiwtcb+RcbTRbjwTtbiw−RcbTRbjwTtbjw−RcbTtcbT 需要优化的变量都需要进行求导。包括
(
R
b
i
w
,
R
b
j
w
)
,
(
R
c
b
,
t
c
b
)
,
(
λ
l
)
(R_{b_i}^w,R_{b_j}^w),(R_c^b,t_c^b),(\lambda_l)
(Rbiw,Rbjw),(Rcb,tcb),(λl)。
(1)第
i
、
j
i、j
i、j两帧在世界坐标系下的姿态
(
R
b
i
w
,
R
b
j
w
)
(R_{b_i}^w,R_{b_j}^w)
(Rbiw,Rbjw)
(2)IMU与相机之间的外参关系
(
R
c
b
,
t
c
b
)
(R_c^b,t_c^b)
(Rcb,tcb)
(3)逆深度
(
λ
l
)
(\lambda_l)
(λl)
以第
i
i
i帧为例,需要对旋转
R
b
i
w
{R_{b_i}^w}
Rbiw和平移
t
b
i
w
{t_{b_i}^w}
tbiw进行求导。将除此之外的变量设为
A
=
R
c
b
T
R
b
j
w
T
A = {R_{c}^b}^T {R_{b_j}^w}^T
A=RcbTRbjwT 和
x
=
R
c
b
P
l
c
i
1
λ
l
+
t
c
b
x = {R_{c}^b} {P_{l}^{c_i}}{1 \over \lambda_l} + {t_{c}^b}
x=RcbPlciλl1+tcb
即化简得到(与优化量无关的后两项舍去):
P
l
c
j
′
=
A
(
R
b
j
w
x
+
t
b
i
w
)
P_l^{c_j'} = A(R_{b_j}^wx+t_{b_i}^w)
Plcj′=A(Rbjwx+tbiw)对
t
b
i
w
{t_{b_i}^w}
tbiw进行求导:
∂
P
l
c
j
′
∂
t
b
i
w
=
A
=
R
c
b
T
R
b
j
w
T
{∂P_l^{c_j'} \over ∂{t_{b_i}^w}} =A= {R_{c}^b}^T {R_{b_j}^w}^T
∂tbiw∂Plcj′=A=RcbTRbjwT
对
R
b
i
w
{R_{b_i}^w}
Rbiw进行求导,因为
p
o
s
e
pose
pose 表达在
w
o
r
l
d
world
world 坐标系,根据旋转的叠加方式,添加的是右扰动:
∂
P
l
c
i
′
∂
φ
=
lim
φ
→
0
A
(
e
x
p
(
ϕ
i
∧
)
e
x
p
(
φ
∧
)
x
+
t
b
i
w
)
−
A
(
e
x
p
(
ϕ
i
∧
)
x
+
t
b
i
w
)
φ
{∂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+tbiw)−A(exp(ϕi∧)x+tbiw)
=
lim
φ
→
0
A
e
x
p
(
ϕ
i
∧
)
[
e
x
p
(
φ
∧
)
−
I
]
x
φ
= \lim_{\varphi\to\ 0}{ A{exp(\phi_i^∧)} [{exp(\varphi^∧)}-I]x\over \varphi}
=φ→ 0limφAexp(ϕi∧)[exp(φ∧)−I]x
=
lim
φ
→
0
A
e
x
p
(
ϕ
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
φ
→
0
A
e
x
p
(
ϕ
i
∧
)
φ
∧
x
φ
=
lim
φ
→
0
−
A
e
x
p
(
ϕ
i
∧
)
x
∧
φ
φ
=
lim
φ
→
0
−
A
e
x
p
(
ϕ
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∧将
A
A
A与
x
x
x带入可得到:
∂
P
l
c
i
′
∂
φ
=
−
R
c
b
T
R
b
j
w
T
R
b
i
w
(
R
c
b
P
l
c
i
1
λ
l
+
t
c
b
)
∧
{∂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′=−RcbTRbjwTRbiw(RcbPlciλl1+tcb)∧
综上重投影坐标 P l c j ′ P_l^{c_j'} Plcj′对位姿的求导已经推导完成,其余求导相似的方法,略略略!
扰动模型的求导可以替代关于状态量的雅可比,扰动模型
F
F
F下误差状态的求导 ,将它在
d
x
=
0
dx=0
dx=0处做泰勒展开:
f
(
x
0
+
d
x
)
=
F
(
d
x
)
=
F
(
0
)
+
F
′
(
0
)
(
d
x
−
0
)
=
f
(
x
0
)
+
∂
f
(
x
0
⨁
d
x
)
∂
d
x
d
x
f(x_0+dx) = F(dx) \\ =F(0)+F'(0)(dx-0) \\ =f(x_0)+{∂f(x_0\bigoplus dx) \over ∂dx}dx
f(x0+dx)=F(dx)=F(0)+F′(0)(dx−0)=f(x0)+∂dx∂f(x0⨁dx)dx
在单位平面模型下:视觉残差函数及雅可比公式推导