====== LINK MODEL BASED Data Type ====== All kinematic and kinetic calculations in Visual3D result in either [[Visual3D:Documentation:Visual3D_Signal_Types:KINETIC_KINEMATIC_Data_Type|KINETIC_KINEMATIC]] items or [[#Link_Model_Based_Items|Link_Model_Based]] items. [[Visual3D:Documentation:Kinematics_and_Kinetics:Kinematics_Overview|Kinematic calculations]] are based on segment coordinate systems with no reference to inertial properties while [[Visual3D:Documentation:Kinematics_and_Kinetics:Kinetics_Overview|kinetic calculations]] (e.g., inverse dynamics) are based on assuming rigid segments, "connected" by joints with 1 to 6 degrees of freedom. The results of these kinematic and kinetic calculations are [[Visual3D:Documentation:Visual3D_Signal_Types:KINETIC_KINEMATIC_Data_Type|KINETIC_KINEMATIC]] signals and are resolved into the [[Visual3D:Documentation:Definitions:Laboratory_Coordinate_System|laboratory coordinate system]], often with little or no anatomical meaning. To resolve this issue, [[#Link_Model_Based_Items|Link_Model_Based]] items allow the user to specify a resolution coordinate system. An appropriate choice of resolution coordinate system imbues anatomical meaning to the signal. The dialog for creating the variables can be accessed by selecting the following option under the **Model Menu** item or by the Pipeline Command [[Visual3D:Documentation:Pipeline:Model_Based_Data_Commands:Compute_Model_Based_Data|Compute_Model_Based_Data]]. {{:MenuComputeModelBasedData.png}} Visual3D allows users to specify a large range of Link_Model_Based items that we have grouped into different categories: those related to pose estimation, ground reaction forces, kinematic quantities, and kinetic quantities. We also note those related items that are not Link_Model_Based items themselves. ==== Pose Estimation Items ==== These Link_Model_Based items are signals related to the [[visual3d:documentation:kinematics_and_kinetics:pose_estimation|estimation of the pose]] (position and orientation) of segments. | [[Visual3D:Documentation:Pipeline:Model_Based_Data_Commands:SEGMENT_RESIDUAL|SEGMENT_RESIDUAL]] | Visual3D computes the [[Visual3D:Documentation:Kinematics_and_Kinetics:Six_Degrees_of_Freedom|6 Degree of Freedom pose]] of a segment using a Least Squares fit of the tracking marker locations in the standing trial to the tracking marker locations at each frame of the movement trial. The Goodness of Fit is described by the residual of this Least Squares fit, which is captured by this model-based item. | | [[Visual3D:Documentation:Pipeline:Model_Based_Data_Commands:SEG_CGPOSITION|SEG_CGPOSITION]] | The location of the segment's center of gravity resolved into the chosen coordinate system. | | [[Visual3D:Documentation:Pipeline:Model_Based_Data_Commands:SEG_PROXIMAL_JOINT|SEG_PROXIMAL_JOINT]] | The position of the segment's proximal end resolved into the chosen coordinate system.| | [[Visual3D:Documentation:Pipeline:Model_Based_Data_Commands:SEG_DISTAL_JOINT|SEG_DISTAL_JOINT]] | The position of the segment's distal end resolved into the chosen coordinate system.| ==== Ground Reaction Force Items ==== | [[Visual3D:Documentation:Pipeline:Model_Based_Data_Commands:COP_Path|COP_Path]] | A general way to compute the center of pressure. The command checks all contacts between the specified segment and any force platform, then resolves the signal into the specified coordinate system. | | [[Visual3D:Documentation:Pipeline:Model_Based_Data_Commands:GRF_DATA|GRF_Data]] | A general way to reference an external force assigned to a specified segment. This allows the user to define the segment rather than the Force Platform, thus eliminating the need to make notes as to which segment is in contact with which platform. | | [[Visual3D:Documentation:Pipeline:Model_Based_Data_Commands:COP_MODEL_COG|COP_MODEL_COG]]| A general way to compute the difference between the COP and the MODEL_COG model-based items. | ==== Kinematic Items ==== | [[Visual3D:Documentation:Pipeline:Model_Based_Data_Commands:Joint_Angle|JOINT_ANGLE]] | The joint angle defined using a Cardan sequence (including the Joint Coordinate System).| | [[Visual3D:Documentation:Pipeline:Model_Based_Data_Commands:Helical_Angle|HELICAL_ANGLE]] | The joint angle defined as a helical angle. | | [[Visual3D:Documentation:Pipeline:Model_Based_Data_Commands:Joint_Rotation|JOINT_ROTATION]] | The joint angle represented as a 3x3 rotation matrix. | | [[Visual3D:Documentation:Pipeline:Model_Based_Data_Commands:JOINT_ACCELERATION_and_JOINT_ANGULAR_ACCELERATION|JOINT_ACCELERATION]] | The joint angular acceleration is a vector that describes the relative angular acceleration of one segment relative to another segment.| | [[Visual3D:Documentation:Pipeline:Model_Based_Data_Commands:JOINT_VELOCITY_and_JOINT_ANGULAR_VELOCITY|JOINT_VELOCITY]] | The joint angular velocity is a vector that describes the relative angular velocity of one segment relative to another segment.| | [[Visual3D:Documentation:Pipeline:Model_Based_Data_Commands:TARGET_PATH|TARGET_PATH]] | Computing the movement of the tracking markers relative to the segment coordinate system. | | [[Visual3D:Documentation:Pipeline:Model_Based_Data_Commands:SEG_VELOCITY|SEG_VELOCITY]] | The velocity of the center of mass of a segment relative to the velocity of the center of mass of the reference segment. Computationally, this value is obtained by taking the segment center of mass velocity and subtracting the reference segment center of mass velocity, with the resultant vector being transformed into the resolution segment coordinate system. | | [[Visual3D:Documentation:Pipeline:Model_Based_Data_Commands:MODEL_COG|MODEL_COG]] | The Model Center of Gravity. | | [[Visual3D:Documentation:Pipeline:Model_Based_Data_Commands:MODEL_COG_VELOCITY|MODEL_COG_VELOCITY]] | The Model Center of Gravity Velocity. | | [[Visual3D:Documentation:Pipeline:Model_Based_Data_Commands:MUSCLE_LENGTH|MUSCLE_LENGTH]] | The Path Length of a Muscle. | | [[Visual3D:Documentation:Pipeline:Model_Based_Data_Commands:SEG_PROGRESSION_ANGLE|SEG_PROGRESSION_ANGLE]] | SEG_PROGRESSION_ANGLE is the projected angle of the segment (e.g. projection of the long axis of the segment onto the ground) with the path of the center of mass of the segment over a window of 51 frames centered at the current frame. | ==== Kinetic Items ==== | [[Visual3D:Documentation:Pipeline:Model_Based_Data_Commands:JOINT_FORCE|JOINT_FORCE]] | The joint reaction force at the proximal end of a segment.| | [[Visual3D:Documentation:Pipeline:Model_Based_Data_Commands:JOINT_MOMENT|JOINT_MOMENT]] | The net joint moment at the proximal end of a segment.| | [[Visual3D:Documentation:Pipeline:Model_Based_Data_Commands:JOINT_POWER|JOINT_POWER]] | The joint power at the proximal end of a segment relative to a parent segment. This terms is parsed into 3 components.| | [[Visual3D:Documentation:Pipeline:Model_Based_Data_Commands:JOINT_POWER_SCALAR|JOINT_POWER_SCALAR]] | The joint power at the proximal end of a segment relative to a parent segment. This term is the scalar counterpart to JOINT_POWER. | | [[Visual3D:Documentation:Pipeline:Model_Based_Data_Commands:ROTATIONAL_ENERGY_SCALAR|ROTATIONAL_ENERGY_SCALAR]] | The scalar rotational energy of a segment. | | [[Visual3D:Documentation:Pipeline:Model_Based_Data_Commands:TRANSLATIONAL_ENERGY_SCALAR|TRANSLATIONAL_ENERGY_SCALAR]] | The scalar translational anergy of a segment. | | [[Visual3D:Documentation:Pipeline:Model_Based_Data_Commands:POTENTIAL_ENERGY|POTENTIAL_ENERGY]] | The potential energy of a segment. | | [[Visual3D:Documentation:Pipeline:Model_Based_Data_Commands:SEGMENT_ENERGY_TOTAL|SEGMENT_ENERGY_TOTAL]] | The total energy of a segment. This is the sum of the ROTATIONAL_ENERGY_SCALAR, TRANSLATIONAL_ENERGY_SCALAR, and POTENTIAL_ENERGY_SCALAR model-based items for that segment. | | [[Visual3D:Documentation:Pipeline:Model_Based_Data_Commands:MODEL_ENERGY_SCALAR|MODEL_ENERGY_SCALAR]] | The total energy of the **model**. This is the sum of the SEGMENT_ENERGY_TOTAL model-based items over all segments in the model.| | [[Visual3D:Documentation:Pipeline:Model_Based_Data_Commands:LINEAR_MOMENTUM|LINEAR_MOMENTUM]] | The linear momentum of a segment. | | [[Visual3D:Documentation:Pipeline:Model_Based_Data_Commands:ANGULAR_MOMENTUM|ANGULAR_MOMENTUM]] | The local angular momentum of a segment about its center of mass. | | [[Visual3D:Documentation:Pipeline:Model_Based_Data_Commands:MODEL_ANGULAR_MOMENTUM|MODEL_ANGULAR_MOMENTUM]] | The angular momentum of the **model** relative to the model's center of mass. | | [[Visual3D:Documentation:Pipeline:Model_Based_Data_Commands:MODEL_MOMENT_OF_INERTIA|MODEL_MOMENT_OF_INERTIA]] | The moment of inertia of the **model** relative to the model's center of mass. | | [[Visual3D:Documentation:Pipeline:Model_Based_Data_Commands:UD_POWER|UD_POWER]] | The unified deformable power at the distal end of foot (or shank). | ==== Related Items ==== Some calculations are based on model-based items but are not themselves LINK_MODEL_BASED items. | [[Visual3D:Documentation:Pipeline:Model_Based_Data_Commands:Joint_Work|Joint_Work]] | The mechanical work (time integration of the power profiles) at the specified joint. | ==== Working with LINK_MODEL_BASED Items ==== In order to get the most value out of these LINK_MODEL_BASED items it is important to understand how Visual3D works with these items, the assumptions that are made, and the options available to users. === Default Values === Visual3D computes model-based items using [[Visual3D:Documentation:Pipeline:Model_Based_Data_Commands:Units_of_Measurement|MKS units]], e.g., meters, kilograms and seconds. The exception to this rule are [[Visual3D:Documentation:Pipeline:Model_Based_Data_Commands:Joint_Angle#Units_for_Joint_Angles|joint angles]], which are represented in degrees. Visual3D uses certain [[Visual3D:Documentation:Pipeline:Model_Based_Data_Commands:Default_Normalization_(Scaling)_Factors|default scaling factors]] to normalize model-based items. Visual3D contains a number of [[Visual3D:Documentation:Pipeline:Model_Based_Data_Commands:Default_Segment_Names|default segment names]] that are provided for the convenience of the user. These default segments contain geometry, the inertial properties, and the wire frame model. Users that create their own segment names need to add this information in the segment properties tab in Model Builder Mode. Similarly, the calculation of Joint Moment, Joint Power, and Joint Force refer to the proximal end of the segment selected. For convenience we have mapped segment names to [[Visual3D:Documentation:Pipeline:Model_Based_Data_Commands:Default_Joint_Names|default joint names]] because we assumed that users would find it more intuitive. === Using PROCESSED Signals === Under the settings menu there are three options: - **Use Processed Analogs for Ground Reaction Force Calculations** - **Use Processed Forces for Segment to Force Assignments** - **Use Processed Targets for Model/Segment/LinkModelBased items** In most situations, you want "Use Processed Analogs" and "Use Processed Targets" set to TRUE and Use "Processed Forces" set to FALSE. If "Use Processed Analogs" and "Use Processed Targets" are checked (set to TRUE), Visual3D computes [[Visual3D:Documentation:Visual3D_Signal_Types:KINETIC_KINEMATIC_Data_Type|Kinetics and Kinematics]] using the data in the PROCESSED folder of the TARGET and ANALOG data types. If the PROCESSED folder does not exist for either of these data types then the respective ORIGINAL folder is used in its place. If you have filtered the FORCE/COFP/FREEMOMENT folders ([[Visual3D:Documentation:Visual3D_Signal_Types:Used_Process#Why_filter_the_ANALOG_vs_Force_Data|which is not recommended]]) then the PROCESSED folder will always be used. If "Use Processed Forces" is checked (set to TRUE), Visual3D computes the frames for the force assignments using the FORCE data type's PROCESSED folder. There is more information about this [[Visual3D:Documentation:Visual3D_Signal_Types:Used_Process#Process_Forces|here]]. Link_Model_Based signals are calculated using the [[Visual3D:Documentation:Pipeline:Model_Based_Data_Commands:Compute_Model_Based_Data|Compute_Model_Based_Data]] command. These signals are typically stored in the [[Visual3D:Documentation:Pipeline:File_Commands:Recalc|Recalc]] pipeline, which means that they get recomputed whenever a Recalc occurs. These signals are stored in the LINK_MODEL_BASED data type's ORIGINAL folder regardless of whether ORIGINAL or PROCESSED targets were used to create the signals. === At what point should signals be filtered === This is a difficult question because there isn't a single correct answer. The answer depends on the pose estimation method, the marker placements, the movement being recorded. An excellent discussion on this topic can be found on the ISB's [[https://biomch-l.isbweb.org/forum/biomch-l-forums/general-discussion/28776-cutoff-frequency-for-doing-inverse-dynamic|Biomch-l forums]]. In all cases we encourage users to be very deliberate about their choices to filter signals. === Deleting Model Based Signals === Model-based signals can be deleted from the data tree by right-clicking on the signal in question (or foler in question) with the mouse and selecting "Delete". This is does delete the model-based item. Since the [[Visual3D:Documentation:Pipeline:General_Information:RECALC_Pipeline|Recalc Pipeline]] contains the definition of the signal, the model-based signal will reappear every time the workspace is recalculated. If you want to delete the model-based item completely, edit the [[Visual3D:Documentation:Pipeline:General_Information:RECALC_Pipeline|Recalc Pipeline]] and delete the command that defines the signal. ==== Tutorials ==== Follow the Model Based Computations [[Visual3D:Tutorials:Kinematics_and_Kinetics:Model_Based_Items|tutorial]] to learn more about defining and using model-based items.