Cube_SLAM_wu icon indicating copy to clipboard operation
Cube_SLAM_wu copied to clipboard

cube slam加入orb slam

Open machprog opened this issue 5 years ago • 3 comments

您好,打扰了。请问您是如何将cube slam加入orb slam的呢?作者发布了一个结合orb slam版本,似乎是读取已有的三维检测结果直接用pangolin绘制出来,但是却没看懂代码是在哪一部分实现的。您能否提供一下您实现的cube slam加入orb slam的代码或者是思路呢?非常感谢您。

machprog avatar Nov 27 '19 07:11 machprog

您好,是的作者提供的 orbcubeslam 直接读取的离线车辆三维位姿,可以参考作者原始 Cube SLAM 中的 object_slam/src/main_obj.cpp 和 detect_3d_cuboid/src/main.cpp 是怎么进行三维物体检测的,我的代码中也就是先计算 detect_cuboid() 函数所需要的参数,加入到了 ORB-SLAM2 的恒速运动模型中,每次更新了位姿就调用 detect_cuboid() 进行三维物体检测。但必须提醒一下,效果并不好,在二维图像上绘制立方框可能效果还不错,但计算的物体三维位姿不准确存在不小的误差。

wuxiaolang avatar Nov 29 '19 01:11 wuxiaolang

我实现了一下,感觉效果奇差,还不如object_slam部分检测的好,很多帧都检测不到立方,检测结果歪斜的也很厉害。看了你在readme里贴出的效果,感觉还是挺好的,我是把三维检测直接加到了Tracking::Track()函数里,初始化transToworld_init=[1 0 0 0; 0 0 1 0; 0 -1 0 0; 0 0 0 1],但是检测得到的立方偏差很大。

machprog avatar Dec 08 '19 11:12 machprog

  1. object_slam demo 中针对的物体比较规则,物体上顶点采样会比较准确,所以看起来效果会比较好;
  2. 在 kitti 中效果确实不好(在 tum 中物体多且不规则的时候效果其实也不太好),作者在演示视频中 kitti 数据集中是用 matlab 版本三维检测并且经过一些对齐等处理之后效果,可以参考我之前问的作者的这个问题:About the detected pose of the 3D object
  3. 我 readme 里的效果其实也很差的,我也没经过什么处理,只提供了初始帧相机的三个角度,检测结果有很多倾斜,偏航角不准确,变化比较大;
  4. 如果要使用的话我觉得首先要针对相对规则的物体,线段能检测得比较多、上顶点要比较好采样得到,此外不是每一次检测都有用,选取评分高的检测结果使用。

wuxiaolang avatar Dec 09 '19 01:12 wuxiaolang