visual3d:documentation:pipeline:model_based_data_commands:joint_work
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
visual3d:documentation:pipeline:model_based_data_commands:joint_work [2024/06/26 20:06] – removed sgranger | visual3d:documentation:pipeline:model_based_data_commands:joint_work [2024/09/25 06:58] (current) – Fleshed out the page and re-included some examples from the Wayback Machine. wikisysop | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Joint Work ====== | ||
+ | This page provides three different overviews of how to calculate mechanical work (the time integration of power profiles) at a joint. All three examples assume that a [[visual3d: | ||
+ | |||
+ | Calculating mechanical work at a joint requires distinguishing between positive and negative work. The joint power signals will cross zero many times and in some cases will not cross in the "same way" between different groups of participants. | ||
+ | |||
+ | ==== Example 1: Use Evaluate_Expression ==== | ||
+ | |||
+ | In this method we use [[visual3d: | ||
+ | |||
+ | < | ||
+ | ! Save a " | ||
+ | ! three components to DATA NOT FOUND for any frame ABOVE zero | ||
+ | |||
+ | Evaluate_Expression | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | ! / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | ; | ||
+ | |||
+ | ! Save a " | ||
+ | ! three components to DATA NOT FOUND for any frame BELOW zero | ||
+ | |||
+ | Evaluate_Expression | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | ! / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | ; | ||
+ | |||
+ | ! Integrate over the right stance phase | ||
+ | |||
+ | Metric_Integrate | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | ! / | ||
+ | ! / | ||
+ | ; | ||
+ | |||
+ | ! Integrate over the left stance phase | ||
+ | |||
+ | Metric_Integrate | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | ! / | ||
+ | ! / | ||
+ | ; | ||
+ | </ | ||
+ | |||
+ | ==== Example 2: Calculate Positive and Negative Work Separately ==== | ||
+ | |||
+ | In this method we determine the phases of positive and negative power by computing [[visual3d: | ||
+ | |||
+ | < | ||
+ | !************************************** | ||
+ | ! Calculate zero crossing events | ||
+ | !************************************** | ||
+ | |||
+ | ! Calculate the PowerPos event - when signal crossing ascends | ||
+ | Event_Threshold | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | /Radius=8 | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | ; | ||
+ | |||
+ | ! Calculate the PowerNeg event - when signal crossing descends | ||
+ | Event_Threshold | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | /Radius=8 | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | ; | ||
+ | |||
+ | !********************************************************************** | ||
+ | ! Compute positive and negative work for each range of positive power. | ||
+ | !********************************************************************** | ||
+ | |||
+ | ! Calculate right ankle positive work by time integration of right ankle power from | ||
+ | ! PowerPos event to PowerNeg event | ||
+ | Metric_Integrate | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | ; | ||
+ | |||
+ | ! Calculate right ankle negative work by time integration of right ankle power | ||
+ | ! from PowerNeg event to PowerPos event | ||
+ | Metric_Integrate | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | ; | ||
+ | |||
+ | !************************************************************************ | ||
+ | ! Compute the total positive and total negative work by summing the work. | ||
+ | !************************************************************************ | ||
+ | |||
+ | !Compute total positive work for the right ankle | ||
+ | Metric_Sum | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | ; | ||
+ | |||
+ | !Compute total negative work for the right ankle | ||
+ | Metric_Sum | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | ; | ||
+ | </ | ||
+ | |||
+ | ==== Example 3: Calculate Work for Kinetic Event Sequences ==== | ||
+ | |||
+ | The previous example breaks down if you want to compute work between kinetic events such as RON and ROFF because 2 occurrences of the event PowerNeg may not be created. This happens because RON is an event in which the Ankle Power is already negative and ROFF is an event in which Ankle Power hasn't become negative yet. | ||
+ | |||
+ | The workaround is to create a PowerNeg event at RON and create a PowerNeg event at ROFF using the following commands before the events section of the script above. | ||
+ | |||
+ | < | ||
+ | Event_Copy | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | ! / | ||
+ | ! / | ||
+ | ! / | ||
+ | ! / | ||
+ | ! / | ||
+ | ; | ||
+ | |||
+ | Event_Copy | ||
+ | / | ||
+ | / | ||
+ | / | ||
+ | ! / | ||
+ | ! / | ||
+ | ! / | ||
+ | ! / | ||
+ | ! / | ||
+ | ! / | ||
+ | ; | ||
+ | </ |
visual3d/documentation/pipeline/model_based_data_commands/joint_work.1719432382.txt.gz · Last modified: 2024/06/26 20:06 by sgranger