Cube_SLAM_wu
Cube_SLAM_wu copied to clipboard
cube slam加入orb slam
您好,打扰了。请问您是如何将cube slam加入orb slam的呢?作者发布了一个结合orb slam版本,似乎是读取已有的三维检测结果直接用pangolin绘制出来,但是却没看懂代码是在哪一部分实现的。您能否提供一下您实现的cube slam加入orb slam的代码或者是思路呢?非常感谢您。
您好,是的作者提供的 orbcubeslam 直接读取的离线车辆三维位姿,可以参考作者原始 Cube SLAM 中的 object_slam/src/main_obj.cpp 和 detect_3d_cuboid/src/main.cpp 是怎么进行三维物体检测的,我的代码中也就是先计算 detect_cuboid() 函数所需要的参数,加入到了 ORB-SLAM2 的恒速运动模型中,每次更新了位姿就调用 detect_cuboid() 进行三维物体检测。但必须提醒一下,效果并不好,在二维图像上绘制立方框可能效果还不错,但计算的物体三维位姿不准确存在不小的误差。
我实现了一下,感觉效果奇差,还不如object_slam
部分检测的好,很多帧都检测不到立方,检测结果歪斜的也很厉害。看了你在readme
里贴出的效果,感觉还是挺好的,我是把三维检测直接加到了Tracking::Track()函数里,初始化transToworld_init=[1 0 0 0; 0 0 1 0; 0 -1 0 0; 0 0 0 1]
,但是检测得到的立方偏差很大。
- object_slam demo 中针对的物体比较规则,物体上顶点采样会比较准确,所以看起来效果会比较好;
- 在 kitti 中效果确实不好(在 tum 中物体多且不规则的时候效果其实也不太好),作者在演示视频中 kitti 数据集中是用 matlab 版本三维检测并且经过一些对齐等处理之后效果,可以参考我之前问的作者的这个问题:About the detected pose of the 3D object;
- 我 readme 里的效果其实也很差的,我也没经过什么处理,只提供了初始帧相机的三个角度,检测结果有很多倾斜,偏航角不准确,变化比较大;
- 如果要使用的话我觉得首先要针对相对规则的物体,线段能检测得比较多、上顶点要比较好采样得到,此外不是每一次检测都有用,选取评分高的检测结果使用。