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
Sign inversion in R matrix #8
Comments
Finally I solved this problem using OpenCV for SVD instead of eigen. |
Hi, I am sorry! I have been working on another submission and haven't checked my email. I hope my response is not too late. Could you define "initial pose is not stable" and "payload vertices are not fixed"? Do you mean the target is moving or the lidar is moving while detecting? |
Thank you for reply. simplescreenrecorder-2021-08-06_16.41.33.mp4 |
Hi, That is really helpful! Thank you for debugging into this. Just to be clear, the problem happens when estimating the initial vertices of a LiDARTag at here, in which the function calls Eigen SVD function at here, where it sometimes gives NAN values or gives inconsistent values:
I acknowledge that I also see the diverging issue occasionally. Initially, I thought it was the solver that I use that was not robust, which leads to the divergence. However, after I dug into this issue, I also found that the principal axis output from the SVD is not consistent. My thoughts on this issue are the shape of the target is symmetric and thus causes an ambiguous principal axis for the SVD function. To solve this problem inherently, we need to change the shape of the target. I'd like to give a big thank you again for providing a workaround to this issue by changing the SDV function from Eigen to OpenCV :)! Do you mind posting your code where you use the OpenCV function to do it? |
Thank you for your reply. OK, I will make pull request today . I am grad if I could help you. |
Hi Thanks for your pull request! I watched the video again carefully. The singular values are HUGE and that makes me feel like the values might overflow. Could you try to change Additionally, I wrote a minimal testing script attempting to reproduce the problem:
The outputs look pretty consistent:
Is this what you were trying to test? PS. OpenCV is a huge library, so I am a bit hesitant to include OpenCV just because of the SVD function. Indeed, having a workaround is fantastic and will be definitely useful to others if they already have OpenCV installed! Just for the record, a workaround is Solving the SVD from OpenCV instead of Eigen as follows:
|
Dear Authors,
Thank you for your great work.
I tested this repository on our lidartag, I found detection is often failed because initial pose is not stable.
I debugged and found signs of some values in R matrix are inverted in fitGrid_new function.
I fixed GridVertices and payload_vertices, these are augments of fitGrid_new function, but the sign inversion are occurred.
If I fix R matrix, sign inversion is not occurred and initial pose is stable.
below is the video of the test(Payload_vertices is not fixed in this case)
We can find
simplescreenrecorder-2021-07-28_15.17.34.mp4
I reproduced this problem using sample bag, ccw_6m.bag on default setting.
simplescreenrecorder-2021-07-28_18.54.09.mp4
Do you have any suggestion?
thanks,
The text was updated successfully, but these errors were encountered: