Solomon He
Solomon He
从log上面来看,应该是手机性能不够,因为VINS需要调用非线性优化即ceres solver库来解决非线性优化问题,而每次调用该库它会循环迭代直到满足两个条件中的一个,一是迭代收敛,得到正常结果,另外一个是迭代不收敛,但是允许的最大时间到了,强行终止,但是我们得到的答案是错误的。你运行的结果在初始化的时候就已经出错了,比如这个gyroscope bias的初始化:gyroscope bias initial calibration------------------: nan, nan, 0.000000。 如果想得到正确答案,就得去修改VINS代码中设置最大运行迭代时间,调大,我这边简单在红米3 s手机上(cortex 53, 1.4GHZ)做了测试,有的非线性优化都调到了0.5s才能得到收敛结果,希望我的回答会对你有帮助。
他代码里不是所有ceres都用这个参数作为基数然后乘以个多少倍作为最大迭代时间设置的,有的是手动直接设置的常数,另外,这里面的这个参数是我和PC端对比着profile,保证优化前后两者结果一致的情况下设置的参数,且是在我手机上,最可靠的办法,就是每个非线性优化前后都和golden数据(PC)比,测试出符合你手机最佳的最大迭代时间,注意是每个非线性优化。 发件人: Dorothy-2016 [mailto:[email protected]] 发送时间: 2017年11月21日 17:31 收件人: heguixiang/Android-VINS 抄送: Solomon He; Comment 主题: Re: [heguixiang/Android-VINS] running error (#2) 在euroc_config.yaml里有个max_solver_time的参数,原来默认设置0.04,代码里面最大运行迭代时间应该是options.max_solver_time_in_seconds,我看到原来计算的时候是options.max_solver_time_in_seconds = SOLVER_TIME4.0/5.0,你改成了SOLVER_TIME50,并且默认设置改成了0.4,这样的话最大运行迭代时间从0.032s到2s了,我现在默认按照你的设置,会出现上面的不收敛问题,你的意思是不是还要把0.4再调大点 — You are receiving this because you commented....