MATLAB Answers


Tracking 3d gait from accelerometer data

Asked by Giovanni Mastromatteo on 16 Nov 2016
Latest activity Commented on by Sharah
on 16 Nov 2016
Hi, I'm testing a LPMS b2-bluetooth-imu board and I get from the device the accelerometer, gyro, magnetometer, Euler angles and Quaternions data.
The idea is to realize something similar to this (
Now, after two integrations of the linear acceleration data for three directions, I have found the resultant displacement.
How could I rebuild the step gait combining the result for each axis?
Thanking you in advance for your help in this matter.


Sign in to comment.

1 Answer

Answer by Sharah
on 16 Nov 2016

What do you mean by "rebuild the step gait combining the result for each axis"?
Usually you would do double integration on all 3 axis x y z. You shouldn't combined them all together if you want the real movement in all 3 direction. On the other hand, if you only require resultant displacement, then you'll combined the data from all theree axis as in:
xyz = sqrt(x^2 + y^2 + z^2)
And if you want a graphical representation of the gait, you will plot the data from all three axis.
Human Robotics Group
Imperial College London


Sorry, I didn't explain well. What i would to track is the gait from the obtained values of displacement in the three axes. I've integrated the arrays of linear acceleration in 3-axis, in the sintax shown below:
vX=cumtrapz(Time, aX);
sX=cumtrapz(Time, vX);
vY=cumtrapz(Time, aY);
sY=cumtrapz(Time, vY);
vZ=cumtrapz(Time, aZ);
sZ=cumtrapz(Time, vZ);
Plotting the resulting arrays for the displacement I obtain these graphs
I wish to track the gait as this example
Thanks for your help
1) Your integration value especially from Z direction looks like there's drift, you might want to remove that
2) the picture you're showing looks like the force measure by a force plate during walking, so not sure what you're trying to see here.
3) If you think about a movement, there will always be a 3D representation of a movement. if you are interested in only the vertical (up and down the movement), just take the value from only that axis (either only x, y or z) depending on your measurement.

Sign in to comment.