Table of Contents
FP CORNERS
C3D Parameter FORCE_PLATFORM:CORNERS
The force platform corners are numbered from 1 to 4. The values are specified in the Laboratory Coordinate System in units consistent with the POINT data. The order is specified by the quadrant numbers in the force platform coordinate system.
The order is (+x,+y), (-x, +y), (-x, -y), ( +x, -y).
Visual3D calculates the transformation matrix from the force platform coordinate system to the laboratory coordinate system using the force platform corners. This transformation matrix is then used to transform the force vector from the force platform coordinate system (in which it was collected) into the laboratory coordinate system where it is used for the analysis.
The Force Platform corners can be modified using the Modify_Force_Platform_Parameters selection under the Visual3D File Menu
Transforming the Ground Reaction Force into the Laboratory Coordinate System
The following pseudo-code describes the algorithm for computing the transformation from the Force Platform Coordinate System (FPCS) to the Laboratory Coordinate System (LCS)
x_vector = unit_vector(corner3 - corner2) y_vector = unit_vector(corner1 - corner2) z_vector = cross_product(x_vector , y_vector) y_vector = cross_product(z_vector , x_vector) Rotation Matrix - FPCS to LCS fpcs_to_lcs column1= x_vector fpcs_to_lcs column2= y_vector fpcs_to_lcs column3= z_vector location of top center of force platform in LCS platform_top_center_lcs= average(corner1, corner2, corner3, corner4) vector from plate origin to top center relative to lab Rotate_to_Lab(forceplatform_origin) vector from LCS origin to platform origin platform_origin_lcs= platform_top_center_lcs- vector from plate origin to top center
Example_1 Using mocap markers to define the corners
Consider the following markers to be placed on the corners of a force platform.
FP1_1, FP1_2, FP1_3, FP1_4 Capture a short trial of these markers.
Create the following pipeline:
!First define the marker radius as a pipeline parameter
Set_Pipeline_Parameter
/PARAMETER_NAME=MARKER_RADIUS
/PARAMETER_VALUE=10
;
! Compute the median value of the corners over all frames of the trial.
! the result will be placed in the Global Workspace
Metric_Median
/RESULT_METRIC_NAME=_MED
/APPLY_AS_SUFFIX_TO_SIGNAL_NAME=TRUE
/RESULT_METRIC_FOLDER=FPLOC
/SIGNAL_TYPES=TARGET
/SIGNAL_NAMES=FP1_1 + FP1_2 + FP1_3 + FP1_4
! /SIGNAL_FOLDER=ORIGINAL
! /SIGNAL_COMPONENTS=ALL_COMPONENTS
/EVENT_SEQUENCE=
/EXCLUDE_EVENTS=
! /GENERATE_MEAN_AND_STDDEV=TRUE
! /APPEND_TO_EXISTING_VALUES=FALSE
! If the force platform parameters have already been defined, we only need to modify the corners.
! Note that the markers are in meters, but the following command requires millimeters
Modify_Force_Platform_Parameters /FP_USED=1 /FP_CORNER1= 1000*GLOBAL::METRIC::FPLOC::FP1_1_MED_MEAN::X +1000*GLOBAL::METRIC::FPLOC::FP1_1_MED_MEAN::Y +1000*(GLOBAL::METRIC::FPLOC::FP1_1_MED_MEAN::Z-&::MARKER_RADIUS) /FP_CORNER2= 1000*GLOBAL::METRIC::FPLOC::FP1_2_MED_MEAN::X +1000*GLOBAL::METRIC::FPLOC::FP1_2_MED_MEAN::Y +1000*(GLOBAL::METRIC::FPLOC::FP1_2_MED_MEAN::Z-&::MARKER_RADIUS) /FP_CORNER3= 1000*GLOBAL::METRIC::FPLOC::FP1_3_MED_MEAN::X +1000*GLOBAL::METRIC::FPLOC::FP1_3_MED_MEAN::Y +1000*(GLOBAL::METRIC::FPLOC::FP1_3_MED_MEAN::Z-&::MARKER_RADIUS) /FP_CORNER4= 1000*GLOBAL::METRIC::FPLOC::FP1_4_MED_MEAN::X +1000*GLOBAL::METRIC::FPLOC::FP1_4_MED_MEAN::Y +1000*(GLOBAL::METRIC::FPLOC::FP1_4_MED_MEAN::Z-&::MARKER_RADIUS) ;
Example_2 Using mocap markers to define the corners
Introduced in Visual3D Version 5 Consider the following markers to be placed on the corners of a force platform in the standing trial.
FP1_1, FP1_2, FP1_3, FP1_4
MARKER_RADIUS is a model metric containing the radius of the markers.
! If the force platform parameters have already been defined, we only need to modify the corners.
! Note that the markers are in meters, but the following command requires millimeters
Modify_Force_Platform_Parameters /FP_USED=1 /FP_CORNER1= 1000*MODEL::TARGET::FP1_1::X +1000*MODEL::TARGET::FP1_1::Y +1000*(MODEL::TARGET::FP1_1::Z-&::MARKER_RADIUS) /FP_CORNER2= MODEL::TARGET::FP1_2::X +1000*MODEL::TARGET::FP1_2::Y +1000*(MODEL::TARGET::FP1_2::Z-&::MARKER_RADIUS) /FP_CORNER3= 1000*MODEL::FP1_3::X +1000*MODEL::TARGET::FP1_3::Y +1000*(MODEL::TARGET::FP1_3::Z-&::MARKER_RADIUS) /FP_CORNER4= 1000*MODEL::FP1_4::X +1000*MODEL::TARGET::FP1_4::Y +1000*(MODEL::TARGET::FP1_4::Z-&::MARKER_RADIUS) ;