![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/174710/image.gif)
Getting center of mass (centroid) from a human motion
6 次查看(过去 30 天)
显示 更早的评论
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,
0 个评论
回答(1 个)
Image Analyst
2016-7-19
编辑:Image Analyst
2016-7-19
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
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/174710/image.gif)
3 个评论
Vincent
2020-7-29
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
2020-7-29
You could use plot3(). I'd put that inside a function that extracts your input data into three parts:
- arms (7 points, both right and left arms)
- Trunk (head point, shoulder point, and crotch point)
- 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()
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Biomechanics 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!