dlaidig/vqf

Test with OxIOD dataset

ShuiXianhua opened this issue · 1 comments

Hi, Thanks for sharing the code.
I‘m testing the OxIOD dataset with the data of imu and magnetometer. However, during visualization, i found that the output is inconsistent with the ground truth, as shown in the following picture. The values are consistent, but their order seems to be different. The output of VQF is [w, x, y, z] with [blue, orange, green, red], but it is [y, z, w, x] with [green, red, blue, orange] in ground truth. Why is that?
test_OxIOD

Hi,

first, I assume that you noticed the README file of OxIOD that documents the csv file header and that the quaternions are stored in [x y z x] order, not [w x y z]. If you parsed the data correctly, I assume that the missing step is the alignment between the IMU coordinate system and the coordinate system defined by the optical markers, and between the IMU reference frame the OMC reference frame.

You can find more details about this in the BROAD paper (https://www.mdpi.com/2306-5729/6/7/72), especially Section 2.4, Section 4.2, and Appendix C. As I noted there, to the best of my knowledge, the alignment of the coordinate systems is not described for the OxIOD dataset.

I now still went a step further to test my theory and found the rough starting values for the alignment that I used, which are [0 1 0 0] for the E-to-M quaternion and [0 0 0 -1] for the B-to-S quaternion. And it turns out that

[0, 1, 0, 0] ⊗ [w, x, y, z] ⊗ [0, 0, 0, -1] = [y, z, w, x],

which is exactly what you wrote. :)

If I remember correctly, this alignment is not very accurate and you will have to optimize the precise values in order to obtain good results. But this should serve as a good starting point, I hope.