ANGULAR MOMENTUM PT: Difference between revisions

From Software Product Documentation
Jump to navigation Jump to search
m (Text replacement - "http://www.c-motion.com" to "https://www.c-motion.com")
m (Text replacement - "www.c-motion.com/download" to "www.has-motion.com/download")
 
Line 52: Line 52:
==Script==
==Script==


This script and sample CMO files can be downloaded [https://www.c-motion.com/download/examples/AngularMomentum/AngularMomentum_AboutAPoint.zip here]. The download also contains a PDF file with the Angular Momentum equations.
This script and sample CMO files can be downloaded [https://www.has-motion.com/download/examples/AngularMomentum/AngularMomentum_AboutAPoint.zip here]. The download also contains a PDF file with the Angular Momentum equations.


The following script computes the angular momentum about the total body center of mass, if the user would like to calculate angular momentum about a different point, specify the desired signal in place of "KINETIC_KINEMATIC::MODEL::CenterOfMass".
The following script computes the angular momentum about the total body center of mass, if the user would like to calculate angular momentum about a different point, specify the desired signal in place of "KINETIC_KINEMATIC::MODEL::CenterOfMass".

Latest revision as of 11:20, 22 May 2024

Language:  English  • français • italiano • português • español 


Angular Momentum

It is important to note that the total body angular momentum is not calculated by summing the ANGULAR_MOMENTUM for each calculated by the Compute Model Based command. The ANGULAR_MOMENTUM command calculates the angular momentum about each segment's center of mass, to calculate the total body angular momentum you must calculate the angular momentum for each segment about the same axis, such as the total body center of mass. The equations in the About Total Body Center of Mass section describe how to do this.

Angular Momentum: About Segment Center of Mass

Visual3D's built in ANGULAR_MOMENTUM command calculates the angular momentum of a segment about the segment's center of mass, but angular momentum can also be calculated about a different point in space.

Angular momentum about a segment's center of mass is:

Angular Momentum: About Total Body Center of Mass

Angular momentum about the total body center of mass is:

NOTE: Angular momentum for the whole body about the total body center of mass is just the summation of the angular momentum of each segment about the total body center of mass.



Iw = angular momentum of the segment

I = Moment of Inertia
w = Angular velocity

r = distance from the total body center of mass to the segment's center of mass
m = mass of the segment
v = translational velocity

Example Script

Inroduction

To calculate the angular momentum about a point (such as the model center of mass):

  1. Compute r
  2. Compute mv
  3. Compute r x mv
  4. Compute the angular momentum of the segment using the Angular Momentum command
  5. Compute Iw * (r x mv)

Script

This script and sample CMO files can be downloaded here. The download also contains a PDF file with the Angular Momentum equations.

The following script computes the angular momentum about the total body center of mass, if the user would like to calculate angular momentum about a different point, specify the desired signal in place of "KINETIC_KINEMATIC::MODEL::CenterOfMass".

This script calculates the angular momentum for each of the listed segments (RFT+RSK+RTH+LFT+LSK+LTH+RPV).

If the user would like to calculate the total body angular momentum about the model center of mass, the resulting signals from the last Evaluate Expression command for all segments should be summed together. If you would like to calculate the total body angular momentum, you can use the Add_Signals command after the End_For_Each.

First_Derivative
/SIGNAL_TYPES=KINETIC_KINEMATIC
/SIGNAL_FOLDER=Model
/SIGNAL_NAMES=CenterOfMass
/RESULT_TYPES=DERIVED
/RESULT_FOLDER=COM
! /RESULT_NAMES=
/RESULT_SUFFIX=_VEL
;
For_Each
/ITERATION_PARAMETER_NAME=SEG_NAME
/ITEMS=RFT+RSK+RTH+LFT+LSK+LTH+RPV
;

! compute the R for (r x mv)
Evaluate_Expression
/EXPRESSION=vector((Kinetic_Kinematic::&::SEG_NAME& ::CGPos::X - KINETIC_KINEMATIC::MODEL::CenterOfMass::X ),
(Kinetic_Kinematic::&::SEG_NAME& ::CGPos::Y - KINETIC_KINEMATIC::MODEL::CenterOfMass::Y),
(Kinetic_Kinematic::&::SEG_NAME& ::CGPos::Z - KINETIC_KINEMATIC::MODEL::CenterOfMass::Z)) /RESULT_NAME=::SEG_NAME&_R ! /RESULT_TYPE=DERIVED ! /RESULT_FOLDER=PROCESSED ; ! compute mv Evaluate_Expression /EXPRESSION=(MODEL::SEGMENT::&::SEG_NAME&:&:MASS)*(Kinetic_Kinematic::&::SEG_NAME& ::CGVel - DERIVED::COM::CENTEROFMASS_VEL ) /RESULT_NAME=::SEG_NAME&_mv ! /RESULT_TYPE=DERIVED ! /RESULT_FOLDER=PROCESSED ; ! compute rxmv Evaluate_Expression /EXPRESSION=cross(DERIVED::PROCESSED::&::SEG_NAME&_R, DERIVED::PROCESSED::&::SEG_NAME&_mv) /RESULT_NAME=::SEG_NAME&_rxmv ! /RESULT_TYPE=DERIVED ! /RESULT_FOLDER=PROCESSED ; Compute_Model_Based_Data /RESULT_NAME=::SEG_NAME&_IW /FUNCTION=ANGULAR_MOMENTUM /SEGMENT=::SEG_NAME /REFERENCE_SEGMENT=LAB ! /RESOLUTION_COORDINATE_SYSTEM=LAB ! /USE_CARDAN_SEQUENCE=FALSE ! /NORMALIZATION=FALSE ! /NORMALIZATION_METHOD= ! /NORMALIZATION_METRIC= ! /NEGATEX=FALSE ! /NEGATEY=FALSE ! /NEGATEZ=FALSE ! /AXIS1=X ! /AXIS2=Y ! /AXIS3=Z ; ! compute rxmv Evaluate_Expression /EXPRESSION=LINK_MODEL_BASED::ORIGINAL::&::SEG_NAME&_IW + DERIVED::PROCESSED::&::SEG_NAME&_rxmv /RESULT_NAME=::SEG_NAME&_IW /RESULT_TYPE=DERIVED /RESULT_FOLDER=Momentum_Contribution ; End_For_Each /ITERATION_PARAMETER_NAME=SEG_NAME ;
Retrieved from ""