ORB_SLAM与ORB_SLAM2的区别?还经常出现跟踪失败,跟踪失败的原因

文章转至知乎大神们的讨论,自从进入到视觉SLAM,感觉来到了新的世界。

     

作者:颜沁睿
链接:https://www.zhihu.com/question/49030315/answer/113970383
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

1. ORB2摆脱了对ROS的依赖,显示模块改用了胖果林(pangolin),也就是monoslam用的那个咧~~感觉不错,轻巧方便多了。读取摄像头的话,自己改改接口几分钟也就搞定了。
2. ORB2直接对双目和RGBD提供接口,看起来是想一统江湖~~~
3. ORB2的安装比起ORB1实在是太方便太小白太产品化了, 基本上不用配置,一键搞定。。。西班牙人在用户体验方面可真是煞费苦心啊。。
4. ORB2后来把速度慢得不行的.txt词典文件换成了二进制文件,读取速度一下取得了飞跃,这也算一个吧。(噢漏这里搞错了,bin词典是另外一个哥们自己加的,在pull request里面的#21,ORB2里依然用的txt。。谢谢小佳佳提醒lol)
5. 及其厚颜无耻地盗取一下几位大侠前两天的讨论成果:ORB1中做特征匹配时, 对特征尺度的计算方式貌似有误,在ORB2的代码中进行了修正。具体推导就不贴在这了。
6. 冯大神曾经说过,ORB2中的特征点是存储在四叉树结构中的,目的应该是为了加速匹配及均匀化分布?(我数据结构一团渣,说错请指正)。而在ORB1中是直接放在一个vector里的。具体的可以对比二者的ORBextractor.h文件。
7. 其它部分的代码我也没很仔细地比较过了,可以看出不少代码从命名和排列上都做了优化。恩恩,用户体验。。。。

哈哈这样一看好像区别还蛮多的啊~~~

说完区别说说跟踪失败吧,其实ORB比起LSD来说已经很不容易丢了好么,丢了还能回到原处去重定位。。。当然,单目SLAM要是啥时候能做到甩来甩去都跟不丢,那我们也就功德圆满了。
具体丢的原因:
1. 图像出现模糊:比如快速移动摄像头,尤其是卷帘快门那种,画面肯定就糊了啊,然后就没特征点了,然后就。。挂了呗。。。
2. 图像的纹理不够明显:白墙啊,提不出特征点啊,直接就挂了啊。。。
3. 动态物体:其实ORB的covisibility map已经很大程度上改善这个问题了,不过如果遇到大型慢速动态物出现在场景中,一样是没救的。。
4. 纯旋转:如果摄像头纯旋转,估计出来的运动是会有很大误差的,因为我们在做pose estimation的时候都是默认了运动是旋转加平移。当纯旋转的时候,运动矩阵自由度不变,而运动本身自由度小了,多出来的自由度自然很容易受到噪声的影响。。。。
5,6,7,8.....其实原因还有很多啊,才疏学浅,等大神们上来答答~~


解决方法嘛:大家现在研究SLAM不就在想办法解决这个问题么,什么语义呀imu啊

你可能感兴趣的:(机器人ROS,SLAM,ORB_SLAM)