User Tools

Site Tools


visual3d:documentation:pipeline:force_commands:fp_corners

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
visual3d:documentation:pipeline:force_commands:fp_corners [2024/06/19 12:50] sgrangervisual3d:documentation:pipeline:force_commands:fp_corners [2025/01/16 18:26] (current) – Clean up page. wikisysop
Line 1: Line 1:
-c3d parameter force_platform:corners+===== FP 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.+This page provides an overview of the [[visual3d:documentation:c3d_signal_types:c3d_format#c3d_parameter_format|C3D Parameter]] FORCE_PLATFORM:CORNERS. This parameter provides information about the location of a force platform'corners, which allows the measurements recorded by this platform to be integrated with other motion capture data.
  
-the order is (+x,+y)(-x, +y)(-x, -y)( +x, -y).+The force platform's corners are numbered from 1 to 4 with the coordinates for each corner specified in the [[visual3d:documentation:definitions:laboratory_coordinate_system|Laboratory Coordinate System]] in units consistent with the [[visual3d:documentation:c3d_signal_types:target_data_type|POINT data]]. The order is specified by the quadrant numbers in the force platform coordinate system: 
 +  - (+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 cornersthis 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.+Visual3D uses these force platform corners to calculate the transformation matrix from the force platform'coordinate system to the laboratory coordinate system. 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 [[visual3d:documentation:pipeline:force_commands:modify_force_platform_parameters|modify_force_platform_parameters]] selection under the visual3d file menu+The Force Platform corners can be modified using the [[Visual3D:Documentation:Pipeline:Force_Commands:Modify_Force_Platform_Parameters|Modify_Force_Platform_Parameters]] selection under the Visual3D File Menu
  
-===== transforming the ground reaction force into the laboratory coordinate system =====+==== 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)+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) +<code> 
-y_vector = unit_vector(corner1 - corner2) + x_vector = unit_vector(corner3 - corner2) 
-z_vector = cross_product(x_vector , y_vector) + y_vector = unit_vector(corner1 - corner2) 
-y_vector = cross_product(z_vector , x_vector) + z_vector = cross_product(x_vector , y_vector) 
-rotation matrix - fpcs to lcs + y_vector = cross_product(z_vector , x_vector)
-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 +Rotation Matrix - FPCS to LCS 
-capture a short trial of these markers.+ fpcs_to_lcs column1= x_vector 
 + fpcs_to_lcs column2= y_vector 
 + fpcs_to_lcs column3= z_vector
  
-create the following pipeline:+location of top center of force platform in LCS 
 +platform_top_center_lcs= average(corner1, corner2, corner3, corner4)
  
-!first define the marker radius as a pipeline parameter +vector from plate origin to top center relative to lab 
-\\ +Rotate_to_Lab(forceplatform_origin)
- +
- +
-[[visual3d:documentation:pipeline:pipeline_commands:set_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 +
-\\+
  
 +vector from LCS origin to platform origin
 +platform_origin_lcs= platform_top_center_lcs- vector from plate origin to top center
 +</code>
  
-[[visual3d:documentation:pipeline:metric_commands:metric_median|metric_median]] +==== Example 1: Use average marker locations to define force platform corners ====
-/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 +
-\\+
  
 +Consider the following markers to be placed on the corners of a force platform.
 +  * FP1_1
 +  * FP1_2
 +  * FP1_3
 +  * FP1_4
  
-! if the force platform parameters have already been defined, we only need to modify the corners. +Capture a short trial of these markers and create the following pipeline:
-! note that the markers are in meters, but the following command requires millimeters +
-\\+
  
 +<code>
 +!First define the marker radius as a pipeline parameter
 +Set_Pipeline_Parameter
 +/PARAMETER_NAME=MARKER_RADIUS
 +/PARAMETER_VALUE=10
 +;
  
-[[visual3d:documentation:pipeline:force_commands:modify_force_platform_parameters|modify_force_platform_parameters]] +! Compute the median value of the corners over all frames of the trial. 
-/fp_used=1 +! the result will be placed in the Global Workspace 
-/fp_corner11000*global::metric::fploc::fp1_1_med_mean::x +Metric_Median 
-+1000*global::metric::fploc::fp1_1_med_mean::+/RESULT_METRIC_NAME=_MED 
-+1000*(global::metric::fploc::fp1_1_med_mean::z-&::marker_radius) +/APPLY_AS_SUFFIX_TO_SIGNAL_NAME=TRUE 
-/fp_corner21000*global::metric::fploc::fp1_2_med_mean::x +/RESULT_METRIC_FOLDER=FPLOC 
-+1000*global::metric::fploc::fp1_2_med_mean::+/SIGNAL_TYPES=TARGET 
-+1000*(global::metric::fploc::fp1_2_med_mean::z-&::marker_radius) +/SIGNAL_NAMES=FP1_1 FP1_2 + FP1_3 FP1_4 
-/fp_corner31000*global::metric::fploc::fp1_3_med_mean::x +/SIGNAL_FOLDER=ORIGINAL 
-+1000*global::metric::fploc::fp1_3_med_mean::y +! /SIGNAL_COMPONENTS=ALL_COMPONENTS 
-+1000*(global::metric::fploc::fp1_3_med_mean::z-&::marker_radius) +/EVENT_SEQUENCE= 
-/fp_corner41000*global::metric::fploc::fp1_4_med_mean::x +/EXCLUDE_EVENTS
-+1000*global::metric::fploc::fp1_4_med_mean::y +! /GENERATE_MEAN_AND_STDDEV=TRUE 
-+1000*(global::metric::fploc::fp1_4_med_mean::z-&::marker_radius) +! /APPEND_TO_EXISTING_VALUES=FALSE 
-**;** +;
-===== example_2 using mocap markers to define the corners =====+
  
-**introduced in visual3d version 5** +! If the force platform parameters have already been defined, we only need to modify the corners
-consider the following markers to be placed on the corners of a force platform in the standing trial.+! 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::
 ++1000*GLOBAL::METRIC::FPLOC::FP1_1_MED_MEAN::
 ++1000*(GLOBAL::METRIC::FPLOC::FP1_1_MED_MEAN::Z-&::MARKER_RADIUS) 
 +/FP_CORNER2= 1000*GLOBAL::METRIC::FPLOC::FP1_2_MED_MEAN::
 ++1000*GLOBAL::METRIC::FPLOC::FP1_2_MED_MEAN::
 ++1000*(GLOBAL::METRIC::FPLOC::FP1_2_MED_MEAN::Z-&::MARKER_RADIUS) 
 +/FP_CORNER3= 1000*GLOBAL::METRIC::FPLOC::FP1_3_MED_MEAN::
 ++1000*GLOBAL::METRIC::FPLOC::FP1_3_MED_MEAN::
 ++1000*(GLOBAL::METRIC::FPLOC::FP1_3_MED_MEAN::Z-&::MARKER_RADIUS) 
 +/FP_CORNER4= 1000*GLOBAL::METRIC::FPLOC::FP1_4_MED_MEAN::
 ++1000*GLOBAL::METRIC::FPLOC::FP1_4_MED_MEAN::
 ++1000*(GLOBAL::METRIC::FPLOC::FP1_4_MED_MEAN::Z-&::MARKER_RADIUS) 
 +
 +</code>
  
-fp1_1, fp1_2, fp1_3, fp1_4 +==== Example 2: Modify force platform corners directly ====
-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 +
-\\+
  
 +This example is possible in **Visual3D Version 5 or later**.
  
-[[visual3d:documentation:pipeline:force_commands:modify_force_platform_parameters|modify_force_platform_parameters]] +Consider the following markers to be placed on the corners of a force platform in the standing trial
-/fp_used=1 +  FP1_1 
-/fp_corner1= 1000*model::target::fp1_1::x +  FP1_2 
-+1000*model::target::fp1_1::y +  FP1_3 
-+1000*(model::target::fp1_1::z-&::marker_radius) +  FP1_4
-/fp_corner2= model::target::fp1_2::+
-+1000*model::target::fp1_2::+
-+1000*(model::target::fp1_2::z-&::marker_radius) +
-/fp_corner3= 1000*model::fp1_3::+
-+1000*model::target::fp1_3::+
-+1000*(model::target::fp1_3::z-&::marker_radius) +
-/fp_corner4= 1000*model::fp1_4::+
-+1000*model::target::fp1_4::+
-+1000*(model::target::fp1_4::z-&::marker_radius) +
-**;**+
  
 +Given MARKER_RADIUS is a [[visual3d:documentation:modeling:model_metrics|model metric]] containing the radius of the markers, use the following pipeline command:
  
 +<code>
 +! 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)
 +;
 +</code>
visual3d/documentation/pipeline/force_commands/fp_corners.1718801445.txt.gz · Last modified: 2024/06/19 12:50 by sgranger