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

Supplement and Adjust OpenVINS Parameters #1145

Merged
merged 10 commits into from
Oct 21, 2023

Conversation

borongyuan
Copy link
Contributor

Hi, @matlabbe
I added more OpenVINS params. Enabling online calibration sometimes improves accuracy, but may also hurt the performance due to degenerate motions. You can refer to the conclusion of this video. Dynamic initialization may be useful for odom reset. Even if it is enabled, the system will try static initialization first. There are also several feature initializer params which may need to be tuned in outdoor scenes.
There’s no need to merge this PR right away. There is another important issue to resolve. We are not using covariance properly. When I was testing in some large scenes recently, I found that after successful loop closure, some neighbor links would be stretched extremely long. And VIO has been working correctly, so I thought it should be a covariance problem. I checked other issues and found that we should use twist covariance, but now pose covariance is set. We should not be able to use get_marginal_covariance() to obtain twist covariance. Because v_IinI and w_IinI are not in the state vector, there is only v_IinG. It seems that twist covariance can only be obtained using fast_state_propagate(). Then we need to rotate it into the base frame. Do I understand correctly?

@borongyuan
Copy link
Contributor Author

Although OpenVINS will accept features within a certain range in FeatureInitializer. But it only knows the distance of the features when they are triangulated. In the feature detection and tracking stage, if we want to exclude some image areas, such as parts occluded by the robot or vehicle body, we need to use masks. Now we have two mask methods. One is to use pre-drawn mask images like original OpenVINS. The other is to borrow the kVisDepthAsMask parameter in RTAB-Map. This makes the configuration more convenient and the range is adjustable. Using masks can reduce the outlier ratio of feature detection and tracking, making RANSAC more likely to be correct.

@borongyuan
Copy link
Contributor Author

// we set only diagonal values as there is an issue with g2o and off-diagonal values

What is this issue? Has it been solved yet?

@matlabbe
Copy link
Member

// we set only diagonal values as there is an issue with g2o and off-diagonal values

What is this issue? Has it been solved yet?

Good question, not sure if it was a bug in g2o or in the integration with g2o. We would need to try with latest g2o version to see if there is a problem. Note that I didn't use that code for the past 5 years (and never tested live on a camera, just on euroc dataset)

@borongyuan
Copy link
Contributor Author

I've fixed the covariance part. Now these can be merged.

@matlabbe matlabbe merged commit 948e15c into introlab:master Oct 21, 2023
6 checks passed
@matlabbe
Copy link
Member

Great thank you!

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

Successfully merging this pull request may close these issues.

2 participants