我正在尝试使用Lenovo Phab 2 Pro合并从不同角度的物体拍摄的点云。我使用framepair COORDINATE_FRAME_START_OF_SERVICE
作为基础,COORDINATE_FRAME_DEVICE
作为目标。然后,我使用与TangoSupport.getMatrixTransformAtTime()
一起检索的转换矩阵转换点云,其时间戳与点云相同。然而,点云并没有像我希望的那样排好,你可以在这张图片中看到:
我认为这是由于设备在物体周围移动时所经历的漂移造成的。有没有办法通过使用区域学习或类似的方法来最小化漂移?或者我应该尝试以不同的方式合并点云,例如ICP注册?
答案 0 :(得分:1)
首先,我会尝试使用区域学习。 在Sturm(2015)的演讲中,他谈到的误差<1%的移动距离, 见第23页: https://jsturm.de/publications/data/sturm2015_dagstuhl.pdf
其次,在估计姿势之前收集一些特征似乎更准确: Project Tango onPoseAvailable() and getPoseAtTime() discrepancies
我建议开始测量场景,移动设备,这样可以很好地估计视觉惯性测距的比例,并在一分钟后开始测量depht图像。 (一个按钮工作得很好)。并使用TangoSupport.getMatrixTransformAtTime()最终转换所有内容。
我认为ICP不会那么好用,因为深度图像相当小而且噪音很大。我对开发平板电脑深度相机的精确度估计在1.5米距离处约为2毫米,在3米处达到约11毫米。
答案 1 :(得分:0)
事实上,只有鱼眼摄像头和IMU才能用于定位。 这意味着3D数据不用于本地化。 因此校准错误可能导致不准确。 您可以找到calibration tutorial here。
框架到关键帧的漂移提供了视觉里程计算算法也可能导致对齐问题。
事实上,对于扫描物体,我建议Structure提供帧到模型跟踪方法和更高分辨率的深度传感器。