QuadricSLAM是object SLAM的一种解决方案,可以提升定位的鲁棒性。物体的三维表示可以是CAD模型、点云模型、矩形包围盒、二次曲面等。QuadricSLAM使用的是二次曲面中的椭球面。
椭球面的定义是:
其中为面上的点,为切平面。为4x4的对称矩阵,共10个自由度,包括一个尺度。
这里使用的是它的对偶:
非退化情况下,
可以表示为:
其中:,
椭球面在像素平面上的投影为一个二次曲线,但常常只部分可见:
这里通过计算二次曲线与图像边界的角点确定物体的包围框,这样就可以与目标检测结果bbox计算几何误差。
注意到,通过目标检测只能获得bbox,下面将它们转化为切平面:
其中为box的一条边的Plucker向量表示。
每个bbox可以提供4个约束,而共有10个自由度,所以,3个以上的bbox就可以求解出。
在求解出后,可通过下面的公式恢复出:
个人感觉,QuadricSLAM虽然提供了将目标检测结果融入SLAM的方式,但以二次曲面做约束太弱了,对定位精度不会有提升。
参考:
https://zhuanlan.zhihu.com/p/73420573
https://arxiv.org/pdf/1804.04011
http://cvrs.whu.edu.cn/downloads/ebooks/%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89%E4%B8%AD%E7%9A%84%E6%95%B0%E5%AD%A6%E6%96%B9%E6%B3%95.pdf