The code here ( https://github.com/gusmanb/PSVRFramework/blob/master/PSVRFramework/BMI055Integrator.cs ) is highly redundant (can be rewritten to a handful of lines of code) but on the following subroutine invocations:
fusion.Update(angularAcceleration.X, angularAcceleration.Y, angularAcceleration.Z, linearAcceleration.X, linearAcceleration.Y, linearAcceleration.Z, 0.05f, interval);
fusion.Update(angularAcceleration.X, angularAcceleration.Y, angularAcceleration.Z, linearAcceleration.X, linearAcceleration.Y, linearAcceleration.Z, 0.035f, interval);
If more aggressive values are used (I'm using 0.1f) for both cases (there are multiple cases in the redundant code) then "drift" is practically eliminated from the PSVR.
The home-theater mode drifts quite a lot, so it's worth noting that drift can be eliminated from play sessions entirely, or only require corrective action sometimes, seldom enough to not be a nuisance.
Higher values here introduces a wobble, that is probably just a side effect of the algorithm. The wobble is visible if you use the data to drive the in-software camera. However it's not so bad that you cannot enjoy yourself, and there is probably techniques (which I'll explore) to decouple the in-software camera from the in-hardware sensor readings.
In short, more aggressive values add wobble, but eliminate drift. And 0 values (no "fusion") has the least wobble, but also, the most drift.
The code here ( https://github.com/gusmanb/PSVRFramework/blob/master/PSVRFramework/BMI055Integrator.cs ) is highly redundant (can be rewritten to a handful of lines of code) but on the following subroutine invocations:
fusion.Update(angularAcceleration.X, angularAcceleration.Y, angularAcceleration.Z, linearAcceleration.X, linearAcceleration.Y, linearAcceleration.Z, 0.05f, interval);fusion.Update(angularAcceleration.X, angularAcceleration.Y, angularAcceleration.Z, linearAcceleration.X, linearAcceleration.Y, linearAcceleration.Z, 0.035f, interval);If more aggressive values are used (I'm using
0.1f) for both cases (there are multiple cases in the redundant code) then "drift" is practically eliminated from the PSVR.The home-theater mode drifts quite a lot, so it's worth noting that drift can be eliminated from play sessions entirely, or only require corrective action sometimes, seldom enough to not be a nuisance.
Higher values here introduces a wobble, that is probably just a side effect of the algorithm. The wobble is visible if you use the data to drive the in-software camera. However it's not so bad that you cannot enjoy yourself, and there is probably techniques (which I'll explore) to decouple the in-software camera from the in-hardware sensor readings.
In short, more aggressive values add wobble, but eliminate drift. And 0 values (no "fusion") has the least wobble, but also, the most drift.