visual3d:tutorials:kinematics_and_kinetics:foot_and_ankle_angles
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
visual3d:tutorials:kinematics_and_kinetics:foot_and_ankle_angles [2024/06/19 12:54] – sgranger | visual3d:tutorials:kinematics_and_kinetics:foot_and_ankle_angles [2025/03/04 19:06] (current) – [Create 3 projected landmarks] wikisysop | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | {{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{{[[visual3d: | + | ====== Foot and Ankle Angles |
- | a joint angle is the relative orientation of one segment relative | + | [[Visual3D: |
- | the most common way to present the joint angle, however, | + | A joint angle is the relative orientation of one segment relative |
- | it seems intuitively clear that there must be a standard choice of the correct | + | The most common way to present the joint angle, however, is to parse this 3x3 rotation matrix into 3 components using an Euler sequence. The conceptual challenge is that there are 16 different Euler sequences by which this 3x3 rotation matrix can be parsed, and each sequence |
- | ====== preparing | + | It seems intuitively clear that there must be a standard choice of the correct sequence |
- | 1) ensure that version 3.0 or later of visual3d has been downloaded and installed.\\ | + | ===== Preparing for the Tutorial ===== |
- | 2) download | + | |
- | 3) launch the visual3d program from the start menu.\\ | + | |
- | the program will open to the main workspace.\\ | + | |
+ | 1) Ensure that version 3.0 or later of Visual3D has been downloaded and installed.\\ | ||
+ | 2) Download the cmo file with the standing calibration file and model template from the website: [[https:// | ||
+ | 3) Launch the Visual3D program from the Start menu.\\ | ||
+ | The program will open to the main workspace.\\ | ||
- | ====== purpose ====== | ||
- | 1. discuss the minimal marker placement for a single segment foot\\ | + | ===== Purpose ===== |
+ | 1. Discuss the minimal marker placement for a single segment foot: **[[# | ||
- | **[[#foot_segment_-_marker_placement|foot segment - marker placement]]**\\ | + | 2. Discuss the right-hand rule and its application to defining joint angles: |
- | 2. discuss the right-hand rule and its application to defining joint angles\\ | + | 3. Create a simple foot definition which can be used for kinetic calculations: |
+ | 3. Use three different methods to define the foot for kinematic calculations: | ||
- | **[[#ankle_angle_explained|ankle angle explained]]**\\ | + | **[[#Virtual_Foot_Method_1_-_Heel_to_Toe|Method 1 - Heel to Toe]]** |
- | 3. create a simple foot definition which can be used for kinetic calculations\\ | + | **[[# |
+ | **[[# | ||
- | **[[# | + | ===== Discussion ===== |
- | 3. use three different methods | + | There are many ways to define the foot. With a simple single segment foot, two feet are often used: |
+ | 1) The first foot is used for kinetic calculations, | ||
+ | 2) The second foot (often referred to as Virtual Foot) is used for kinematic calculations. The segment coordinate system of the kinematic foot is defined in such a way that the joint angle has a more clinically relevant meaning.\\ | ||
- | [[# | + | There is no set definition of neutral ankle angle, but neutral is approximately when the foot is flat on the floor and the shank segment is vertical. Since the angle joint and toe target are not parallel to the floor, an initial offset is introduced in the ankle angle. The segment coordinate system of the kinematic foot is defined to remove this initial offset and create a more clinically relevant ankle joint angle. |
- | [[# | + | This tutorial will explain 3 ways to define a kinematic only foot. Keep in mind, there is no default Visual3D foot definition, and the correct definition is dependent on your laboratory' |
- | [[# | + | Note that although segments are defined using different proximal and distal |
- | ====== discussion ====== | + | ===== Foot Segment - Marker Placement |
- | there are many ways to define the foot. with a simple single segment foot, two feet are often used.\\ | + | |__**The minimal useful marker set is as follows: |
+ | The **placement of the calcaneous marker** is then very important. The height of the calcaneous marker relative to the height of the toe marker defines dorsi-plantar flexion in the standing posture. Medial lateral placement of the calcaneous marker is important because the sagittal plane of the foot is defined by the calcaneous marker, the toe marker, and the virtual ankle center. | ||
- | 1) the first foot is used for kinetic calculations, | + | CA< |
- | 2) the second foot (often referred to as virtual foot) is used for kinematic calculations. the segment coordinate system | + | ST< |
+ | SMH< | ||
+ | VMH< | ||
+ | VMB< | ||
+ | PM< | ||
+ | FMB< | ||
+ | SMB< | ||
+ | * As previously mentioned, Visual3D does not have a default marker set or segment definition. It is therefore important to keep in mind that the marker set and segment definitions described in this tutorial as solely provided as an example. There are a number of alternatives for marker placement and segment definition. | ||
- | there is no set definition | + | ==== Create a Kinetic Right Foot Segment ==== |
+ | This is a simple representation | ||
- | this tutorial | + | If using the **Sample Data** provided in the beginning of this tutorial, the Right Foot is defined in this way: |
+ | |**1. Create the Right Foot Segment: | ||
+ | |**2. In the Right Foot tab, Enter these values**|**Define Proximal Joint and Radius Lateral: | ||
+ | |**3. Click on Build Model and Close Tab before proceeding**|A 3D image of a foot will appear distal to the shank.| | ||
+ | |{{: | ||
- | note that although segments are defined using different proximal and distal landmarks, all segments are tracked using the same targets (rft1, rft2, rft3). also, since these feet are kinematic only, the radius is irrelevant and can be set to 0.1. | + | ===== Virtual Foot Method |
- | ====== | + | This method will use the heel and toe targets to define the proximal and distal ends of the foot. |
- | | __**this tutorial presents a one segment foot model: | + | ==== Creating |
- | the **placement of the calcaneous marker** is then very important. the height of the calcaneous marker relative to the height of the toe marker defines dorsi-plantar flexion in the standing posture. medial lateral placement of the calcaneous marker is important because the sagittal plane of the foot is defined by the calcaneous marker, the toe marker, and the virtual ankle center. | + | In this tutorial we consider the Ankle Joint Center |
- | \\ | + | |
- | + | ||
- | + | ||
- | ca< | + | |
- | st< | + | |
- | smh< | + | |
- | vmh< | + | |
- | vmb< | + | |
- | pm< | + | |
- | fmb< | + | |
- | smb< | + | |
- | * as previously mentioned, visual3d does not have a default marker set or segment definition. it is therefore important to keep in mind that the marker set and segment definitions described in this tutorial as solely provided as an example. there are a number of alternatives for marker placement and segment definition. | + | |
- | + | ||
- | ===== create a kinetic right foot segment ===== | + | |
- | + | ||
- | this is a simple representation of the foot that is adequate for many of the kinematic and kinetic calculations in visual3d. it is not, however, adequate for the calculation of the ankle joint angle. if using the sample data provided in the beginning of this tutorial, the right foot is defined in this way. | + | |
- | + | ||
- | |**1. create the right foot segment: | + | |
- | + | ||
- | ====== virtual foot method 1 - heel to toe ====== | + | |
- | + | ||
- | this method will use the heel and toe targets to define the proximal and distal ends of the foot. | + | |
- | + | ||
- | ===== creating the ankle and toe joint centers ===== | + | |
- | + | ||
- | in this tutorial we consider the ankle joint center | + | |
- | + | ||
- | |**1. create right ankle joint center (rajc):**\\ \\ < | + | |
- | |**2. create right toe joint center | + | |**Create Right Ankle Joint Center |
+ | |Click the **Landmarks** Button and then select | ||
+ | |{{:RAJC.jpg}}| | ||
+ | |**Create Right Toe Joint Center (RTOE) at the same height as the heel marker:**| | ||
+ | |Click **Landmarks** button and then select **Add New Landmark**|**Landmark Name:** RTOE\\ **Define Orientation Using: | ||
+ | |{{: | ||
\\ | \\ | ||
- | once the ankle joint centers | + | Once the Ankle Joint Centers |
- | ===== defining | + | ==== Defining |
- | note: this definition assumes that the heel, toe, and ankle center define the sagittal plane of the foot. care must be taken to place the heel marker carefully. | + | Note: This definition assumes that the heel, toe, and ankle center define the sagittal plane of the foot. Care must be taken to place the heel marker carefully. |
- | |**3. create right virtual foot segment:**\\ \\ <html>< | + | |**3. Create Right Virtual Foot Segment:**\\ \\ <HTML>< |
- | ===== rotating | + | ==== Rotating |
- | |\\ **4. rotate | + | |\\ **4. Rotate |
- | ====== virtual foot method | + | ===== Virtual Foot Method |
- | one method for setting the ankle joint angle to zero degrees in the standing trial is to define the segment coordinate system | + | One method for setting the Ankle Joint Angle to Zero degrees in the standing trial is to define the Segment Coordinate System |
- | this can be accomplished by using the same proximal and distal targets. | + | This can be accomplished by using the same proximal and distal targets. |
- | note: this definition assumes that the posture in the standing trial is to be considered an ankle angle of zero degrees regardless of the actual posture. | + | Note: this definition assumes that the posture in the standing trial is to be considered an ankle angle of zero degrees regardless of the actual posture. |
- | |**6. create right virtual foot segment:**\\ \\ <html>< | + | |**6. Create Right Virtual Foot Segment:**\\ \\ <HTML>< |
- | **note** since the two segment coordinate systems are perfectly aligned the segments have identical orientation in the standing trial and hence have a joint angle of zero degrees.\\ | + | **NOTE** Since the two segment coordinate systems are perfectly aligned the segments have identical orientation in the standing trial and hence have a joint angle of zero degrees.\\ |
\\ | \\ | ||
- | (the segment coordinate system in this section will **not** need to be rotated to follow the convention in the rest of the tutorial) | + | (The segment coordinate system in this section will **not** need to be rotated to follow the convention in the rest of the tutorial) |
- | ====== virtual foot method | + | ===== Virtual Foot Method |
- | note: this definition assumes that the foot segment is parallel to the floor regardless of the actual posture in the standing trial. | + | Note: This definition assumes that the foot segment is parallel to the floor regardless of the actual posture in the standing trial. |
- | ===== create | + | ==== Create |
- | create | + | Create |
- | |**1. create lab_origin:**\\ \\ <html>< | + | |**1. Create Lab_Origin:**\\ \\ <HTML>< |
- | |**2. create lab_x:**\\ \\ <html>< | + | |**2. Create Lab_X:**\\ \\ <HTML>< |
- | |**3. create lab_y:**\\ \\ <html>< | + | |**3. Create Lab_Y:**\\ \\ <HTML>< |
- | ===== create | + | ==== Create |
- | create | + | Create |
- | |**1. create rla_floor:**\\ \\ <html>< | + | |**1. Create RLA_Floor:**\\ \\ <HTML>< |
- | |**2. create rma_floor:**\\ \\ <html>< | + | |**2. Create RMA_Floor:**\\ \\ <HTML>< |
- | |**3. create rft1_floor:**\\ \\ <html>< | + | |**3. Create RFT1_Floor:**\\ \\ <HTML>< |
- | ===== create | + | ==== Create |
- | the following method creates a foot coordinate system that is aligned with the laboratory coordinate system (as established by the 3 landmarks created above). | + | The following method creates a foot coordinate system that is aligned with the laboratory coordinate system (as established by the 3 landmarks created above). |
- | this orientation is convenient for describing the angle of the foot segment relative to a surface. | + | This orientation is convenient for describing the angle of the foot segment relative to a surface. |
- | |**1. create | + | |**1. Create |
- | ===== rotate | + | ==== Rotate |
- | |\\ **2. rotate | + | |\\ **2. Rotate |
- | ====== rotate segment coordinate system ====== | + | ===== Rotate Segment Coordinate System |
- | note that the segment coordinate system is parallel to the floor but the z-axis lies in the plane of the floor rather than vertical (e.g. aligned more-or-less with the shank coordinate system). | + | Note that the segment coordinate system is parallel to the floor but the z-axis lies in the plane of the floor rather than vertical (e.g. aligned more-or-less with the shank coordinate system). |
\\ | \\ | ||
- | |**rotate | + | |**Rotate |
\\ | \\ | ||
- | |3. in the **segment orientation** dialog box, enter these values:\\ \\ | **a/p axis** //+z//\\ \\ **distal | + | |3. In the **Segment Orientation** dialog box, enter these values:\\ \\ | **A/P Axis** //+Z//\\ \\ **Distal |
- | ====== ankle joint angle ====== | + | ===== Ankle Joint Angle ===== |
- | a final example of this tutorial can be seen in this [[https:// | + | A final example of this tutorial can be seen in this [[https:// |
\\ | \\ | ||
- | once this tutorial complete, a total of four foot segments have been defined: | + | Once this tutorial complete, a total of four foot segments have been defined: |
- | **right foot** was defined using [[#_create_a_kinetic_right_foot_segment|kinetic foot segment]]\\ | + | **Right Foot** was defined using [[#_Create_a_Kinetic_Right_Foot_Segment|Kinetic Foot Segment]]\\ |
- | **rft_2** was defined using [[#virtual_foot_method_1_-_heel_to_toe|**method | + | **RFT_2** was defined using [[#Virtual_Foot_Method_1_-_Heel_to_Toe|**Method |
- | **rft_3** was defined using [[#virtual_foot_method_2_-_normalize_to_proximal_segment|**method | + | **RFT_3** was defined using [[#Virtual_Foot_Method_2_-_Normalize_to_Proximal_Segment|**Method |
- | **rft_4** was defined using [[#virtual_foot_method_3_-_projected_landmarks|**method | + | **RFT_4** was defined using [[#Virtual_Foot_Method_3_-_Projected_landmarks|**Method |
\\ | \\ | ||
- | the ankle joint angle can be defined using the virtual foot relative the shank segment. | + | The Ankle Joint Angle can be defined using the Virtual Foot relative the Shank segment. |
- | ====== ankle angle explained ====== | + | ===== Ankle Angle Explained |
- | ==== understanding | + | === Understanding |
- | this section will explain a little more about the definition of the ankle and the right hand rule.\\ | + | This section will explain a little more about the definition of the ankle and the right hand rule.\\ |
- | the graphs in this section are saved in a cmo file which can be downloaded [[https:// | + | The graphs in this section are saved in a cmo file which can be downloaded [[https:// |
- | ==== right hand rule ==== | + | === Right Hand Rule === |
- | |tutorial8_7.gif\\ | + | |{{:tutorial8_7.gif}}\\ |For this segment coordinate system (z-up, y-anterior) rotation about the x-axis represents flexion/ |
- | ==== define | + | === Define |
- | **define | + | **Define |
- | 1. go to the **model** drop down menu\\ | + | 1. Go to the **Model** drop down menu\\ |
- | 2. select | + | 2. Select |
- | 3. define | + | 3. Define |
- | | | + | | |
- | **note:** rft_2 and lft_2 are virtual feet which were created using [[#method_3_-_projected_landmarks|**method | + | **NOTE:** RFT_2 and LFT_2 are virtual feet which were created using [[#Method_3_-_Projected_landmarks|**Method |
\\ | \\ | ||
- | ==== graph the ankle angle (without consistent sign convention) | + | === Graph the Ankle Angle (without consistent sign convention) === |
- | **graph the x y and z components of the ankle angle:**\\ | + | **Graph the X Y and Z components of the Ankle Angle:**\\ |
- | the signals can be graphed as an [[visual3d:tutorials:reports:visualizing_data_#to_activate_an_interactive_signal_graph|interactive graph]] under the signals | + | The signals can be graphed as an [[Visual3D:Tutorials:Reports:Visualizing_Data_#To_activate_an_interactive_signal_graph|interactive graph]] under the Signals |
\\ | \\ | ||
- | | | + | | |
- | **as per the above description, | + | **As per the above description, |
- | ==== define | + | === Define |
- | define | + | Define |
- | | **negate | + | | **Negate |
- | **negating | + | **Negating |
- | ==== graph the ankle angle (with consistent sign convention) | + | === Graph the Ankle Angle (with consistent sign convention) === |
\\ | \\ | ||
- | **graph the x y and z components of the ankle angle:**\\ | + | **Graph the X Y and Z components of the Ankle Angle:**\\ |
- | | | + | | |
\\ | \\ | ||
- | the resulting rotations about the y-axis/ | + | The resulting rotations about the y-axis/ |
- | the resulting rotations about the z-axis/ | + | The resulting rotations about the z-axis/ |
- | ====== foot progression angle ====== | + | ===== Foot Progression Angle ===== |
- | the foot progression angle is a measure often used in clinical settings, to assess toe-in/ | + | The foot progression angle is a measure often used in clinical settings, to assess toe-in/ |
- | please | + | Please |
- | ===== using a virtual lab ===== | + | ==== Using a Virtual Lab ==== |
- | when using a model that includes a pelvis | + | When using a model that includes a Pelvis |
- | the same also applies to the foot progression angle. to compute the progression angle relative to the lab, it is important that the reference coordinate system used is consistent with the direction of walking. | + | The same also applies to the Foot Progression Angle. To compute the progression angle relative to the lab, it is important that the reference coordinate system used is consistent with the direction of walking. |
- | ==== create | + | === Create |
- | first, create a [[visual3d:tutorials:modeling:virtual_laboratory_#example:_creating_a_virtual_laboratory_that_changes_with_the_direction_of_walking|virtual laboratory | + | First, create a [[Visual3D:Tutorials:Modeling:Virtual_Laboratory_#Example:_Creating_a_virtual_laboratory_that_changes_with_the_direction_of_walking|Virtual Laboratory |
- | ==== define | + | === Define |
- | compute | + | Compute |
- | | | + | | |
- | ==== graph the foot progression angles ==== | + | === Graph the Foot Progression Angles |
- | considering | + | Considering |
- | ft_prog_angle_graph.png | + | {{: |
- | ===== using the general pelvis direction ===== | + | ==== Using the General Pelvis Direction |
- | another | + | Another |
- | a vector is created using the position of the pelvis' | + | A vector is created using the position of the Pelvis' |
- | ==== pipeline script ==== | + | === Pipeline Script |
- | this pipeline script is markerset dependent. | + | This pipeline script is markerset dependent. |
< | < | ||
- | event_explicit | + | Event_Explicit |
- | /event_name=start | + | /EVENT_NAME=START |
- | /frame=1 | + | /FRAME=1 |
- | ! /time= | + | ! /TIME= |
; | ; | ||
</ | </ | ||
< | < | ||
- | event_explicit | + | Event_Explicit |
- | /event_name=end | + | /EVENT_NAME=END |
- | /frame=eof | + | /FRAME=EOF |
- | ! /time= | + | ! /TIME= |
; | ; | ||
</ | </ | ||
Line 303: | Line 298: | ||
< | < | ||
! | ! | ||
- | ! find pelvis | + | ! Find Pelvis |
! | ! | ||
- | metric_signal_value_at_event | + | Metric_Signal_Value_At_Event |
- | /result_metric_name=pelvis_at_start | + | /RESULT_METRIC_NAME=Pelvis_At_START |
- | ! /result_metric_folder=processed | + | ! /RESULT_METRIC_FOLDER=PROCESSED |
- | /signal_types=kinetic_kinematic | + | /SIGNAL_TYPES=KINETIC_KINEMATIC |
- | /signal_names=cgpos | + | /SIGNAL_NAMES=CGPOS |
- | /signal_folder=rpv | + | /SIGNAL_FOLDER=RPV |
- | /event_name=start | + | /EVENT_NAME=START |
- | /generate_mean_and_stddev=false | + | /GENERATE_MEAN_AND_STDDEV=FALSE |
- | ! /append_to_existing_values=false | + | ! /APPEND_TO_EXISTING_VALUES=FALSE |
- | ! /generate_vector_length_metric=false | + | ! /GENERATE_VECTOR_LENGTH_METRIC=FALSE |
- | ! /retain_no_data_values=false | + | ! /RETAIN_NO_DATA_VALUES=FALSE |
; | ; | ||
</ | </ | ||
Line 321: | Line 316: | ||
< | < | ||
! | ! | ||
- | ! find pelvis | + | ! Find Pelvis |
! | ! | ||
- | metric_signal_value_at_event | + | Metric_Signal_Value_At_Event |
- | /result_metric_name=pelvis_at_end | + | /RESULT_METRIC_NAME=Pelvis_At_END |
- | ! /result_metric_folder=processed | + | ! /RESULT_METRIC_FOLDER=PROCESSED |
- | /signal_types=kinetic_kinematic | + | /SIGNAL_TYPES=KINETIC_KINEMATIC |
- | /signal_names=cgpos | + | /SIGNAL_NAMES=CGPOS |
- | /signal_folder=rpv | + | /SIGNAL_FOLDER=RPV |
- | /event_name=end | + | /EVENT_NAME=END |
- | /generate_mean_and_stddev=false | + | /GENERATE_MEAN_AND_STDDEV=FALSE |
- | ! /append_to_existing_values=false | + | ! /APPEND_TO_EXISTING_VALUES=FALSE |
- | ! /generate_vector_length_metric=false | + | ! /GENERATE_VECTOR_LENGTH_METRIC=FALSE |
- | ! /retain_no_data_values=false | + | ! /RETAIN_NO_DATA_VALUES=FALSE |
; | ; | ||
</ | </ | ||
Line 339: | Line 334: | ||
< | < | ||
! | ! | ||
- | ! convert | + | ! Convert |
! | ! | ||
- | evaluate_expression | + | Evaluate_Expression |
- | /expression=0.0*kinetic_kinematic::rpv::cgpos+metric::processed::pelvis_at_end | + | /EXPRESSION=0.0*KINETIC_KINEMATIC::RPV::CGPOS+METRIC::PROCESSED::Pelvis_At_END |
- | /result_name=signal_pelvis_at_end | + | /RESULT_NAME=Signal_Pelvis_At_END |
- | ! /result_type=derived | + | ! /RESULT_TYPE=DERIVED |
- | ! /result_folder=processed | + | ! /RESULT_FOLDER=PROCESSED |
; | ; | ||
</ | </ | ||
Line 351: | Line 346: | ||
< | < | ||
! | ! | ||
- | ! convert | + | ! Convert |
! | ! | ||
- | evaluate_expression | + | Evaluate_Expression |
- | /expression=0.0*kinetic_kinematic::rpv::cgpos+metric::processed::pelvis_at_start | + | /EXPRESSION=0.0*KINETIC_KINEMATIC::RPV::CGPOS+METRIC::PROCESSED::Pelvis_At_START |
- | /result_name=signal_pelvis_at_start | + | /RESULT_NAME=Signal_Pelvis_At_START |
- | ! /result_type=derived | + | ! /RESULT_TYPE=DERIVED |
- | ! /result_folder=processed | + | ! /RESULT_FOLDER=PROCESSED |
; | ; | ||
</ | </ | ||
< | < | ||
- | evaluate_expression | + | Evaluate_Expression |
- | /expression=vector((derived::processed::signal_pelvis_at_end::x-derived::processed::signal_pelvis_at_start::x), | + | /EXPRESSION=vector((DERIVED::PROCESSED::Signal_Pelvis_At_End::X-DERIVED::PROCESSED::Signal_Pelvis_At_START::X), |
- | (derived::processed::signal_pelvis_at_end::y- derived::processed::signal_pelvis_at_start::y), | + | (DERIVED::PROCESSED::Signal_Pelvis_At_End::Y- DERIVED::PROCESSED::Signal_Pelvis_At_START::Y), |
- | (0*(derived::processed::signal_pelvis_at_end::z-derived::processed::signal_pelvis_at_start::z))) | + | (0*(DERIVED::PROCESSED::Signal_Pelvis_At_End::Z-DERIVED::PROCESSED::Signal_Pelvis_At_START::Z))) |
- | /result_name=directionofprogression | + | /RESULT_NAME=DirectionOfProgression |
- | ! /result_type=derived | + | ! /RESULT_TYPE=DERIVED |
- | ! /result_folder=processed | + | ! /RESULT_FOLDER=PROCESSED |
; | ; | ||
</ | </ | ||
< | < | ||
- | signal_magnitude | + | Signal_Magnitude |
- | /signal_types=derived | + | /SIGNAL_TYPES=DERIVED |
- | /signal_names=directionofprogression | + | /SIGNAL_NAMES=DirectionOfProgression |
- | /signal_folder=processed | + | /SIGNAL_FOLDER=PROCESSED |
- | /result_names=directionofprogression_magnitude | + | /RESULT_NAMES=DirectionOfProgression_Magnitude |
- | /result_types=derived | + | /RESULT_TYPES=DERIVED |
- | /result_folder=processed | + | /RESULT_FOLDER=PROCESSED |
- | ! /result_suffix= | + | ! /RESULT_SUFFIX= |
; | ; | ||
</ | </ | ||
< | < | ||
- | evaluate_expression | + | Evaluate_Expression |
- | /expression=derived::processed::directionofprogression/derived::processed::directionofprogression_magnitude | + | /EXPRESSION=DERIVED::PROCESSED::DirectionOfProgression/DERIVED::PROCESSED::DirectionOfProgression_Magnitude |
- | /result_name=directionofprogression_unit | + | /RESULT_NAME=DirectionOfProgression_Unit |
- | ! /result_type=derived | + | ! /RESULT_TYPE=DERIVED |
- | ! /result_folder=processed | + | ! /RESULT_FOLDER=PROCESSED |
; | ; | ||
</ | </ | ||
Line 395: | Line 390: | ||
< | < | ||
! | ! | ||
- | ! compute | + | ! Compute |
! | ! | ||
- | evaluate_expression | + | Evaluate_Expression |
- | /expression=vector((target::processed::rtoe::x-target::processed::rfcc::x), | + | /EXPRESSION=vector((TARGET::PROCESSED::RTOE::X-TARGET::PROCESSED::RFCC::X), |
- | (target::processed::rtoe::y-target::processed::rfcc::y), | + | (TARGET::PROCESSED::RTOE::Y-TARGET::PROCESSED::RFCC::Y), |
- | (0.0*(target::processed::rtoe::z-target::processed::rfcc::z))) | + | (0.0*(TARGET::PROCESSED::RTOE::Z-TARGET::PROCESSED::RFCC::Z))) |
- | /result_name=rfoot_line | + | /RESULT_NAME=RFoot_Line |
- | ! /result_type=derived | + | ! /RESULT_TYPE=DERIVED |
- | ! /result_folder=processed | + | ! /RESULT_FOLDER=PROCESSED |
; | ; | ||
</ | </ | ||
< | < | ||
- | signal_magnitude | + | Signal_Magnitude |
- | /signal_types=derived | + | /SIGNAL_TYPES=DERIVED |
- | /signal_names=rfoot_line | + | /SIGNAL_NAMES=RFoot_Line |
- | /signal_folder=processed | + | /SIGNAL_FOLDER=PROCESSED |
- | /result_names=rfoot_line_magnitude | + | /RESULT_NAMES=RFoot_Line_Magnitude |
- | /result_types=derived | + | /RESULT_TYPES=DERIVED |
- | /result_folder=processed | + | /RESULT_FOLDER=PROCESSED |
- | ! /result_suffix= | + | ! /RESULT_SUFFIX= |
; | ; | ||
</ | </ | ||
< | < | ||
- | evaluate_expression | + | Evaluate_Expression |
- | /expression=derived::processed::rfoot_line/derived::processed::rfoot_line_magnitude | + | /EXPRESSION=DERIVED::PROCESSED::RFoot_Line/DERIVED::PROCESSED::RFoot_Line_Magnitude |
- | /result_name=rfoot_line_unit | + | /RESULT_NAME=RFoot_Line_Unit |
- | ! /result_type=derived | + | ! /RESULT_TYPE=DERIVED |
- | ! /result_folder=processed | + | ! /RESULT_FOLDER=PROCESSED |
; | ; | ||
</ | </ | ||
Line 430: | Line 425: | ||
< | < | ||
! | ! | ||
- | ! compute | + | ! Compute |
! | ! | ||
- | evaluate_expression | + | Evaluate_Expression |
- | /expression=vector((target::processed::ltoe::x-target::processed::lfcc::x), | + | /EXPRESSION=vector((TARGET::PROCESSED::LTOE::X-TARGET::PROCESSED::LFCC::X), |
- | (target::processed::ltoe::y-target::processed::lfcc::y), | + | (TARGET::PROCESSED::LTOE::Y-TARGET::PROCESSED::LFCC::Y), |
- | (0.0*(target::processed::ltoe::z-target::processed::lfcc::z))) | + | (0.0*(TARGET::PROCESSED::LTOE::Z-TARGET::PROCESSED::LFCC::Z))) |
- | /result_name=lfoot_line | + | /RESULT_NAME=LFoot_Line |
- | ! /result_type=derived | + | ! /RESULT_TYPE=DERIVED |
- | ! /result_folder=processed | + | ! /RESULT_FOLDER=PROCESSED |
; | ; | ||
</ | </ | ||
< | < | ||
- | signal_magnitude | + | Signal_Magnitude |
- | /signal_types=derived | + | /SIGNAL_TYPES=DERIVED |
- | /signal_names=lfoot_line | + | /SIGNAL_NAMES=LFoot_Line |
- | /signal_folder=processed | + | /SIGNAL_FOLDER=PROCESSED |
- | /result_names=lfoot_line_magnitude | + | /RESULT_NAMES=LFoot_Line_Magnitude |
- | /result_types=derived | + | /RESULT_TYPES=DERIVED |
- | /result_folder=processed | + | /RESULT_FOLDER=PROCESSED |
- | ! /result_suffix= | + | ! /RESULT_SUFFIX= |
; | ; | ||
</ | </ | ||
< | < | ||
- | evaluate_expression | + | Evaluate_Expression |
- | /expression=derived::processed::lfoot_line/derived::processed::lfoot_line_magnitude | + | /EXPRESSION=DERIVED::PROCESSED::LFoot_Line/DERIVED::PROCESSED::LFoot_Line_Magnitude |
- | /result_name=lfoot_line_unit | + | /RESULT_NAME=LFoot_Line_Unit |
- | ! /result_type=derived | + | ! /RESULT_TYPE=DERIVED |
- | ! /result_folder=processed | + | ! /RESULT_FOLDER=PROCESSED |
; | ; | ||
</ | </ | ||
Line 465: | Line 460: | ||
< | < | ||
! | ! | ||
- | ! steps left is to find unit vector of two landmarks on the right virtual foot y | + | ! Steps left is to find unit vector of two landmarks on the right virtual foot Y |
! | ! | ||
- | evaluate_expression | + | Evaluate_Expression |
- | /expression=cross(derived::processed::rfoot_line_unit, derived::processed::directionofprogression_unit) | + | /EXPRESSION=cross(DERIVED::PROCESSED::RFoot_Line_Unit, DERIVED::PROCESSED::DirectionOfProgression_Unit) |
- | /result_name=rfoot_line_cross_product | + | /RESULT_NAME=RFoot_Line_Cross_Product |
- | ! /result_type=derived | + | ! /RESULT_TYPE=DERIVED |
- | ! /result_folder=processed | + | ! /RESULT_FOLDER=PROCESSED |
; | ; | ||
</ | </ | ||
< | < | ||
- | evaluate_expression | + | Evaluate_Expression |
- | /expression=asin(derived::processed::rfoot_line_cross_product::z) | + | /EXPRESSION=asin(DERIVED::PROCESSED::RFoot_Line_Cross_Product::Z) |
- | /result_name=rfoot_angle | + | /RESULT_NAME=RFoot_Angle |
- | ! /result_type=derived | + | ! /RESULT_TYPE=DERIVED |
- | ! /result_folder=processed | + | ! /RESULT_FOLDER=PROCESSED |
; | ; | ||
</ | </ | ||
< | < | ||
- | multiply_signals_by_constant | + | Multiply_Signals_By_Constant |
- | /signal_types=derived | + | /SIGNAL_TYPES=DERIVED |
- | /signal_names=rfoot_angle | + | /SIGNAL_NAMES=RFoot_Angle |
- | /signal_folder=processed | + | /SIGNAL_FOLDER=PROCESSED |
- | ! /result_names= | + | ! /RESULT_NAMES= |
- | ! /result_types= | + | ! /RESULT_TYPES= |
- | ! /result_folder=processed | + | ! /RESULT_FOLDER=PROCESSED |
- | /result_suffix=_degrees | + | /RESULT_SUFFIX=_Degrees |
- | ! /signal_components= | + | ! /SIGNAL_COMPONENTS= |
- | /constant=57.3 | + | /CONSTANT=57.3 |
; | ; | ||
</ | </ | ||
Line 500: | Line 495: | ||
< | < | ||
! | ! | ||
- | ! steps left is to find unit vector of two landmarks on the left virtual foot y | + | ! Steps left is to find unit vector of two landmarks on the left virtual foot Y |
! | ! | ||
- | evaluate_expression | + | Evaluate_Expression |
- | /expression=cross(derived::processed::lfoot_line_unit, derived::processed::directionofprogression_unit) | + | /EXPRESSION=cross(DERIVED::PROCESSED::LFoot_Line_Unit, DERIVED::PROCESSED::DirectionOfProgression_Unit) |
- | /result_name=lfoot_line_cross_product | + | /RESULT_NAME=LFoot_Line_Cross_Product |
- | ! /result_type=derived | + | ! /RESULT_TYPE=DERIVED |
- | ! /result_folder=processed | + | ! /RESULT_FOLDER=PROCESSED |
; | ; | ||
</ | </ | ||
< | < | ||
- | evaluate_expression | + | Evaluate_Expression |
- | /expression=-1*asin(derived::processed::lfoot_line_cross_product::z) | + | /EXPRESSION=-1*asin(DERIVED::PROCESSED::LFoot_Line_Cross_Product::Z) |
- | /result_name=lfoot_angle | + | /RESULT_NAME=LFoot_Angle |
- | ! /result_type=derived | + | ! /RESULT_TYPE=DERIVED |
- | ! /result_folder=processed | + | ! /RESULT_FOLDER=PROCESSED |
; | ; | ||
</ | </ | ||
< | < | ||
- | multiply_signals_by_constant | + | Multiply_Signals_By_Constant |
- | /signal_types=derived | + | /SIGNAL_TYPES=DERIVED |
- | /signal_names=lfoot_angle | + | /SIGNAL_NAMES=LFoot_Angle |
- | /signal_folder=processed | + | /SIGNAL_FOLDER=PROCESSED |
- | ! /result_names= | + | ! /RESULT_NAMES= |
- | ! /result_types= | + | ! /RESULT_TYPES= |
- | ! /result_folder=processed | + | ! /RESULT_FOLDER=PROCESSED |
- | /result_suffix=_degrees | + | /RESULT_SUFFIX=_Degrees |
- | ! /signal_components= | + | ! /SIGNAL_COMPONENTS= |
- | /constant=57.3 | + | /CONSTANT=57.3 |
; | ; | ||
</ | </ | ||
- | ==== graph the foot progression angles ==== | + | === Graph the Foot Progression Angles |
+ | |||
+ | This method created a derived signal, make sure to select DERIVED in the Signal Type dropdown list, in the Y Axis Properties in the Add / Modify Graph window. | ||
- | this method created a derived signal, make sure to select derived in the signal type dropdown list, in the y axis properties in the add / modify graph window. | + | {{: |
- | ft_prog_angle_graph2.png | + | ===== References ===== |
- | ====== references ====== | + | - ↑ < |
+ | - ↑ < | ||
- | - ↑ < | ||
- | - ↑ < | ||
- | }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}} |
visual3d/tutorials/kinematics_and_kinetics/foot_and_ankle_angles.1718801665.txt.gz · Last modified: 2024/06/19 12:54 by sgranger