It seems that SensorManager.getRotationMatrix() gets the raw sensor values and SensorManager.getOrientation() calculates the device orientation from there:
https://developer.android.com/reference/android/hardware/SensorManager.html But that is the API, I don't know how it's done. The result won't be optimal for all purposes when the functions use accelerometer and magnetometer values only (no gyro). Katja On Tue, Aug 22, 2017 at 7:58 PM, Max <[email protected]> wrote: > I see! In my case the data comes from the smartphone (via Sensors2OSC). So > either it somehow runs on the smartphone or it runs in Pd (as abstraction or > external). Network traffic may be an issue. > > Somehow I had expected that Google, Apple or even the sensor chip > manufacturers have something like this and provide it via API, but that > doesn't seem the case. Or maybe > SensorManager.getRotationMatrix [1] > is something like a MARG? > > [1] > https://stackoverflow.com/questions/15315129/convert-magnetic-field-x-y-z-values-from-device-into-global-reference-frame#15317814 > > > > On 2017년 08월 21일 19:17, katja wrote: >> >> Max, I don't know of a Pd project in this field, but there's a good >> reason to do sensor mixing (beit IMU or AHRS) on the platform that >> reads the sensors rather than in a Pd patch or external. The filter / >> mixer works best when sensor data is read at a higher sample rate than >> you may need the orientation data. For example, an Arduino Pro Micro >> (16 MHz processor) can do IMU mixing at ~400 Hz which is just a decent >> sample rate for the purpose of filtering sensor noise. For parameter >> control I don't really need the data at that rate so I send midi >> messages at a lower rate (could be OSC instead of midi). That >> minimizes traffic over USB but also a saves lot of function calls in >> Pd. >> >> On the other hand it would be nice to do it in a Pd patch or external >> for educational reasons or better reusability. By the way Sebastian >> Madgwick's current work on AHRS is in this repository: >> >> https://github.com/xioTechnologies/Fusion >> >> Katja >> >> On Sun, Aug 20, 2017 at 9:02 PM, Max <[email protected]> wrote: >>> >>> Attached is the C code from the paper linked below. >>> Before I try, should I attempt to make this in Pd as an abstraction or >>> just >>> take this c code and see if I can turn it into an external? >>> >>> Or maybe someone has already done it? >>> >>> >>> On 2017년 07월 27일 09:17, katja wrote: >>>> >>>> >>>> Hi Max, >>>> >>>> To emulate 3D orientation from gyro, accelerometer and compass data is >>>> most efficiently done using a 'quaternion filter'. Sebastian Madgwick >>>> has popularized the method, see >>>> http://x-io.co.uk/open-source-imu-and-ahrs-algorithms/. I use >>>> Madgwicks implementation of Mahoney's method, for Arduino based >>>> 'electronic hands', and found that Mahoney's algorithm for IMU sensors >>>> (gyro and accelerometer only) worked much better than Madgwick's own >>>> algorithm. But I had to make a few modifications, based on Kris >>>> Winer's work (https://github.com/kriswiner). >>>> >>>> Katja >>>> >>>> On Tue, Jul 25, 2017 at 11:13 PM, Max <[email protected]> wrote: >>>>> >>>>> >>>>> Made a quick little video >>>>> https://vimeo.com/226958567 >>>>> the described issue is still there. >>>>> >>>>> Background on the problem: >>>>> >>>>> >>>>> https://stackoverflow.com/questions/27106607/get-rotation-and-display-in-degrees >>>>> >>>>> >>>>> https://stackoverflow.com/questions/15315129/convert-magnetic-field-x-y-z-values-from-device-into-global-reference-frame#15317814 >>>>> >>>>> >>>>> >>>>> On 2017년 07월 08일 23:16, Max wrote: >>>>>> >>>>>> >>>>>> >>>>>> I've played around with the Android app Sensors2OSC [1] and was trying >>>>>> to >>>>>> just map the senors to a virtual model of a phone. >>>>>> I was able to get the axis individually mostly behaving correctly, but >>>>>> as >>>>>> soon as the phone moves around in more than one way, it is doing weird >>>>>> things. I started to wonder if it is only my phone though. >>>>>> >>>>>> At https://github.com/mxa/GemVR the patch ReceiveSensors2OSC.pd has >>>>>> everything ready to map the senor data to the Gem model. >>>>>> >>>>>> I'd be curious to see if it is possible to let it behave correctly. >>>>>> >>>>>> [1] https://sensors2.org/osc/ >>>>>> >>>>>> _______________________________________________ >>>>>> [email protected] mailing list >>>>>> UNSUBSCRIBE and account-management -> >>>>>> https://lists.puredata.info/listinfo/pd-list >>>>> >>>>> >>>>> >>>>> >>>>> >>>>> _______________________________________________ >>>>> [email protected] mailing list >>>>> UNSUBSCRIBE and account-management -> >>>>> https://lists.puredata.info/listinfo/pd-list >>>> >>>> >>>> >>> >> > _______________________________________________ [email protected] mailing list UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list
