Accelerometer / scaling / ENMO ?

PedroMenPedroMen Lisbon
edited December 2022 in Cyton

I'm trying to process accelerometer data from Cyton board V3 that was placed on a UltraCortex mark IV.
The goal is to quantify how much movement/physical activity (PA) a person had, although (s)he was supposed to had the least movement possible.
I'm using python to process data, and this is an example:

array([[ 160., 8208.,  880.],
       [ 160., 8208.,  880.],
       [ 160., 8208.,  880.],
       ...,
       [ 160., 8048., 1744.],
       [ 160., 8048., 1744.],
       [ 160., 8048., 1744.]], dtype=float32)

Looking at chipaudette blog, I found that he converts these values into g values dividing data by 16 and multiplying by 0.002 (2m_g_ ). Doing that I get:

array([[0.02      , 1.026     , 0.11000001],
       [0.02      , 1.026     , 0.11000001],
       [0.02      , 1.026     , 0.11000001],
       ...,
       [0.02      , 1.006     , 0.21800001],
       [0.02      , 1.006     , 0.21800001],
       [0.02      , 1.006     , 0.21800001]], dtype=float32)

Searching for some papers about accelerometer data processing, I found the Euclidean Norm Minus One g (ENMO) metric. That metric is the (square root of (x^2 + y^2 + z^2)) - 1. And then zeroing negative values. However, looking at the above values, the first column is close to zero, while the second one is close to one. I'm not sure if I can use ENMO with such values. Is this correct?
Has anyone did accelerometer data processing with OpenBCI?

Comments

  • wjcroftwjcroft Mount Shasta, CA

    Pedro, hi.

    See the 5th and 6th paragraph below this section:

    https://docs.openbci.com/Cyton/CytonDataFormat/#interpreting-the-eeg-data

    Accelerometer data must also be scaled before it can be correctly interpreted. The equation used to scale Accelerometer data is as follows (We assume 4Gs, so 2mG per digit): Accelerometer Scale Factor = 0.002 / 2^4;

    As of January 2021, these constants and equations are included in BrainFlow for Cyton users! This means users can pick any supported language and the data will already be scaled appropriately. These equations are still necessary if you plan to use data stored to SD card using a Cyton.

    Regards, William

  • Thank you William, I did scale data appropriately, however my question was about processing it with some metrics. Since the board is attached to the Ultracortex IV, its y axis is close to 1 g. I was looking for some examples of data processing with common metrics such as ENOM and MAD.

  • wjcroftwjcroft Mount Shasta, CA

    Do your converted values using your Python code, match what you are seeing on the screen (Accelerometer Widget) of the GUI when it is running -- for each axis. For example is the GUI Y axis pegged at 1 G?? This seems suspect if the board is stationary.

    If GUI accel values do not match your conversions, then possibly the values you are starting with are the wrong registers. As the document shows, if you use Brainflow calls, these values are already converted for you.

Sign In or Register to comment.