📝笔记:SLAM常见问题(四):求解ICP,利用SVD分解得到旋转矩阵
今天讲一篇关于利用SVD
方法求解ICP
问题的文献《Least-Squares
Rigid Motion Using SVD》,这篇文章非常精彩地推导出将
问题描述
已知ICP
问题的形式):
接下来文章分别推导了平移向量
计算平移量
此时假定旋转矩阵
令:
于是我们得到
从上式看出最优的平移量
由此我们将原问题转换成了无平移量的优化问题,令:
计算旋转量
简化上式:
将整理好的上式带入简化后的
上式就是对
利用上式,式
接下来回顾一下迹的性质:
令SVD
分解:
于是式
由于
由于SVD
分解的性质可知
可见,当迹最大时
看到没,R的解析解竟然如此简单,并且与SVD
分解产生了联系,让人感觉到了数学的美妙。不过到这里还没完,后面作者进行了一步方向矫正,大意是这样的:利用公式反射矩阵
,此时可以通过验证
假设反射矩阵
,
于是我们试图找到一个反射矩阵
反射矩阵
,所以并不能这样取值。然后我们看第二个极大值点
综上,为了将解转换为旋转矩阵要进行如下处理:
可以总结的套路
为了得到ICP
问题的最优解,我们可以采取如下套路:
step1. 计算两组匹配点的加权中心:
step2. 得到去中心化的点集:
step3. 计算
其中,
step4. 对SVD
分解
step5. 计算平移量: