Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

怎么把光流结果加入Tracking过程呀 #1

Open
XinnWang opened this issue Jan 15, 2020 · 3 comments
Open

怎么把光流结果加入Tracking过程呀 #1

XinnWang opened this issue Jan 15, 2020 · 3 comments

Comments

@XinnWang
Copy link

您好,十分感谢您能开源代码。我有个疑问想问下,您的代码是在Track前面进行一次光流计算对嘛,但是我不太理解光流计算的结果会怎样影响SLAM的结果呢?我看到光流算出来的RT仅仅是命令行输出了一下,并没有赋值之类的。您CSDN上面说的“使用光流法跟踪非关键帧,不需要提取所有帧的特征点。”是需要在哪里修改代码呀?

@suffeeen suffeeen reopened this Jan 15, 2020
@suffeeen
Copy link
Owner

你好,2020年1月1日提交的版本是尚未完成的版本,只是在orbslam的基础上加入了光流跟踪计算相机位姿,并没有orbslam主体产生影响。稍后我会提交下一个版本

@XinnWang
Copy link
Author

您好,十分感谢您的更新。我看到您的代码是只支持RGBD相机的版本,想问下您是否考虑增加单目相机的支持呢?如果您没有这个计划,我fork了您的代码,按照您的想法改了一个单目的版本,但是跑起来效果不是很理想,尤其是弯道的地方。如果您有空的话,可以帮我看看嘛?代码地址 再次感谢您的帮助。

@suffeeen
Copy link
Owner

suffeeen commented Jan 16, 2020

单目情况跑不好是正常的,尤其是转弯的时候,场景变化太大,图像也会变模糊,匹配就更难了。而且单目情况下,一对配对点提供的约束要小于双目和rgbd的情况,而且每对配对点的误差比双目和rgbd误差更大,更容易被判断为outlier。
如果是项目需要,建议换传感器,做多传感器融合。
如果只是想减少单目跟踪失败的情况,只能尽可能多的产生3D点,并在跟踪到3D点较少的情况下立刻插入新的3D点。
有两个方法,一个降低插入关键帧的要求,在Tracking::NeedNewKeyFrame()中降低c3、c4、c5的要求,还有一个是尽可能多的用关键帧三角化生成3D点,在
LocalMapping::CreateNewMapPoints()
{
if(ratioBaselineDepth<0.01)
continue;
}
把0.01改小,也可以直接改为false试试
这两种方法应该会减少跟踪失败的情况,但会降低运行速度,而且提升有限。
还有一个比较玄学的修改方式:
修改: Optimizer::PoseOptimization(Frame *pFrame)
把这个数组里面的值改大,应该可以增加inlier的数量:
const float chi2Mono[4]={5.991,5.991,5.991,5.991};

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants