How It Works
For each foot, markers respresenting springs are placed on the bottom of a subject's shoe. It is assumed that a two-segment (toes and hindfoot) foot model is used. The markers are placed on the floor, and each marker's parent body is either the toes or hindfoot body depending on its position relative to the toes joint.
Physical parameters for the model are determined using MATLAB's lsqnonlin optimization algorithm. These parameters include spring-specific stiffness, shared spring resting length, damping factor, and friction coefficients, and deviations from experimental kinematics allowed for dynamic consistency. During the optimization, the foot models are isolated from the full body model for computational efficiency.
The cost function minimizes errors in tracking experimental ground reaction forces and moments, deviations from experimental kinematics, and discontinuities in the stiffness profile.
Neighbor Stiffness Deviation Cost
GCP uses a neighbor stiffness deviation cost term to produce a more consistent and robust spring constant distribution. Each spring constant is penalized for its difference from a weighted average of the other spring constants. The weights are determined using the distances from the spring marker to each of the other spring markers and the following equation, where is the weight between markers and :
Similar to other cost terms, this term uses an allowable error. The standard deviation, σ in the above equation, can also be set with the "neighborStandardDeviation" field in the GCP settings file.
GCP can generate contact models with accurate ground reaction and kinematics tracking for various values of σ, so the ideal value will depend on the application. Higher values of σ will cause spring constants to be more similar over a larger area, which generally produces more robust models for optimal control problems. However, a lower value may be necessary if there are significant variations in the stiffness of a subject's shoe. In general, higher standard deviation values are recommended.
Optimization Stages
In order to improve efficiency and accuracy for this complex operation, GCP can be broken down into user defined stages. The user is able to adjust the cost function for each stage to focus on different properties of ground contact. Once GCP runs the optimization for one stage, it will take those outputs as an initial starting point for the next stage. Each stage is run consecutively in order to determine the final optimization results. For recommendations on how to structure these stages, see best practices.