GithubHelp home page GithubHelp logo

boxulibrary / drt-vio-init Goto Github PK

View Code? Open in Web Editor NEW
142.0 142.0 16.0 2.94 MB

The official repository of our CVPR2023 paper "A Rotation-Translation-Decoupled Solution for Robust and Efficient Visual-Inertial Initialization".

License: GNU General Public License v3.0

CMake 3.78% C++ 96.22%

drt-vio-init's People

Contributors

boxulibrary avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

drt-vio-init's Issues

代码运行

请问源码编译通过后,代码如何运行?

some questions about checkACCError()

Is this code used to detect outliers in the accelerometer, if (std:: abs (acc.norm() - G.norm())/G.norm()<5e-3) is_bad [i]=1; What is the implementation logic of it。In other words, what does it mean if the output of checkAccError() is false?

What is the mainly reason that I can hardly reproduce the results of the algorithm from the drtTightly method ?

Hi, Dr Xu, Thanks for the your released code !
However,I have some question about the running result with the dataset MH_02.
Why can't me get the final error accuracy consistent with the drtTightly_MH_02.txt in the results folder, but the accuracy of the drtLoosely method is basically the same?

In the following I would give the details about my testing result.

This is my final error precision from the MH_02 in my laptop,with the drtLoosely method:
time: 1403637004.701667 good
scale_error: 0.075404
pose_error: 0.031491
biasg_error: 1.952182
velo_error: 0.028373
gravity_error: 1.007952 0.029793
v0_error: 0.002777

And the following is the text from the drtLoosely_MH_02.txt.
time: 1403637004.701667 good
scale_error: 0.075404
pose_error: 0.031491
biasg_error: 1.952182
velo_error: 0.028373
gravity_error: 1.007952 0.029793
v0_error: 0.002777

The above seems that I can reproduce this result of the drtLoosely method.

However, the error accuracy from my test of the drtTightly method is quite different from the drtTightly_MH_02.txt as follow:

Here is the result from my testing of the drtTightly method.
time: 1403637004.701667 good
scale_error: 0.393548
pose_error: 0.137564
biasg_error: 1.952182
velo_error: 0.081215
gravity_error: 1.111030 0.029793
v0_error: 0.043315

But the text from the drtTightly_MH_02.txt is quite different :
time: 1403637004.701667 good
scale_error: 0.207388
pose_error: 0.087011
biasg_error: 2.366823
velo_error: 0.055400
gravity_error: 1.244864 0.031789
v0_error: 0.013197

Are there any tricks I have not used for the drtTightly method?
Thanks.

What scale error is required to be considered a good initialization result?

Thank you for your great work !

I see that when the program outputs initialization results, there are two slightly different output formats.

if  ( std::abs(s - 1) > 0.5 or std::abs(gravity_error) > 10 )  {
    LOG(INFO) << "===scale: " << s << " " << "gravity error: " << gravity_error;
    // ........
} else {
    LOG(INFO) << "***scale: " << s << " " << "gravity error: " << gravity_error;
    // ........
}

In a real VIO system, what magnitude of scale error should be kept during initialization to be a good initialization result, 1e-1 seems a bit large? Maybe it takes 1e-2 ?

I tried to add your initialization method to the VIO system, and the rotation RMSE and position RMSE before linearAlignment() were relatively small. However, position RMSE will increase after alignment. Is this due to inaccurate scale estimation ?

Looking forward to your reply !

repeat data during test run

在尝试中发现图像有重复的现象, 下面这部分是否有错?

for (int j = i; j < 100 + i; j += 1)
idx.push_back(j);

应该是?

    for (int j = i; j < 100 + i; j += 5) idx.push_back(j);

取每5个frame的第一个,从原有的20Hz变为4Hz

1

3Q

补充资料Sec.2

您在论文中多次提到详细推导请见补充资料Sec.2,但我在网站上没有找到。
请问在哪里可以找到补充资料Sec.2?
感谢您的回答。

When open source VINS-Mono initialization for comparing with drt init

I use same dateset to run VINS-Mono initialization and drt initialization. when I evaluate the total trajectory accuracy, the results reveal tracking accuracy of VINS_MONO is three to five times better than using drt initialization. I see the scale using drt initialization has larger error, but I don't know why.

Evaluation in paper

Thanks for your released code!
I want to know how to evaluate the code like the experiments in your paper?
Moreover, what is the meaning of "drtLoosely_MH_02.txt" in the result folder.

关于求解的问题

请问gravityRefine函数里的多项式系数是不是不对应于文献6的附录一公式31呢,gravityRefine函数内的S矩阵要比文献6多一维,源码内的矩阵多项式系数要比公式31等式左边的多项式多两个,请问一下另外两个是如何推导,十分感谢!
Do the polynomial coefficients in the gravityRefine function not correspond to formula 31 in Appendix 1 of Reference 6.
There are two more coefficients in the source code. May I ask how the other two are derived? Thank you very much!

求解drt-vio公式11时为什么构建的是LTL矩阵而不是仅L矩阵呢?
Why do we build LTL matrices instead of just L matrices when solving drt-vio formula 11?

opengv::GetSmallestEVwithJacobian这个函数用于求解公式8,请问其中用到的理论是不是雅可比旋转求解对称矩阵的特征值?
Opengv: : GetSmallestEVwithJacobian this function is used for solving equation 8, is which used the theory of the jacobian of rotating solving symmetric matrix eigenvalue?

How to verify whether the solution at each stage is correct

Thank you for your great work.

I tried to add this initialization scheme to my VIO system. Due to the differences in system design and data structure, I have some engineering implementation details that I would like to sincerely ask you for advice.

Question: How to verify whether the solution at each stage is correct? For example, after solving the LTL constraints, the position (without scale) and rotation of each keyframe are obtained. How to verify the accuracy of the results of this step, because the subsequent alignment will It depends on the result of this step, so you may want to make sure that the solution of this step is correct first.

Looking forward to your reply.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.