ads

mardi 15 septembre 2015

[MOD][Xposed] JitteryGyroFixForCardboard



Hi there,

JitteryGyroFixForCardboard is a module to reduce/eliminate the noise in unstable gyroscope that are found in some phones like the Moto G 2nd gen or Huawei Ascend G7. Basically, the app does the noise smoothing that app devs do, but here this module uses a system hook to apply the noise smoothing preprocessing for all apps.

This is particularly interesting for virtual reality (VR) or head-tracking apps because a noisy gyroscope will produce a feeling of dizzyness and nausea, but this can also be interesting for any app using the gyroscope because the output will be a lot smoother and accurate (particularly when the phone is hold still).

The module was originally wrote by Kjos and the repo lives here:
https://github.com/Kjos/JitteryGyroFixForCardboard

The thread that started the module is on Reddit:
https://www.reddit.com/r/GoogleCardb...such_as_moto_g

Here is the latest version of the module, v1.3:
https://github.com/lrq3000/JitteryGy...dianFilter.apk


Quote:









=== DESCRIPTION ===

The gyroscope is the main sensor for head tracking / virtual reality apps.

However, it's common for phones' gyroscopes to be noisy, which in practice shows as jitter, and this can create a dizzyness feeling and nausea, particularly when standing still (the "camera" still moves around just like if you were at sea).

Android now offers "virtual" sensors, which use a method known as sensor fusion to avoid those noisy outputs by combining several sensors (usually: gyroscope, accelerometer, magnetometer).

However, it's up to each app dev to use these virtual sensors, and to implement further post-processing to smooth the sensor and reduce the noise.

This module adopts another approach: it hooks directly to the hardware gyroscope and it preprocess every outputs with smoothing filters before relaying the data to the apps.

Therefore, the noise is reduced or even eliminated of the gyroscope's output for every apps.

=== OPTIONS ===

This module currently implements a few different strategies to filter and reduce noise, which can be used complementary or alone (each option can be disabled):

1. Filter type: type of the filter that will be applied to reduce noise in the gyroscope output.
2. Filter size: the number of samples to use to compute the filtering. Usually, the bigger the filter is, the less jitter there will be but at the expense of some lag.
3. Filter optional value: value of the constant that configures some types of filters such as lowpass or additive smoothing.
4. Minimum value change threshold: prevents the phone from registering the new sensor's values if the difference to the median is smaller than the given threshold.
5. Stationary minimum value threshold: when stationary, prevents the sensor from moving if the change is below the given threshold (this is similar to min value change but here it only affects the stationary state, when you are not moving).
6. Rounding precision: round all sensor's values to the given decimal.

Options can be changed on-the-fly without having to restart the phone, and are instantly applied to the sensor, so that you can switch between this option screen and a VR app to test for the parameters that reduce the jitter the most for you.




I'm looking for feedback before we submit to the Xposed repo, so if you have any idea of a feature or if you spot a bug, feel free.

We are also looking for better filters, currently the best performing two types are the median filter and the one order low-pass filter, so if there's someone with some experience with noise reduction on the gyroscope (not the accelerometer), I'd be very interested to get some advices about that!



Aucun commentaire:

Enregistrer un commentaire