SLAM要点

偏导数

优化方程稀疏性的解释

SLAM优化函数中,H矩阵和B矩阵是稀疏的,因此可以针对性的进行一些算法设计来加速求解。

HB为什么是稀疏的,直观解释如下所示:

基于SVD分解计算旋转和平移向量

点云配准任务详见pcl中的点云配准

如果可以得到两个点云之间的同名点对,那么就可以计算出旋转和平移向量的闭式解,以二维点集之间的相对变换为例进行解释:

  1. 首先对原始的点云进行归一化操作,即减去对应质心点的坐标,得到\(\tilde{\mathbf{X}}, \tilde{\mathbf{Y}}\)

\[ \tilde{x}=x_i-\bar{x},\tilde{y}=y_i-\bar{y},i=1,...,N \]

  1. 计算加权协方差矩阵;

\[ \mathbf{H}=\tilde{\mathbf{X}}^{T} \mathbf{E} \tilde{\mathbf{Y}} \]

其中\(\mathbf{E}=\mbox{diag}(e_1,e_2,...,e_N)\).

  1. \(\mathbf{H}\)做SVD分解即可计算从\(\mathbf{X}\)\(\mathbf{Y}\)的旋转矩阵;

\[ \begin{align} [\mathbf{U},\mathbf{S},\mathbf{V}] &= \mbox{SVD}(\mathbf{H}) \\ \hat{\mathbf{R}} &= \mathbf{V} \left[\begin{array}{ccc} 1 &0 &0 \\ 0 &1 &0 \\ 0 &0 &\mbox{det}(\mathbf{V}\mathbf{U}^{T}) \end{array} \right] \mathbf{U}^{T} \end{align} \]

其中det()是行列式。

  1. 最后再计算平移向量;

\[ \hat{\mathbf{t}}=\bar{y}-\hat{\mathbf{R}\bar{x}} \]

至于背后的数学推导,见这里。

PCL中的代码解释,详见另外一篇博客,或者文章《Least-Squares Rigid Motion Using SVD》。

title:SLAM要点

author:AmazingHao

link:http://whu-lyh.github.io/blogs/2025/05/21/SLAM-union/

publish time:2025-05-21

update time:2025-05-21

| visits
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×