解决最小二乘问题,通常遵循以下步骤:
-
构建残差函数:根据位姿图的节点和边,我们定义残差函数 eije_{ij}eij。这通常涉及到两个节点之间的相对运动的计算,或者是通过传感器测量得到的观测值与预测值之间的差异。
-
线性化残差函数:将非线性残差函数 eije_{ij}eij 在当前估计值 ξ\xiξ 处进行泰勒展开,得到其在当前估计值附近的线性近似。这可以通过计算残差函数的雅可比矩阵 JijJ_{ij}Jij 来实现,得到:
eij(ξ)≈eij(ξ(0))+Jijδξ e_{ij}(\xi) \approx e_{ij}(\xi^{(0)}) + J_{ij} \delta \xi eij(ξ)≈eij(ξ(0))+Jijδξ
其中,JijJ_{ij}Jij 是残差函数 eije_{ij}eij 关于位姿变量 ξ\xiξ 的雅可比矩阵,δξ\delta \xiδξ 是位姿变量的增量。
- 构建正规方程:基于线性化的残差函数,我们构建正规方程来表示最小化误差的加权和。正规方程通常可以表示为:
minδξ12∑i,j∈EeijTΣij−1eij \min_{\delta \xi} \frac{1}{2} \sum_{i,j \in E} e_{ij}^T \Sigma_{ij}^{-1} e_{ij} δξmin21i,j∈E∑eijTΣij−1eij
通过将线性化的残差函数代入,我们得到:
minδξ12∑i,j∈E(eij(ξ(0))+Jijδξ)TΣij−1(eij(ξ(0))+Jijδξ) \min_{\delta \xi} \frac{1}{2} \sum_{i,j \in E} (e_{ij}(\xi^{(0)}) + J_{ij} \delta \xi)^T \Sigma_{ij}^{-1} (e_{ij}(\xi^{(0)}) + J_{ij} \delta \xi) δξmin21i,j∈E∑(eij(ξ(0))+Jijδξ)TΣij−1(eij(ξ(0))+Jijδξ)
- 解正规方程:求解上述正规方程,得到位姿变量的增量 δξ\delta \xiδξ,然后更新当前的估计值:
ξ←ξ+δξ \xi \leftarrow \xi + \delta \xi ξ←ξ+δξ
- 迭代优化:重复步骤2-4,直到满足收敛条件(例如,位姿变量的增量 δξ\delta \xiδξ 很小或残差函数的变化很小)。