视觉SLAM十四讲第十一讲笔记
带有相机位姿和空间点的图优化称为BA,能够有效地求解大规模的定位与建图问题。但是,随着时间的流逝,机器人的运动轨迹将越来越长,地图规模也将不断增长。像BA这样的方法,计算效率就会(令人担忧地)不断下降。 本讲主要描述了一个方法,用于更大型场景下使用的后端优化算法。
一、位姿图(pose grap)
BA中的特征点数量远大于位姿节点。因此在Pose grap中,舍弃了对路标点的优化,只保留Pose之间的边,使用Pose grap。Pose grap图优化的节点表示相机位姿,以
ϵ
1
,
.
.
.
,
ϵ
n
\epsilon_1,...,\epsilon_n
ϵ1,...,ϵn表示,边表示两个位姿节点之间相对运动的估计。 这个运动估计可以写为:
Δ
ϵ
i
j
=
ϵ
i
−
1
∘
ϵ
j
=
l
n
(
e
x
p
(
(
−
ϵ
i
)
∧
)
e
x
p
(
ϵ
j
∧
)
)
∨
\Delta \epsilon_{ij} = \epsilon_i^{-1} \circ \epsilon_j = ln(exp((-\epsilon_i)^{\land})exp(\epsilon_j^{\land}))^{\vee}
Δϵij=ϵi−1∘ϵj=ln(exp((−ϵi)∧)exp(ϵj∧))∨
或者按照李群的写法:
Δ
T
i
j
=
T
i
−
1
T
j
\Delta T_{ij} = T_i^{-1} T_j
ΔTij=Ti−1Tj
按照图优化的思路来看,实际当中该等式不会精确地成立,因此我们设立最小二乘误差,然后和以往一样,讨论误差关于优化变量的导数。这里我们把上式的
Δ
T
i
j
\Delta T_{ij}
ΔTij移至等式右侧,构建误差
e
i
j
e_{ij}
eij:
e
i
j
=
l
n
(
Δ
T
i
j
−
1
T
i
−
1
T
j
)
∨
=
l
n
(
e
x
p
(
(
−
ϵ
i
j
)
∧
)
e
x
p
(
(
−
ϵ
i
)
∧
)
e
x
p
(
ϵ
j
∧
)
)
∨
\begin{aligned} e_{ij} &= ln(\Delta T_{ij}^{-1} T_i^{-1} T_j)^{ \vee}\\ &=ln(exp((-\epsilon_{ij})^{\land})exp((-\epsilon_i)^{\land})exp(\epsilon_j^{\land}))^{\vee} \end{aligned}
eij=ln(ΔTij−1Ti−1Tj)∨=ln(exp((−ϵij)∧)exp((−ϵi)∧)exp(ϵj∧))∨
求
e
i
j
e_{ij}
eij关于这两个变量的导数。按照李代数的求导方式,给
ϵ
i
\epsilon_i
ϵi和
ϵ
j
\epsilon_j
ϵj各一个左扰动:
δ
ϵ
i
\delta \epsilon_i
δϵi和
δ
ϵ
j
\delta \epsilon_j
δϵj,于是误差变为:
e
^
i
j
=
l
n
(
T
i
j
−
1
T
I
−
1
e
x
p
(
(
−
δ
ϵ
i
)
∧
)
e
x
p
(
δ
ϵ
j
∧
)
T
j
)
∨
\hat{e}_{ij} = ln(T_{ij}^{-1}T_I^{-1}exp((-\delta \epsilon_i)^{\land})exp(\delta \epsilon_j^{\land})T_j)^{\vee}
e^ij=ln(Tij−1TI−1exp((−δϵi)∧)exp(δϵj∧)Tj)∨
上面式子用BHC近似,然后对变量进行求导,具体不再细化,简言之,所有的位姿顶点和位姿—位姿边构成了一个图优化,本质上是一个最小二乘问题。