使用kinect进行位置跟踪 - 如何确定封闭3d空间中的头部位置

时间:2013-06-14 09:57:22

标签: kinect openni kinect-sdk openkinect virtual-reality

我认为kinect标准使用方法是将此设备置于某个固定位置并让它进行计算,例如跟踪一个在前面移动的人。

但我的用例不同。我需要做的是改变参考框架 - 将kinect连接到头部并开始在房间周围移动。然后我需要计算它在房间内的位置(我已将房间映射到内存中)。

因此,跟踪现在应该基于当前设备位置本身及其与房间墙壁,地板和天花板的关系。据我所知,kinect应该能够反射来自墙壁的光线并给出deph - 我当前与墙壁之间的距离等等。如果有可能实现,我需要获得一些信息。

你能否为我提供一些建设性的参考资料,我可以更深入地研究这个主题,以便能够开始实现所需的行为呢?

1 个答案:

答案 0 :(得分:1)

我建议您查看有关基于图像的室内本地化的研究文章,以了解有关此内容的更多信息。基础知识是:您有一组训练数据(房间的3D模型),并且您想要查看在哪种情况下(=在哪个物理位置),输入数据更符合您的模型。

在这种情况下,有两件重要的事情需要考虑:

  1. 考虑到您已经知道用户在上一帧中的位置,用户在新框架中可能有哪些新位置?这很重要,因为您不希望像蛮力一样测试每种可能的场景(想象一下计算机必须生成多少x,y,z和头部角度)。例如,您只能根据用户之前已知的位置将半径10厘米和10度旋转视为所有可能的新位置。您可以想到更智能的解决方案(例如,基于用户速度和移动方向)。

  2. 测试这些不同场景与3D模型的一致性。这需要一个从可能的解决方案的角度获取现实世界的3D模型的功能,以及相机的输入,然后告诉您这两者作为数字(或数字组)的差异。因此,如果您可以针对相机输入针对每个可能的位置运行此功能,则具有最小结果(最小差异)的位置是用户的最可能位置。现在,有许多这些功能。我会推荐SAD(绝对差值之和),因为我已经看到它在类似的项目中使用,而且非常简单。为了更加复杂,请查看基于特征的图像比较。