单目 slam 的初始坐标系是随机的且尺度未知。
但我想知道如何将初始坐标系转换为另一个坐标系(从标记,如棋盘)。
有没有论文或博客。
非常感谢!
单目 slam 的初始坐标系是随机的且尺度未知。
但我想知道如何将初始坐标系转换为另一个坐标系(从标记,如棋盘)。
有没有论文或博客。
非常感谢!
这是单目设置中的一个难题,IMU 给出了很好的结果(例如 这里)。但似乎您目前除了相机外没有任何传感器。在这种情况下,使用棋盘或标记来估计比例并不是一个理想的解决方案,因为它需要您在初始化时对相机的运动进行大量控制。例如,想到的一种简单方法是:保持棋盘完全垂直,并将相机固定在距离N处,其轴与棋盘正交。现在,确保将相机完全平行于电路板移动一段时间t。在此时间间隔内,您在板上检测到的每个特征都在距离N从相机。这意味着,如果它们在您的 SLAM 坐标中的深度为s,那么您的比例将为N/s。然而,保持运动完全平行是很尴尬的。我希望(请随时纠正我)其他基于标记的方法同样糟糕。
一个更好但更耗时(从开发的角度来看)的选项是使用基于模型的跟踪器(丰富的文献,想到的一个非常古老的例子是pwp3D)。在您的环境中取一个已知对象(您可以在 CAD 模型中轻松获得的简单对象,其中比例是真实比例)。现在,您的问题是 SLAM 引用与对象空间引用的对齐问题。为此,您可以在原始图像中使用轮廓检测,投影 CAD 模型并尝试尽可能地对齐它们(请注意,您必须在足够数量的图像中对齐这些轮廓,使用不同的视点,在束调整方式)。
另一种可能性是使用神经网络来预测深度(有关该主题的丰富文献),但估计通常不太精确。
解决与地面实况坐标对齐的问题:
我从您的评论中了解到,您希望将您的 SLAM 坐标与先前已知的参考对齐。我认为研究地理参考的 SLAM 系统可能对您有益,因为它们在初始化时面临与您相同的问题。现在,回到手头的问题,这是我的做法:
让我们记下G您想要的坐标系,并让S成为 SLAM 参考。您的 SLAM 算法将从标记中重建特征,我们将其称为f'_1,f'_2,f'_3
。这些将对应f_1,f_2,f_3
于您的标记上的功能。重要的是,您可以根据它们的外观(纹理或颜色等)正确匹配这些特征。一旦你有了这些匹配,问题就是找到相似性sim=[sR sT;0 1]
(使用 matlab/octave-like 符号),其中R是旋转,T是平移,s是比例参数。您现在应该能够将您的问题表述为某种形式
argmin_{R,T,s} sum(d(f'_i, sim*f_i))
其中索引1,...,N的总和(在图中N=3),并且 d表示参考G中的特征与其在参考S中的匹配之间的距离(我会说,欧几里得)。当然,这是一个宽泛的表述,但我认为它可以作为您解决方案的一般基础。但是请注意,如果在最小化这样的成本函数之前可以先验R,T,s会好很多,因为这类问题的最小化算法往往会陷入局部最小值。