Micheal Kaess,Ananth Ranganathan,Frank Dellaert, iSAM:Incremental Smoothing and Mapping,IEEE
QR分解和Cholesky分解
之前的推导将SLAM问题的最大后验估计通过取负对数,转化成最小二乘问题,后来又通过线性化转换成线性最小二乘问题,整理变形后得到下面的形式
θ
∗
=
a
r
g
max
θ
∥
A
θ
−
b
∥
2
2
\theta^*=arg\max_\theta \Vert A\theta-b\Vert^2_2
θ∗=argθmax∥Aθ−b∥22如果采用Cholesky分解,就是对上式求导,令导数为0,得到
A
T
A
θ
=
A
T
b
A^TA\theta=A^Tb
ATAθ=ATb,对
A
T
A
A^TA
ATA进行Cholesky分解。这样求解,会对矩阵条件数
A
T
A
A^TA
ATA进行开方。
为了避免开方,采用对量测雅可比矩阵
A
A
A进行QR分解,即
A
=
Q
[
R
0
]
A=Q\begin{bmatrix}R\\0\end{bmatrix}
A=Q[R0]其中,
R
∈
R
n
×
n
R\in \mathbb{R}^{n\times n}
R∈Rn×n是上三角平方根信息矩阵(存在
R
T
R
=
A
T
A
R^TR=A^TA
RTR=ATA),
Q
∈
R
m
×
m
Q\in \mathbb{R}^{m\times m}
Q∈Rm×m是正交矩阵。将这个QR分解代入上面的最小二乘问题,得到
∥
A
θ
−
b
∥
2
2
=
∥
Q
[
R
0
]
θ
−
b
∥
2
2
=
∥
Q
T
Q
[
R
0
]
θ
−
Q
T
b
∥
2
2
=
∥
[
R
0
]
θ
−
[
d
e
]
∥
2
2
=
∥
R
θ
−
d
∥
2
+
∥
e
∥
2
\begin{aligned} \Vert A\theta -b\Vert _2^2 =& \Vert Q\begin{bmatrix}R\\0\end{bmatrix} \theta-b\Vert _2^2\\ =& \Vert Q^TQ\begin{bmatrix}R\\0\end{bmatrix} \theta-Q^Tb\Vert _2^2\\=&\Vert \begin{bmatrix}R\\0\end{bmatrix} \theta-\begin{bmatrix}d\\e\end{bmatrix}\Vert _2^2\\=&\Vert R\theta -d\Vert ^2 +\Vert e\Vert ^2 \end{aligned}
∥Aθ−b∥22====∥Q[R0]θ−b∥22∥QTQ[R0]θ−QTb∥22∥[R0]θ−[de]∥22∥Rθ−d∥2+∥e∥2其中,
[
d
,
e
]
T
=
Q
T
b
[d,e]^T=Q^Tb
[d,e]T=QTb,
d
∈
R
n
d\in \mathbb{R}^n
d∈Rn,
e
∈
R
m
−
n
e\in \mathbb{R}^{m-n}
e∈Rm−n。对上式取最小值,当且仅当
R
θ
=
d
R\theta=d
Rθ=d时上式取得最小值
∥
e
∥
2
\Vert e\Vert^2
∥e∥2。
通过QR分解将最小二乘问题转化成具有唯一解的线性问题
R
θ
∗
=
d
R\theta^*=d
Rθ∗=d。
Incremental Smoothing and Mapping
矩阵
A
A
A的QR分解可以使用Givens Rotations将对角线下的元素转化成0,从而得到上三角矩阵
R
R
R,不断左乘的正交矩阵或者说Givens Rotations的累乘得到矩阵
Q
Q
Q,
Q
Q
Q一般是稠密的。
当新的量测到来时,比起更新、再分解矩阵
A
A
A,通过QR-updating直接修正之前的分解是更有效的。假设增加一行新的量测
[
Q
T
1
]
[
A
w
T
]
=
[
R
w
T
]
,
n
e
w
R
H
S
:
[
d
γ
]
\begin{bmatrix}Q^T&\\ &1\end{bmatrix}\begin{bmatrix}A\\w^T\end{bmatrix}=\begin{bmatrix}R\\w^T\end{bmatrix},new RHS:\begin{bmatrix}d\\\gamma\end{bmatrix}
[QT1][AwT]=[RwT],newRHS:[dγ]其中,
A
=
Q
R
→
Q
T
A
=
Q
T
Q
R
=
R
A=QR\to Q^TA=Q^TQR=R
A=QR→QTA=QTQR=R,
w
T
w^T
wT是新增的量测,
γ
\gamma
γ是新增的RHS。对于上式加入一行新的量测后,仍然可以等式两端左乘Givens Rotations,将矩阵
R
R
R转化为上三角矩阵,这样就是实现了新的矩阵
A
′
A'
A′的QR分解。