Open 0x1100 opened 7 years ago
Thanks for the diff, but could you provide this in the form of a pull request? It makes it easier to review and merge, and also the CI server will run a test build.
This patch is a workaround, not a fix, it wasn't really meant to be merged. We get a much better result by only using the plugin's output position, sure, but it doesn't actually address any of the following issues.
The plugin updates the position at a rate that is noticeably too low. It should provide an extrapolated position for each IMU report to limit latency and provide a smooth experience. Right now it effectively throws away most of the IMU reports. It also outputs a bogus angular velocity which, in addition to the pose prediction, is probably used by the Kalman filter. And finally, the BodyReporting
shouldn't ever give you a report with the camera position instead of an actual position estimation.
The unified tracker offer a better positional tracking than the old plugin but it suffers from a terrible amount of judder.
The pose extrapolation offered by Steam when using the SteamVR-OSVR driver makes things obviously better, yet it also shows without a doubt that the angular velocity given by the unified tracker is also buggy. We get a good extrapolation when we're looking forward with a neutral pose but a wrong one when facing another direction or when our head is tilted. Overriding the orientation and angular velocity from the plugin with the data coming from the IMU gives incredibly better results, although translations still aren't really smooth.
This proves there is something completely wrong with the way the plugin handles IMU data. The good news is this can be used as a workaround until it gets fixed.