Accelerometer / scaling / ENMO ?
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
Pedro, hi.
See the 5th and 6th paragraph below this section:
https://docs.openbci.com/Cyton/CytonDataFormat/#interpreting-the-eeg-data
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.
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.