visual3d:documentation:modeling:virtual_lab:virtual_lab_direction_of_progression_method_3
This is an old revision of the document!
this script is explained in the virtual lab direction of progression tutorial. this script outlines method 3.
before running this script:
- a static trial must be loaded into the workspace
- a model template (with modified virtual lab) must be loaded into the workspace
- a dynamic trial must be loaded into the workspace
**__add_a_comment__** ! /comment= step 1: direction of progression ; ! find the location of the model's center of mass at the beginning of the trial event_explicit /event_name=trial_start /frame=50 ! /time= ; event_explicit /event_name=trial_end /frame=eof-40 ! /time= ; compute_model_based_data /result_name=model_cog /function=model_cog /segment= /reference_segment= ! /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 ; metric_signal_value_at_event /signal_types=link_model_based ! /signal_folder=original /signal_names=model_cog /result_metric_folder=prog /result_metric_name=model_cog_start ! /apply_as_suffix_to_signal_name=false ! /signal_components= /component_sequence=all /event_name=trial_start /generate_mean_and_stddev=false ! /append_to_existing_values=false ! /generate_vector_length_metric=false ! /retain_no_data_values=false ; metric_signal_value_at_event /signal_types=link_model_based ! /signal_folder=original /signal_names=model_cog /result_metric_folder=prog /result_metric_name=model_cog_end ! /apply_as_suffix_to_signal_name=false ! /signal_components= /component_sequence=all /event_name=trial_end /generate_mean_and_stddev=false ! /append_to_existing_values=false ! /generate_vector_length_metric=false ! /retain_no_data_values=false ; evaluate_expression /expression= ( metric::prog::model_cog_end - metric::prog::model_cog_start ) /result_type=metric /result_folder=prog /result_name=dir_prog_y_2 ; ! create a unit vector of the differences ! there should be no progression in the vertical direction so set z=0 evaluate_expression /expression= unit_vector ( metric::prog::dir_prog_y_2::x , metric::prog::dir_prog_y_2::y , 0 ) /result_type=metric /result_folder=prog /result_name=dir_prog ; **__add_a_comment__** ! /comment= step 3: define the trunk angle relative to the virtual lab ; ! define rotation from lab to vlab ! z component is perpendicular to the ground ! y component is the direction of progression ! x component is y cross z ! the rotation from lab to vlab is defined using the direction of progression define in step 1 and these values will be used to define the joint angles ! define rotation from lab to trunk ! using compute model based data command select the joint_rotation function and resolve the thorax/ab rotation in the lab coordinate system compute_model_based_data /result_name=trunk_rot /function=joint_rotation /segment=rta ! /reference_segment=lab /resolution_coordinate_system= ! /use_cardan_sequence=false ! /normalization=false ! /normalization_method= ! /normalization_metric= ! /negatex=false ! /negatey=false ! /negatez=false ! /axis1=x ! /axis2=y ! /axis3=z ; **__add_a_comment__** ! /comment= ; ! solve for the rotation between vlab and the trunk segment evaluate_expression /expression= ( metric::prog::dir_prog::1 * link_model_based::original::trunk_rot::7 ) + ( metric::prog::dir_prog::2 * link_model_based::original::trunk_rot::8 ) /result_type=derived /result_folder=trunk_angle /result_name=r32 ; evaluate_expression /expression= link_model_based::original::trunk_rot::9 /result_type=derived /result_folder=trunk_angle /result_name=r33 ; evaluate_expression /expression= ( metric::prog::dir_prog::2 * link_model_based::original::trunk_rot::7 ) - ( metric::prog::dir_prog::1 * link_model_based::original::trunk_rot::8 ) /result_type=derived /result_folder=trunk_angle /result_name=r31 ; evaluate_expression /expression= ( metric::prog::dir_prog::2 * link_model_based::original::trunk_rot::1 ) - ( metric::prog::dir_prog::1 * link_model_based::original::trunk_rot::2 ) /result_type=derived /result_folder=trunk_angle /result_name=r11 ; evaluate_expression /expression= ( metric::prog::dir_prog::2 * link_model_based::original::trunk_rot::4 ) - ( metric::prog::dir_prog::1 * link_model_based::original::trunk_rot::5 ) /result_type=derived /result_folder=trunk_angle /result_name=r21 ; ! solve for the joint angles: ! solve for theta x ! solve for theta y ! solve for theta z evaluate_expression /expression= atan ( - derived::trunk_angle::r32 / derived::trunk_angle::r33 ) /result_type=derived /result_folder=trunk_angle /result_name=theta_x ; evaluate_expression /expression= atan ( derived::trunk_angle::r31 / sqrt ( (derived::trunk_angle::r11 ^ 2) + (derived::trunk_angle::r21 ^ 2) ) ) /result_type=derived /result_folder=trunk_angle /result_name=theta_y ; evaluate_expression /expression= atan ( - derived::trunk_angle::r21 / derived::trunk_angle::r11 ) /result_type=derived /result_folder=trunk_angle /result_name=theta_z ; ! convert from radians to degrees multiply_signals_by_constant /signal_types=derived+derived+derived /signal_folder=trunk_angle+trunk_angle+trunk_angle /signal_names=theta_x+theta_y+theta_z ! /result_types= /result_folder=trunk_angle /result_names=++ /result_suffix=_deg ! /signal_components= /constant= ( 180 / pi() ) ;
visual3d/documentation/modeling/virtual_lab/virtual_lab_direction_of_progression_method_3.1718801359.txt.gz · Last modified: 2024/06/19 12:49 by sgranger