我正在尝试使用我的自定义 .klg 文件运行 SLAM 算法(ElasticFusion)。我尝试了以下两种方法:
第一种方法是从单独的深度和 rgb 图像 (.png) 文件及其时间戳信息手动构建 .klg 文件。我对此尝试了转换脚本我在这个Sequence 'freiburg1_desk',然后运行 ElasticFusion 。我得到了很好的结果和点云。但是当我尝试按照相同的步骤在自己的设备上记录环境时,我没有得到想要的结果或点云。我在实时记录中得到的结果要好得多。我想这是因为我用于深度图像可视化的代码。
np.clip(depth, 0, 2**10-1, depth)
depth2=depth/2842.5
depth2+=1.1863
depth=np.tan(depth2)
depth*=0.1236
depth-=0.037
depth*=1000
#depth = 0.1236 * math.tan(depth / 2842.5 + 1.1863);
depth = depth.astype(np.uint16)
return depth
我从上面的公式中得到我从这里
Stéphane Magnenat 在这篇文章中给出了一个更好的近似值:
distance = 0.1236 * tan(rawDisparity / 2842.5 + 1.1863) in meters
. 添加 -0.037 的最终偏移项使原始 ROS 数据居中。
我尝试的第二种方法是使用这个LoggerThomas Whelan (ElasticFusion) 建议的我运行这个记录器没有任何错误。
Number devices connected: 1
1. device on bus 001:14 is a Xbox NUI Camera (2AE) from Microsoft (45E) with serial id 'A00366911101042A'
searching for device with index = 1
Opened 'Xbox NUI Camera' on bus 1:14 with serial number 'A00366911101042A'
但我的深度和 RGB 图像出现黑屏。
我正在使用 Ubuntu 16.04 和 Kinect1。任何形式的建议或帮助将不胜感激