{"id":15472528,"url":"https://github.com/mattwang44/human-motion-analysis-matlab","last_synced_at":"2025-04-22T15:44:05.787Z","repository":{"id":115883127,"uuid":"103352813","full_name":"mattwang44/Human-Motion-Analysis-MATLAB","owner":"mattwang44","description":"Human motion capture system written in MATLAB","archived":false,"fork":false,"pushed_at":"2024-11-04T17:06:51.000Z","size":18764,"stargazers_count":16,"open_issues_count":0,"forks_count":8,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-29T16:34:29.258Z","etag":null,"topics":["matlab","motion-analysis"],"latest_commit_sha":null,"homepage":"https://mattwang44.github.io/Human-Motion-Analysis-MATLAB/","language":"Matlab","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mattwang44.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-09-13T04:22:28.000Z","updated_at":"2024-05-15T06:35:56.000Z","dependencies_parsed_at":null,"dependency_job_id":"5ad052cd-867b-4448-87ad-31736220d972","html_url":"https://github.com/mattwang44/Human-Motion-Analysis-MATLAB","commit_stats":{"total_commits":86,"total_committers":2,"mean_commits":43.0,"dds":"0.046511627906976716","last_synced_commit":"3ade83a40e903ee9c4b8e4461c486658f67199e2"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mattwang44%2FHuman-Motion-Analysis-MATLAB","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mattwang44%2FHuman-Motion-Analysis-MATLAB/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mattwang44%2FHuman-Motion-Analysis-MATLAB/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mattwang44%2FHuman-Motion-Analysis-MATLAB/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mattwang44","download_url":"https://codeload.github.com/mattwang44/Human-Motion-Analysis-MATLAB/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250270438,"owners_count":21403053,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["matlab","motion-analysis"],"created_at":"2024-10-02T02:39:48.020Z","updated_at":"2025-04-22T15:44:05.762Z","avatar_url":"https://github.com/mattwang44.png","language":"Matlab","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Human Motion Analysis Programming\n*Supervised by Prof. [Tung-Wu Lu](http://oemal.bme.ntu.edu.tw/professor/professorE.htm), Dept. of BioMedical Engineering, NTU*\n\nMATLAB programs, which use the data derived from a motion capture system and force plates, for human motion analysis, including motion tracking, evaluation of body balance, and derivation of joint forces and torques of the lower body, etc.\n\n## Requirements\n1. MATLAB 2015 (or newer versions)\n2. [MTIMESX function](https://www.mathworks.com/matlabcentral/fileexchange/25977-mtimesx-fast-matrix-multiply-with-multi-dimensional-support)(Fast Matrix Multiply with Multi-Dimensional)\n\n## Functions \u0026 Execution Results\n### Week1: Transformation between Global \u0026 Local Coordinate  \nThe transformation between global \u0026 local coordinates of marker position on lower body segments.  \n\n### Week2: COP Tracking  \nDerive the COP from data of two force plates and display the positions relative to the force plates.  \n  \n\u003cp style=\"text-align:center\"\u003e\u003cimg src=\"./results/COP.gif\" width=\"380\"\u003e\u003c/p\u003e  \n\n### Week3: Euler Angle \u0026 Fixed Angle\n1. Represent the rotations of body segemnts with **Euler angle** and **fixed angle**.  \n2. Display the difference of Euler angle before and after **static calibration** of the individual.  \n![Static calibration](/results/hw3.png)  \n\n### Week4: Curve Fitting\n1. Smoothen the data curve and display the **angular velocity** of the lower body.  \n2. Consider the right foot only, compare the results of **analytic solution of angular acceleration** \u0026 **1st derivation of angular velocity**.  \n3. Consider the right thigh only, compare the angular velocity derive from 12 sequences of Euler angle.  \nThe one with **Gimbal lock** during motion can be easily observed and avoided.  \n\u003cimg src=\"./results/hw4_AngVel.jpg\" width=\"260\"\u003e\u003cimg src=\"./results/hw4_AngAcc.jpg\" width=\"260\"\u003e\u003cimg src=\"./results/hw4_12RotSeq.jpg\" width=\"260\"\u003e  \n\n### Week5: Quaternions (Euler Parameters)\n1. Write the function \"unwrapEP.m\" to eliminate the discontinuity of Quaternions data.    \n2. Compare angular velocity \u0026 angular acceleration derived from Euler angle and Quaternions(EP).  \n\u003cimg src=\"./results/hw5_unwrapEP().jpg\" width=\"260\"\u003e\u003cimg src=\"./results/hw5_AngVel.jpg\" width=\"260\"\u003e\u003cimg src=\"./results/hw5_AngAcc.jpg\" width=\"260\"\u003e  \n\n### Week6: Screw Axis (Helical Axis)  \n1. Compare the rotation axis and angle derived from the Screw axis and Quaternoins.  \n2. Determine the **joint center \u0026 rotation axis with least-square error** from several rotation axes derived during the motion.  \n\u003cimg src=\"./results/hw6_n\u0026phi.jpg\" width=\"250\"\u003e\u003cimg src=\"./results/hw6_1.jpg\" width=\"450\"\u003e  \n\n### Week7: COM Tracking \n1. Derive \u0026 compare the COM position of the whole body using Dempster's anthropometrical data with simplifying the body model as 7, 11, 12, \u0026 13 segments.  \n2. Display the COM positions. (Yellow: markers' position, green: COM of body segments, purple: COM of the whole body).  \n\u003cimg src=\"./results/hw7.jpg\" width=\"300\"\u003e \u003cimg src=\"./results/walk.gif\" width=\"300\"\u003e \n\n### Week8: Evaluation of Body Balance\nDerive the COP data while the recipient is standing still. It determined the eclipse covering 95% of these COPs with **Principal Component Analysis (PCA)**. The area of the eclipse and the length of its axes can be an indicator for evaluating one's body balancing ability.  \n\u003cp style=\"text-align:center\"\u003e\u003cimg src=\"./results/hw8_COP95.jpg\" width=\"400\"\u003e\u003c/p\u003e  \n\n### Week9: Angular Momentum  \nDerive the angular momentum and 1st derivation of angular momentum during the motion.\n\u003cimg src=\"./results/hw9_AngMomentum.jpg\" width=\"300\"\u003e \u003cimg src=\"./results/hw9_1der.jpg\" width=\"300\"\u003e \n\n### Week10: Joint Moment \u0026 Joint Force\nDerive the joint moment \u0026 joint force of angular momentum during the motion. The results are normalized by being divided by the weight of recipient.  \n\u003cp style=\"text-align:center\"\u003e\u003cimg src=\"./results/hw10_1.jpg\" width=\"650\"\u003e\u003c/p\u003e  \n\u003cp style=\"text-align:center\"\u003e\u003cimg src=\"./results/hw10_2.jpg\" width=\"650\"\u003e\u003c/p\u003e  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmattwang44%2Fhuman-motion-analysis-matlab","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmattwang44%2Fhuman-motion-analysis-matlab","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmattwang44%2Fhuman-motion-analysis-matlab/lists"}