Getting center of mass (centroid) from a human motion

7 views (last 30 days)
Hi,
I'm trying to analyze/estimate kinetic(forces) data from kinematics(distance, velocity, acc.) data. I obtained 3D coordinates(XYZs) for 23 joints of human body simulated by a software in .mat form; and for now I'd like to get ground reaction forces for a single leg jumping motion from what I have.
The question is, is there a way in MatLab to calculate the centroid/center of gravity of the moving human? I guess this is a different but similar process compared to calculating centroid from binary images.
What I have are basically X,Y,Z coordinates of certain frame (120fps). For example, in frame #99,I have 23 sets of coordinates representing 24 joints of the human, and in #100, another 23. It's easy to get any distances, angles, velocity, accelerations from those coordinates, so I was thinking to use F = ma to acquire ground reaction force(while foot keeps contacting the ground, single-leg).
Please let me know if I need to use other toolboxes or add-ins in MatLab, since I've never used any of them :)
Thanks in advance,

Answers (1)

Image Analyst
Image Analyst on 19 Jul 2016
Edited: Image Analyst on 19 Jul 2016
There is a function , regionprops(), to get the centroid or weighted centroid of a binary image. However that is very different than the centroid of a human stick figure. Where do you think the centroid should be? On the trunk? Do you want it to move to the left if the figure sticks his leg out to the left? Or stay on the trunk? I think you need to decide where the centroid should be first. Then figure out how to get that from the coordinates you have, and even decide if you need more, or differently placed, coordinates.
You might want to take a look at Cleve's blog on the eigenwalker : http://blogs.mathworks.com/cleve/2016/04/11/the-eigenwalker-model-of-the-human-gait/?s_tid=srchtitle
  3 Comments
Vincent
Vincent on 29 Jul 2020
Is there a function or file to plot a stick figure like the ones above? I have a dataset of joint positions over time and would like to plot them in a stick figure dynamically over time.
I figured out how to plot the data points in a dynamic plot using a for loop but I can't get the connecting lines. Thought their might be a solutions already available.
Help is highly appreciated.
Image Analyst
Image Analyst on 29 Jul 2020
You could use plot3(). I'd put that inside a function that extracts your input data into three parts:
  1. arms (7 points, both right and left arms)
  2. Trunk (head point, shoulder point, and crotch point)
  3. legs (7 points, both right and left legs)
You should know in your data, which points are which so you can make those three curves and plot them separately with plot3()

Sign in to comment.

Categories

Find more on Biological and Health Sciences in Help Center and File Exchange

Products

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!