Skip to content

Supplement and Adjust OpenVINS Parameters#1145

Merged
matlabbe merged 10 commits intointrolab:masterfrom
borongyuan:openvins_update
Oct 21, 2023
Merged

Supplement and Adjust OpenVINS Parameters#1145
matlabbe merged 10 commits intointrolab:masterfrom
borongyuan:openvins_update

Conversation

@borongyuan
Copy link
Copy Markdown
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
Copy Markdown
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
Copy Markdown
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
Copy Markdown
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
Copy Markdown
Contributor Author

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

@matlabbe matlabbe merged commit 948e15c into introlab:master Oct 21, 2023
@matlabbe
Copy link
Copy Markdown
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