Replies: 1 comment 3 replies
-
I've enabled discussions and converted this issue to a discussion. Thanks for the suggestion. :) You are right that just overwriting My first thought would also be to just convert the difference between two pre-integrated quaternions to a gyroscope measurement and then feed this virtual gyroscope measurement to VQF. In fact, I've already proposed a similar approach in a different paper (see Appendix C.1. in https://www.mdpi.com/1424-8220/22/24/9850 -- but note that there the multiplication order is swapped to also transform the coordinate system in the same step). Here is some untested pseudocode for how to derive the gyroscope measurement from two quaternions (see qmt.quatToGyrStrapdown for a working and tested Python implementation):
I don't think that this approach is brittle. Personally, I think it's good to add this as a separate encapsulated preprocessing step. This also makes it easier to add further optimizations and deal with edge cases. (For example, if 2 samples are missing, it might be a good idea to do the calculation above with 3*gyrTs and then call updateGyr 3x with the same virtual gyroscope measurement.) The alternative would be to further split up the internal state representation in order to separate gyroscope strapdown integration and gyroscope bias correction. Right now, the orientation state representation is |
Beta Was this translation helpful? Give feedback.
-
(I'd make this a discussion instead of an issue, but discussions don't appear to be enabled on this repo.)
For context: Joycons have a mode that sends pre-integrated quaternions instead of raw gyro samples for every timestamp (https://github.com/kitlith/joycon-quat). This feels useful to use in situations where you're missing packets because the environment isn't great, and would cause missed packets to not cause instant drift.
Simply setting
state.gyrQuat
seems like it'd be a simple way to import these pre-integrated quaternion into VQF, but it looks like I'd be interfering with... basically all of the nice features that aren't inBasicVQF
.Taking consecutive quaternions, turning them back into "gyroscope measurements", then running them through VQF seems possible, but I don't know how to do that correctly, if it's possible. Feels like a brittle solution.
Do you know of anything nifty that would help with this (rather weird) usecase? I'd be interested in throwing it into carl-anders/slimevr-wrangler#40, though it's rather low on my priority list. If nothing else, maybe it's an interesting question?
Beta Was this translation helpful? Give feedback.
All reactions