[PD] MARG (Was: Sensors2OSC mapping challenge)

katja katjavetter at gmail.com
Tue Aug 22 22:58:02 CEST 2017


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 <abonnements at revolwear.com> 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 <abonnements at revolwear.com> 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 <abonnements at revolwear.com> 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/
>>>>>>
>>>>>> _______________________________________________
>>>>>> Pd-list at lists.iem.at mailing list
>>>>>> UNSUBSCRIBE and account-management ->
>>>>>> https://lists.puredata.info/listinfo/pd-list
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Pd-list at lists.iem.at mailing list
>>>>> UNSUBSCRIBE and account-management ->
>>>>> https://lists.puredata.info/listinfo/pd-list
>>>>
>>>>
>>>>
>>>
>>
>



More information about the Pd-list mailing list