Skip to main content
Advertisement
Browse Subject Areas
?

Click through the PLOS taxonomy to find articles in your field.

For more information about PLOS Subject Areas, click here.

  • Loading metrics

AddBiomechanics: Automating model scaling, inverse kinematics, and inverse dynamics from human motion data through sequential optimization

  • Keenon Werling,

    Roles Conceptualization, Data curation, Formal analysis, Investigation, Methodology, Software, Validation, Visualization, Writing – original draft, Writing – review & editing

    Affiliation Department of Computer Science, Stanford University, Stanford, California, United States of America

  • Nicholas A. Bianco ,

    Roles Conceptualization, Data curation, Formal analysis, Investigation, Software, Validation, Visualization, Writing – original draft, Writing – review & editing

    nbianco@stanford.edu

    Affiliation Department of Mechanical Engineering, Stanford University, Stanford, California, United States of America

  • Michael Raitor,

    Roles Data curation, Validation, Writing – review & editing

    Affiliation Department of Mechanical Engineering, Stanford University, Stanford, California, United States of America

  • Jon Stingel,

    Roles Data curation, Validation, Writing – review & editing

    Affiliation Department of Mechanical Engineering, Stanford University, Stanford, California, United States of America

  • Jennifer L. Hicks,

    Roles Funding acquisition, Project administration, Supervision, Validation, Writing – review & editing

    Affiliation Department of Bioengineering, Stanford University, Stanford, California, United States of America

  • Steven H. Collins,

    Roles Conceptualization, Funding acquisition, Project administration, Supervision, Writing – original draft, Writing – review & editing

    Affiliation Department of Mechanical Engineering, Stanford University, Stanford, California, United States of America

  • Scott L. Delp,

    Roles Conceptualization, Funding acquisition, Project administration, Resources, Supervision, Writing – review & editing

    Affiliations Department of Mechanical Engineering, Stanford University, Stanford, California, United States of America, Department of Bioengineering, Stanford University, Stanford, California, United States of America

  • C. Karen Liu

    Roles Conceptualization, Formal analysis, Funding acquisition, Project administration, Resources, Supervision, Validation, Writing – original draft, Writing – review & editing

    Affiliation Department of Computer Science, Stanford University, Stanford, California, United States of America

Abstract

Creating large-scale public datasets of human motion biomechanics could unlock data-driven breakthroughs in our understanding of human motion, neuromuscular diseases, and assistive devices. However, the manual effort currently required to process motion capture data and quantify the kinematics and dynamics of movement is costly and limits the collection and sharing of large-scale biomechanical datasets. We present a method, called AddBiomechanics, to automate and standardize the quantification of human movement dynamics from motion capture data. We use linear methods followed by a non-convex bilevel optimization to scale the body segments of a musculoskeletal model, register the locations of optical markers placed on an experimental subject to the markers on a musculoskeletal model, and compute body segment kinematics given trajectories of experimental markers during a motion. We then apply a linear method followed by another non-convex optimization to find body segment masses and fine tune kinematics to minimize residual forces given corresponding trajectories of ground reaction forces. The optimization approach requires approximately 3-5 minutes to determine a subject’s skeleton dimensions and motion kinematics, and less than 30 minutes of computation to also determine dynamically consistent skeleton inertia properties and fine-tuned kinematics and kinetics, compared with about one day of manual work for a human expert. We used AddBiomechanics to automatically reconstruct joint angle and torque trajectories from previously published multi-activity datasets, achieving close correspondence to expert-calculated values, marker root-mean-square errors less than 2 cm, and residual force magnitudes smaller than 2% of peak external force. Finally, we confirmed that AddBiomechanics accurately reproduced joint kinematics and kinetics from synthetic walking data with low marker error and residual loads. We have published the algorithm as an open source cloud service at AddBiomechanics.org, which is available at no cost and asks that users agree to share processed and de-identified data with the community. As of this writing, hundreds of researchers have used the prototype tool to process and share about ten thousand motion files from about one thousand experimental subjects. Reducing the barriers to processing and sharing high-quality human motion biomechanics data will enable more people to use state-of-the-art biomechanical analysis, do so at lower cost, and share larger and more accurate datasets.

Introduction

Quantitative analysis of human movement dynamics is a powerful tool that has been widely used to estimate joint loading during walking and running e.g. [19], assess muscle function during gait in individuals with cerebral palsy e.g. [10, 11], analyze the performance of assistive devices for improving human movement e.g. [1215], quantify changes in neuromuscular control due to Parkinson’s disease e.g. [16, 17], and even generate more realistic computer graphics e.g. [1820]. But the resource-intensive nature of quantitative movement analysis restricts access to this data and keeps study sample sizes small. Without automated tools to process, analyze, and harmonize lab-based human movement data, the biomechanics field has been hamstrung in its ability to apply modern, data-hungry machine learning approaches to create accurate, data-driven models to predict, prevent, and personalize treatment for the many injuries and conditions that impair movement.

Laboratory-based motion capture is the current benchmark data acquisition technique to quantify human biomechanics [21, 22], but current state-of-the-art software for reconstructing the motion and kinetics of a human musculoskeletal model from optical marker trajectories and ground reaction forces requires substantial iterative “guess-and-check” refinement, which increases costs, limits scalability, and reduces the reproducibility of motion capture studies [2325]. A typical experiment involves placing optical markers on a subject’s body segments and having the subject perform actions in a laboratory space surrounded by specialized cameras. These camera systems and associated software are able to reconstruct the three-dimensional locations of the optical markers in the lab, and given the marker trajectories over time, one can use proprietary, open, or custom software to reconstruct the kinematics of the subject’s body segments. If external loads recorded simultaneously from ground force plates an inverse dynamics method can be used to estimate the joint torques the subject used to generate the observed motion.

Current practices for model scaling and inverse kinematics

To reconstruct movement kinematics from optical motion capture data, software must address several sources of noise, ambiguity, and model error. Given a set of marker trajectories corresponding to a motion of interest, software must reconstruct a digital twin of the experimental subject, with segment dimensions that match the subject as closely as possible. This process is called scaling, and a variety of approaches have been described [23, 2633]. Finding accurate scaling is especially important when using motion capture data to create muscle-driven simulations because the muscle-tendon parameters are scaled by the body segment dimensions [34]. To achieve accurate kinematic results, the locations of the markers on the scaled digital twin must be adjusted to account for variations caused by human error in attaching the markers to the body and the variations in the dimensions of human subjects [24]. This is called marker registration. Finally, the positions and orientations of the body segments over time must be determined, which is typically done using an optimization process called inverse kinematics [3539]. Inverse kinematics algorithms generally produce more accurate results when the solutions are constrained by an underlying skeletal model [13, 24, 40].

The interdependence between scaling, marker registration, and inverse kinematics means that experts must follow an iterative guess-and-check procedure, where they refine each of the steps several times, making small adjustments to each value until a desired accuracy is achieved [41, 42]. For example, increasing the length of the upper arm segment in a subject’s digital twin will require also changing the marker registrations for any markers on the forearm and the hands, because otherwise those markers would move as a result of the longer upper arm. A longer upper arm will also, all else being equal, change the resulting motion found by inverse kinematics. While there are best practices for conducting validation at each step [34], the process typically requires extensive and subjective input from an expert.

Automating the scaling and registration process has been studied before, in pioneering work by Reinbolt et. al. [43] and Charlton et. al. [44]. These authors used gradient-free optimization methods to automatically estimate body segment scales and marker registrations while solving gradient-based inverse-kinematics problems repeatedly in an inner-loop to evaluate optimization progress. These methods require large amounts of compute time because every iterative guess the outer optimizer makes about body segment scaling and marker offsets requires solving a computationally costly inner optimization problem (inverse kinematics) to evaluate the quality of the guess. The method of Reinbolt et al. [43] produces the best results using a particle-based optimizer for their outer optimization problem, to combat the non-convexity of the problem, but this comes at a further increase in computational cost.

Given the interconnected nature of body segment scaling, marker registration, and inverse kinematics, one might also consider posing all three problems as a single optimization problem. However, such a formulation leads to a nonconvex optimization in which a global solution is not guaranteed [45]. Instead, we can only guarantee to find a local optimum close to an initial guess, so providing a high quality initial guess is crucial. Andersen et al. [46] have formulated such nonconvex optimization problems, but did not address the problem of reliably finding an initial guess for the non-convex optimization problem proposed.

Markerless motion capture systems based on video recordings have recently become popular since they do not require expensive motion capture equipment [47]. While these approaches do not track optical markers, recent work has focused on combining markerless motion capture techniques (e.g., pose detection) with scaled musculoskeletal models to incorporate physiological joint constraints [48, 49]. These approaches still rely on solving an inverse kinematics problem, using keypoints from pose detection algorithms, rather than optical markers. Accurate scaled models also enable deeper biomechanical analyses with markerless motion capture techniques to estimate kinetic quantities, like joint moments and muscle forces [49].

Creating physically-consistent simulations

Making accurate conclusions about the kinetics of human movement requires that the kinematics and mass properties of a musculoskeletal model are “dynamically-consistent” with external forces (e.g., ground reaction forces). Incorporating experimental, external force measurements into simulations of movement can lead to challenges similar to those presented in the scaling and inverse kinematics problems. When inconsistencies between model properties, kinematics, and measured external forces are present, an inverse dynamics analysis will yield physically impossible external forces and moments about the model’s root segment (e.g., pelvis), often referred to as residual forces. Biomechanics researchers aim to minimize or eliminate residual forces and moments from their simulations; in practice, it is usually sufficient to reduce the magnitude of the residual forces below recommended thresholds based on the magnitude of the experimental ground reaction forces and center of mass trajectory [34].

Similar to model scaling, dynamic consistency is usually achieved through an iterative process where changes in model kinematics and mass parameters are made to reduce residual forces and moments. OpenSim, widely used simulation software, provides the Residual Reduction Algorithm (RRA) tool, which adjusts mass, body mass center locations, and joint kinematics to minimize residual forces and moments [41, 50]. The RRA tool uses a tracking controller to adjust joint kinematics while penalizing the magnitude of residual forces and moments. Tracking weights for each joint must be chosen such that the kinematic changes are within measurement errors while still minimizing residual forces. Since changes in residual forces are dependent on changes in kinematics and mass properties, it is often necessary to run the RRA tool iteratively to meet recommended residual force thresholds. Sturdy et al. [25] used the RRA tool to automate the reduction of residual forces by optimizing the tracking weights with random hill climbing. This approach yielded residuals within recommended thresholds from Hicks et al. [34], but required a pre-scaled model, joint trajectories from inverse kinematics, and up to 2 hours of processing time per subject on a standard desktop machine.

Automating motion capture data processing with AddBiomechanics

Thus, despite recent advances in biomechanics simulation methods, reconstructing human movement from experiments remains a challenging and time-consuming task for researchers, and large-scale datasets are lacking. This paper introduces an automated method (Fig 1), called AddBiomechanics, that uses a combination of traditional kinematic solvers and modern bilevel optimization to estimate high quality inverse kinematics and dynamics from experimental motion capture data in reasonable computation time. We first apply a sequence of optimizations to approximate the initial values for each of the body segment scales, marker registrations, and inverse kinematics [43, 44]; thus, no user-provided initial guess is required. Then, rather than iteratively repeat those optimization problems hundreds of times as in previous work, we apply bilevel optimization techniques to simultaneously optimize body scaling, marker registration, and inverse kinematics. Next, we find a least-squares fit for the subject mass and initial center-of-mass position and velocity such that integrating the center-of-mass accelerations (which are the measured ground-reaction-forces divided by subject mass) results in the least-squares closest approximation to the purely kinematic motion we found in the previous step. Finally, we optimize body segment masses and tune the body scales, marker registrations, and model kinematics using the same bilevel approach to find a motion that is still consistent with the experimental marker data while achieving nearly zero residuals. To evaluate the algorithm, we computed marker RMS errors and residual forces and moments for a set of common movements studied in the biomechanics field including walking, running, squatting, and sit-to-stand motions, and compared errors to results computed by experts. We also used AddBiomechanics to estimate joint angles and moments for a simulated walking motion with known dynamics and zero residuals. Finally, we evaluated the computational cost of computing kinematics and kinetics on these datasets.

thumbnail
Fig 1. AddBiomechanics automates the analyses required in a standard motion capture pipeline.

AddBiomechanics integrates into the standard motion capture pipeline to automate the process of model scaling, marker registration, inverse kinematics, and residual reduction. Once experimental marker and ground reaction force data have been collected and uploaded (steps 1–3), AddBiomechanics (step 4), replaces time-consuming and error-prone manual steps in previous workflows. Our method processes input marker and force data through several steps automatically. First, it finds the functional joint centers from the data (step 4.1), and then it uses the marker data and those joint centers to make an initial guess for body segment scales and marker registrations (step 4.2). The initial guess then serves as the starting point for a bilevel optimization problem that matches the model geometry and kinematics to the experimental marker data as closely as possible (step 4.3). Next, the model trajectory is updated by fitting the center of mass motion to the ground reaction force data (step 4.4). A final optimization adjusts body segment masses and joint kinematics to maximize consistency between the model and the experimental data (step 4.5). The final output is a musculoskeletal model scaled to the subject with registered markers, joint angles, and joint torques over time.

https://doi.org/10.1371/journal.pone.0295152.g001

AddBiomechanics can process large amounts of motion capture data automatically. To facilitate its use, we have released the software as an open source cloud-based service available at AddBiomechanics.org, where over 300 researchers from dozens of institutions have begun to process their data without downloading or installing any software. AddBiomechanics outputs OpenSim project files [41], compatible with the widely used open source biomechanics package, so the results of scaling and marker registration can be transferred to OpenSim for further analysis. Optimized skeletons can also be exported in formats compatible with MuJuCo [51] and PyBullet [52], which are physics simulators commonly used in reinforcement learning and computer graphics.

Methods

Given a musculoskeletal model and experimental data, AddBiomechanics solves a sequence of optimization problems to compute model scaling, inverse kinematics, and inverse dynamics, where the solution for each problem is the initial guess for the subsequent problem. First, the model scaling and inverse kinematics problems are solved using a series of linear and bilevel optimization problems to find a solution for the model body segment scale factors, marker registrations, and joint kinematics. If ground reaction force data is provided by the user, AddBiomechanics then estimates center of mass trajectory and overall subject mass with a linear optimization, followed by a non-convex optimization step to minimize residual forces and tune the original model scaling and joint kinematics solution. Each of these steps are described in more detail in the sections that follow.

Input model and experimental data

Generic, unscaled musculoskeletal model.

Our algorithm can scale and register markers on arbitrary skeletons defined using the OpenSim model format. A skeleton is composed of a set of body segments, connected by joints. The scaling of each link is concatenated to form the s vector, and the degrees of freedom of each joint are concatenated to form the q vector. The algorithm supports all OpenSim joint types, including custom joints. Examples of skeletons that have been successfully scaled and registered in our experiments include widely used state-of-the-art biomechanical models [53, 54].

Motion capture marker trajectories.

The output of a commercial motion capture system is a series of frames, often at 100–200 Hz, where each frame contains 3D coordinates representing the trajectories of optical motion capture markers in the experimental capture volume at the corresponding moment in time. Users must provide these marker trajectories for each experimental movement trial. Each 3D coordinate must be “labeled” with a tag corresponding to an experimental marker location on the subject (e.g. “C7” for the optical marker placed on the C7 spinal segment). A full list of marker tags, and their location on a given musculoskeletal model is known as the “marker set.” We provide models with default marker sets, but users may upload a custom model with a marker set that matches the experimental marker data they provide. In practice, markers are almost never placed exactly at their ideal locations, and these small deviations in experimental marker placement must be accounted for during the marker registration step. Not every marker from the marker set is observed in every frame, because markers may be occasionally obstructed during a motion capture experiment. Our algorithm allows for markers with missing frames and can automatically adjust for deviations in marker placement during the optimization.

Ground reaction forces.

Ground reaction forces are recorded from force plates embedded in the ground and are typically measured at higher frame rates (e.g., 1000–2000 Hz) compared to marker trajectory measurements. To compute dynamics with AddBiomechanics, users must provide the 3 forces, 3 torques, and center of pressure locations for each force plate as a C3D file or tab-delimited data file. We assign loads from each force plate to the feet in the model based on when the feet are penetrating the ground within known force plate geometries and when the ground reaction force information exceeds a non-zero threshold. We assume that both feet are never simultaneously in contact with a single force plate.

Model scaling and inverse kinematics

Model optimization to minimize marker position errors.

Given the measured marker trajectories from a motion capture system with length equal to the number of time points T, , AddBiomechanics formulates a nonconvex optimization that solves for the kinematic pose trajectories, q1:T, the scaling parameters of the body segments of the musculoskeletal model, s, and the locations of markers attached to the body segments, p. The objective of the optimization is to minimize the deviation of estimated marker positions from : (1) where M is the number of markers, denotes the position of the i-th marker in the local frame of the body segment to which it is attached, and is the concatenated local positions of all markers. fFK(qt, s, p(i)) is the forward kinematic process that transforms a point p(i) in a skeleton scaled by s and in the pose qt from the local coordinate frame of the assigned body segment to the world coordinate frame. Note that we use the t to denote the time index (rather than a value in seconds) throughout the manuscript.

Eq (1) is high-dimensional and nonconvex. Consequently, the solution of such an optimization is highly sensitive to the initialization of the decision variables. We use a bilevel maximum-a-posteriori (MAP) optimization and an initialization strategy to achieve new state-of-the-art in automatic processing of biomechanical motion capture data. The proposed bilevel MAP optimization simultaneously considers data reconstruction and anthropometric statistics when jointly optimizing all decision variables in Eq (1). To overcome the sensitivity to the initial guess, our method individually initializes each type of variable using independent sources of information. Specifically, we use kinematic constraints to initialize q1:T, a geometric invariant to initialize s, and real-world measurement to initialize p. Once the variables are initialized individually, the final bilevel optimization ensures that they agree with one another, given the observed data and model priors. More details about each of these steps are provided in the sections that follow.

Bilevel maximum-a-posteriori (MAP) optimization.

Given recorded marker positions at time index t, we are interested in reconstructing the scales of each body segment in the musculoskeletal model, s, the local positions of the markers p attached to their assigned body segments, as well as the joint pose qt. This problem can be formulated as a maximum a-priori (MAP) optimization: (2)

The first term, , is a conditional probability of the observed data given the estimated parameters. This formulation is equivalent to the standard least-squares inverse kinematics objective term if we assume Gaussian noise in our marker observations. The second term, Ps(s), expresses the prior of skeleton scaling, encoded as a multivariate Gaussian fit to the ANSUR II dataset [55] of anthropometric scalings. If the height, weight, or biological sex of the experimental subject is known, the multivariate Gaussian skeleton scaling prior is conditioned on that information before any optimization. The third term, , is a zero-mean Gaussian distribution that regularizes the deviation of the marker locations from their intended locations provided by the experimenter, encoding that markers are generally placed close to their intended locations, even if they do not perfectly align. regularizes markers differently: some markers are placed on anatomical landmarks, and therefore are unlikely to move relative to the landmark from subject to subject, and other markers are placed anywhere on a body segment as “tracking” markers, and therefore the optimizer should be allowed wide discretion to adjust those marker locations. The sets of “anatomical” and “tracking” markers are determined from the musculoskeletal model provided by the user. For best performance, users should place at least one anatomical marker on each body segment in the model. The fourth term is a prior over q, but we assume this is a uniform distribution and drop it hereafter.

This is a bilevel optimization problem, because in order to evaluate the quality of given skeleton scaling s and marker locations p, we need to optimize over the possible joint positions qt. To efficiently solve the bilevel optimization problem, we observe that at the optimal values of qt for , the gradient of the inner optimization problem will be zero. Using this observation, we reformulate the bilevel optimization problem as a single-level nonconvex optimization problem with nonconvex constraints. For numerical stability, we minimize the negative log of the above objective function: (3)

At a locally-optimal point, the gradient of the objective term with respect to any of the decision variables is zero, so it must be zero with respect to qt: (4)

Thus, at a locally-optimal point for the objective function, the constraint in Eq 3 must hold regardless, and so we could theoretically omit it from the optimization problem without loss of correctness. However, we found that explicitly including the constraint allows the optimizer to converge to a high-quality solution much more quickly. See S1 Appendix for a more detailed analysis.

We could use any nonlinear optimization solver to solve Eq (3). In practice, we use IPOPT [56], which is a high-quality and open source solver. However, due to our problem’s non-convexity, a good initial guess for the decision variables is needed to produce reasonable results.

Initializing the kinematic decision variables.

Prior to solving the optimization problem in Eq (3), we need to get “close-enough” initial guesses for the decision variables. We do this through a sequence of optimization problems as described in the steps below. We obtain initial guesses for the joint angles, qt, body segment scales, s, and marker offsets, p, individually based on independent sources of information such that the cascading errors can be mitigated.

  1. Initialize p using the marker locations measured by the experimenter or defined by the existing marker set.
  2. Initialize s by analytically computing the functional joint centers and axes using the method described in [57], refine those values using a non-convex sphere-fitting problem, and scale s to match the joint axes along with the measured markers.
  3. Initialize qt by solving inverse kinematics with a skeleton scaled to s and with marker locations p.

Step 1 is trivial and Step 3 is a simplified Eq (1) with s being given from Step 2 and p given from Step 1, . Solving this inverse kinematics problem efficiently has been an area of research for decades [5860] and can be done efficiently and reliably.

The most involved step in our initialization process is Step 2, initializing the body segment scales s. We begin by analytically computing a set of functional joint centers and axes from the measured marker trajectories using the least-squares method given in [57]. The least-squares method is deterministic, but can be slightly less than optimal in the presence of soft-tissue artifacts, so we further refine joint center estimates with a non-convex problem, initialized with the answers we get from [57]. Let the subset of markers attached to the two body segments connected by the joint be . We can estimate the joint position c in the world frame over time by (5) where ri is the estimated distance between the i-th marker and the joint center ct for all t. ri is constant over time. For each marker, Eq (5) fits a moving sphere centered at ct with the radius ri, to match the measured positions of the marker over time.

The sphere-fitting approach to finding functional joint centers can yield ambiguities when marker motion adjacent to a joint is primarily confined to the sagittal plane, as commonly happens in locomotion. In such cases, we could move our joint center perpendicular to the sagittal plane, and still have an equally good solution for sphere-fitting. As a result, sphere-fitting might incorrectly scale the skeleton to match erroneous joint positions. For example, we might incorrectly scale the hip width while still matching all the measured marker motion for the thighs and the pelvis.

To address these ambiguities, we formulate another optimization problem to simultaneously find the joint axis and the joint center, building on Eq (5). This problem is similar in spirit to the axis-of-rotation problem described in [61], but can be implemented without any matrix factorizations. The goal of the axis fit problem is to identify not only a joint center c, but also the direction of axis a at each frame. We also estimate a fixed distance from the center for each marker, parameterized by a distance ui along the axis a and a distance vi perpendicular to the axis a. The result of a successful axis fit is that we capture a line at each frame, where the functional joint center could lie anywhere on that line: (6)

For each marker in the set , we decompose to two vectors: the parallel vector which is the projection of on at, and the remaining orthogonal vector. Eq (6) encourages that both the projected vector and the orthogonal vector maintain constant length over time for every marker in .

We run both sphere fitting and axis fitting at each joint. Because the axis fit is a strictly more demanding problem, if it succeeds, then the axis is passed on as a constraint for subsequent problems. If axis fitting fails, then it must be because there is out-of-plane marker motion, which means that the sphere fit is not ambiguous, so then the exact joint center is passed along to subsequent problems.

Once we determine the joint center and/or the joint axis, we formulate another optimization to initialize the scaling parameters s: (7) where the zero vector 0(j) indicates the local coordinate of the joint j, and N is the number of joints. The first term fits the skeleton to the measured marker positions, while the second term encourages the joints to lie on the estimated joint axes solved by Eq (6), at a distance controlled by the scalar decision variable α. If the joint axis does not exist for the joint j, we set aj to zero and remove α from the optimization.

After initializing the decision variables, we find a solution by minimizing Eq (3). The body scales, s, and marker registrations, p, are returned to the user as an optimized version of the OpenSim model the user submitted to the tool. The joint angle trajectories, qt, obtained from inverse kinematics solution for each trial are exported using OpenSim’s MOT file format.

Inverse dynamics

Model optimization to achieve physical consistency.

After finding a set of marker registrations and body scales that achieve a good inverse kinematics fit to the marker trajectories, we can then solve another optimization problem to find body segement masses and updated joint kinematics that minimize the set of residual forces and torques applied to the pelvis. Similar to the model scaling and inverse kinematics optimization, this problem is non-convex, so we first need to create a good initial guess for the model and mass parameters and update the kinematic trajectory so that it is physically consistent with the observed ground reaction force data. To achieve this, we solve a series of linear equations to fit the system’s center of mass trajectory to our results from the marker fitting step while prescribing the observed ground reaction forces. We begin with the solution q1:T obtained from the previous model scaling and inverse kinematics process. To avoid large acceleration artifacts in the dynamic fitting problems, we smooth the solution q1:T by minimizing the jerk of the joint angle trajectories over time (S1 Appendix).

Center of mass trajectory fitting.

The trajectory of the center of mass of the system is dictated by the ground reaction forces acting on the model and can be defined by the differential equation: (8) where is center of mass acceleration, f is the ground reaction force vector, m is the system mass, and g is gravitational acceleration.

Since the ground reaction forces are known from experimental data, the center of mass acceleration is just a linear function of inverse mass of the model. We define a new variable , and note that the center of mass trajectory is a linear function of μ. If the initial state (the state at index t = 1) of the center of mass acceleration, , is known, the entire trajectory zt is determined. We aim to find a best fit of this trajectory to the trajectory that we obtained from the marker-fitting optimization, .

We define a vector ζ that contains the three unknown quantities: (9)

We can define a linear system with matrix and offset that maps the vector ζ onto , a vector of concatenated center of mass position vectors over time: (10)

Given the observed trajectory of center of mass motion from the marker fitting step, , it is possible to find a least-squares best estimate for the unknowns, , using the pseudo-inverse of A: (11)

To derive A, first, we define a semi-explicit Euler integration scheme to solve for the center of mass trajectory: (12) where Δt is the integration time step in seconds.

We can then construct A and b using this integration scheme to relate the unknowns ζ to the center of mass positions, : (13)

Here, the first two columnar blocks of A represent the contributions from z1 and to the trajectory , where I and 0 are the 3 × 3 identity and zero matrices, respectively. The third columnar block of A represents the contribution from the inverse mass μ and is a single column containing terms corresponding to the time integration of the ground reaction forces. Similarly, the vector b contains terms corresponding to the time integration of gravitational acceleration.

By solving Eq (11), we obtain a least-squares best fit of the initial conditions and mass of the system, , and can use this solution to obtain a new trajectory for the center of mass that is physically consistent with the observed ground reaction force data, . We can recover total mass as . Finally, we modify the position of the pelvis over time while keeping the remaining joint angles fixed to update the model’s center of mass trajectory to match . This step serves as an initialization for the final problem described later, which will further refine the joint angle trajectories while optimizing the mass properties of the model.

Angular dynamics fitting.

Fitting the center of mass trajectory provides better physical consistency with the linear ground reaction forces applied to the system, but the trajectory may still be inconsistent with the moments these forces produce about the center of mass of the system. Given our solution to the linear center of mass fitting problem, , we can expand our approach to also address physical inconsistencies in the angular dynamics.

We use to denote the rotational generalized coordinates of the root segment (e.g., the pelvis) at time t, which are a subset of the coordinates in qt. First, we assume that changing θt does not change the mass matrix or the Coriolis forces for the skeleton at time t. This is not true in general, but since we aim to make small adjustments to θt from the inverse kinematics solution, we find this in practice to be a reasonable approximation when creating an initial guess for the skeleton’s root trajectory. We can then construct a new linear map that relates the initial conditions of the root segment to the trajectory, , which includes both the pelvis coordinate rotations, , and center of mass positions, : (14)

The vector ξ contains the initial conditions of the center of mass trajectory and the initial pelvis rotational coordinate values, θ1 and speeds, : (15)

The initial values of z1 and are chosen based on our previous solution to the center of mass trajectory fitting problem. Note that unlike in the previous linear fitting problem, we now hold the skeleton mass fixed, so no inverse mass term appears in ξ, and what used to be the third columnar block in A in Eq 13 is now instead part of the constant term and appears in . See S1 Appendix for details on how is constructed. As before, we construct to map the initial conditions ξ onto the trajectory Ξ: (16)

Note that the upper left and lower right quadrants of are identical to the block matrices we constructed in A, since we use the same semi-explicit integration scheme for both zt and θt as defined in Eq (12). The center of mass trajectory zt does not depend on θ1 or , so the upper right quadrant contains all zeros.

To compute the terms and in the lower left quadrant of , we first note that the center of pressure locations are fixed based on the ground reaction force data. Therefore, if we change the location of the center of mass by some finite value Δzt, the moment applied by the ground reaction force about the pelvis changes by Δτt = Δzt × ft. This means that the acceleration of the pelvis rotational coordinates changes by , where Mt is the generalized mass matrix for our skeleton in configuration qt found by the inverse kinematics and scaling steps. This can be rewritten as a linear expression between Δzt and using the skew-symmetric matrix [ft]: (17) where is a constant matrix in .

Note that Eq (17) is true for the initial time step even without our simplifying approximations (that changing θt does not effect mass matrix Mt or Coriolis forces). These approximations are only necessary when we begin to integrate this expression forward in time, since changes in θt will change the mass matrix, Mt, and the linear offsets from the equations of motion (e.g., the Coriolis forces) contained in , which would render the problem non-linear.

We can now compute and by multiplying together known terms based on the chain rule: (18) (19) Where the partials are given by: (20)

In Eq (19), the first two terms are the same as Eq (18), and the third term is the change in center of mass position due to the change in . Both and can be obtained directly from A.

The vector includes terms for the time integration of gravitational acceleration, the acceleration due to the applied ground reaction forces, and the Coriolis terms of the equations of motion of the skeleton. In general, the Coriolis terms depend on θt, but based on our simplifying assumption to keep the problem linear, we simply use the initial guess for θt to compute the terms in . Refer to S1 Appendix for more details on the construction of .

We can then find a least-squares best fit for the unknown initial conditions, , given the observed trajectories of the center of mass position and pelvis rotation coordinates, , using the pseudo-inverse of : (21)

We use the solution to reconstruct a physically-consistent trajectory for the pelvis coordinate rotations and center of mass positions, . To make the problem linear, we have assumed that our solution for the pelvis coordinate rotations, Θ, does not change the mass matrix or Coriolis terms, but since this is not true in general, the solution to Eq (21) will change the terms in and . Therefore, to find a satisfactory initial guess for the skeleton’s root trajectory, we form and solve the system defined by and iteratively until Ξ converges. In practice, we find that convergence typically takes less than 30 iterations with each iteration taking less than a second on a low-end server.

Once the solution has met our convergence criteria, we have found a trajectory for the center of mass translation and the pelvis coordinate rotations that is physically consistent with the measured ground reaction force data. Finally, we include additional terms to account for errors in force plate locations and orientations and to eliminate drift in very long trials; the details of these terms can be found in S1 Appendix.

Final optimization to tune marker fitting results and minimize residual loads

After fitting the center of mass trajectory and pelvis coordinate rotations to achieve physical consistency with the ground reaction force data, we run a final optimization to tune skeleton segment masses, marker offsets, segment scale factors, and joint coordinates to minimize the residual forces at the pelvis, , while still retaining a good kinematic fit to the marker data. We achieve this by taking the marker fitting problem described in Eq (2) and adding the segment masses to the decision variables and a loss term to penalize the residual forces: (22)

We optimize this problem in the same way as the marker fitting problem, where we minimize the negative log of the objective in Eq (22). Note that we do not use a bilevel problem formulation here, since we now allow the solution to deviate slightly from a valid inverse kinematics solution in order to achieve dynamic consistency. Therefore, we no longer explicitly constrain that the gradient of the inverse kinematics loss term with respect to the joint coordinates be zero.

Open source implementation

To facilitate adoption, we provide the algorithm as an open-source, cloud-based tool that allows researchers to automate scaling, marker registration, inverse kinematics, residual reduction, and inverse dynamics for their motion capture data without downloading or installing any software, available at AddBiomechanics.org. Users can drag and drop files for automated processing, and then visualize on the web or download results for analysis in OpenSim (Fig 2). C3D or TRC marker files are supported, and C3D or MOT files for ground reaction forces. The cloud tool also allows researchers to automatically generate comparisons of their own hand-scaled data versus the output of the automated system.

thumbnail
Fig 2. The web interface for AddBiomechanics.

The web interface allows users to drag and drop data files for individual experimental trials and the subject data is processed automatically in the cloud.

https://doi.org/10.1371/journal.pone.0295152.g002

Evaluation

To evaluate our algorithm, we first compared AddBiomechanics to expert-computed values for a dataset published by Hamner et al. (2013) with ten subjects running at 2.0, 3.0, 4.0, and 5.0 m s-1 [62] (40 total trials), as well as a multi-activity dataset [49] that included sit-to-stand, squatting, jumping, and walking motions (104 total trials). We compared root mean squared errors between experimental and model markers and computed residual forces and moments for both the expert- and AddBiomechanics-determined values. We also qualitatively compared joint angles and joint torques. We used the model, marker set, and raw experimental data (markers and ground reaction forces) from the original study as inputs to AddBiomechanics and compared to the published results computed by the study investigators.

Quantitative comparison of the solved joint angles and moments with ground truth values is another critical test of our method. However, ground truth joint angles and moments cannot be directly measured from experiments. We thus used a three-dimensional dynamic simulation of walking created using trajectory optimization [63], where joint angles and moments are known and residual forces and moments are also known to be zero, to generate a synthetic dataset. We used synthesized marker trajectories, along with the computed ground reaction forces and centers of pressure from the simulation, as inputs to AddBiomechanics. Additional inputs included the original generic, unscaled model and an unregistered version of the appropriate marker set. We then used AddBiomechanics to optimize and compared the recovered motion to the known joint angles and moments.

Results

Human expert versus automated processing: Running dataset

The average marker RMSE achieved by AddBiomechanics for the running dataset was 1.5 cm, which is significantly smaller than the 4.3 cm marker RMSE (p < 0.005, paired t-test) in the originally published results from [62] obtained after using OpenSim’s Residual Reduction Algorithm (Fig 3, left) to modify the running kinematics to reduce residual loads. In addition, the maximum marker error produced by AddBiomechanics (3.8 cm) was smaller than the maximum marker error in the expert-processed results (7.5 cm). AddBiomechanics produced a small but significant reduction in average RMS residual force magnitude (p < 0.05, paired t-test) compared to the original study (Fig 3, right). In addition, AddBiomechanics was able to significantly reduce residual torque magnitudes (p < 0.005, paired t-test) such that they were below the threshold recommended by Hicks et al. [34], which was not achieved in the original study. Finally, the lower-limb joint angle and joint torque trajectories from the automated approach were qualitatively similar to the trajectories from the original study (Fig 4). AddBiomechanics produced similar results in both the stance and flight phases of running across all subjects.

thumbnail
Fig 3. Human expert versus automated processing: Running dataset.

The root-mean-square marker errors (left) and residual forces and torques (right) from the original published study from Hamner et al. [62] (gray) compared to the results obtained using AddBiomechanics (blue). The results from Hamner et al. [62] were obtained using OpenSim’s scaling, inverse kinematics, and inverse dynamics tools, and residual loads were minimized using OpenSim’s Residual Reduction Algorithm (RRA). The residual forces are normalized to a percent of the peak ground reaction force, and the residual torques are normalized to a percent of the peak ground reaction force times the average center of mass height. The solid bars show the average per-trial RMS error, averaged over the 10 subjects in the evaluation. The error bars show the standard deviation of RMSE across the subjects. The dashed horizontal lines represent residual force and torque magnitude thresholds recommended by Hicks et al. [34]. Asterisks indicate statistical differences based on pairwise t-tests.

https://doi.org/10.1371/journal.pone.0295152.g003

thumbnail
Fig 4. Running data: Joint angles and torques.

Joint angles (left) and joint torques (right) from the original published study from Hamner et al. [62] (gray) compared to the results obtained using AddBiomechanics (blue) for the 2.0 and 5.0 m s-1 running trials. The solid lines represent joint angles and torques averaged over the 10 subjects in the evaluation; the shaded bands represent the standard deviation across subjects.

https://doi.org/10.1371/journal.pone.0295152.g004

The manual data processing by the expert in the original publication was labor intensive: each participant took several days for the expert to create a dynamically-consistent scaled model and compute joint angles and torques. Average computation time for a participant processed with AddBiomechanics was less than 30 minutes on a desktop machine, with 3–5 minutes spent on scaling and inverse kinematics, and the remainder on dynamic consistency.

Human expert versus automatic processing: Multi-activity dataset

AddBiomechanics produced similar marker errors (RMS: 1.6 cm, max: 3.9 cm) when processing the multi-activity dataset compared to manual processing by experts (RMS: 1.7 cm, max: 3.7 cm; Fig 5, left). The original study published by Uhlrich et al. [49] did not perform a residual reduction step before computing joint moments. However, AddBiomechanics automatically produced an inverse dynamics solution that met the recommendations of Hicks et al. [34] (Fig 5, right) and significantly reduced both residual forces and moments (p < 0.005, paired t-test). In addition, the lower-limb joint angle and joint torque trajectories from the automated approach were qualitatively similar to the trajectories from the original study (Fig 6).

thumbnail
Fig 5. Human expert versus automatic processing: Multi-activity dataset.

The root-mean-square marker errors (left) and residual forces and torques (right) from the original published study from Uhlrich et al. [49] (gray) compared to the results obtained using AddBiomechanics (blue). The results from Uhlrich et al. [49] were obtained using OpenSim’s scaling, inverse kinematics, and inverse dynamics tools, but no residual reduction step was performed. The residual forces are normalized to a percent of the peak ground reaction force, and the residual torques are normalized to a percent of the peak ground reaction force times the average center of mass height. The solid bars show the average of per-trial RMS error, averaged over the 10 subjects in the evaluation. The error bars show the standard deviation of RMSE across the subjects. The dashed horizontal lines represent residual force and torque magnitude thresholds recommended by Hicks et al. [34]. Asterisks indicate statistical differences based on pairwise t-tests.

https://doi.org/10.1371/journal.pone.0295152.g005

thumbnail
Fig 6. Multi-activty data: Joint angles and torques.

Joint angles (left) and joint torques (right) from the original published study from Uhlrich et al. [49] (gray) compared to the results obtained using AddBiomechanics (blue) for drop jump and squatting activities. The solid lines represent joint angles and torques averaged over the 10 subjects in the evaluation; the shaded bands represent the standard deviation across subjects.

https://doi.org/10.1371/journal.pone.0295152.g006

Manual expert scaling for the multi-activity dataset was also labor intensive, taking roughly one working day per subject, not including additional time to perform inverse kinematics and inverse dynamics for each of the movement trials. AddBiomechanics required less than one hour on a desktop machine to automatically perform scaling, inverse kinematics, and inverse dynamics for each subject with no input from the user. Scaling and inverse kinematics was completed in under 10 minutes, with the remaining time being consumed by dynamics processing.

Synthetic walking data results

We found that AddBiomechanics was able to recover the ground truth joint angles and joint torques from the synthetic walking marker data to an average of 1.6 deg RMSE and 0.15% body weight times height (computed over all joints in a trial together). The marker errors and residual loads achieved by AddBiomechanics for the synthetic data were small (0.63 cm and 0.01% normalized load, respectively; Table 1).

Discussion

Our bilevel optimization algorithm to find body segment scales, marker offsets, and joint angle and torque trajectories found dynamically-consistent trajectories for the multi-activity dataset while achieving marker reconstruction errors similar to the originally published expert-processed data. In addition, AddBiomechanics was able to automatically reproduce lower-limb joint angles and torques from the running dataset while achieving similar residual loads and significantly reducing marker error. Finally, AddBiomechanics reproduced the joint angles and torques from the synthetic walking dataset with high accuracy while achieving very low marker error and residual forces. The sequential approach we used to create initial guesses for solving the model scaling, inverse kinematics, and inverse dynamics optimizations problems made our method fast and robust, requiring no expert intervention.

In addition to being computationally efficient, our method improves upon previous automated model optimization methods. For comparison, the method in [24] assumed that all the body segment scalings were known to the algorithm and only attempted to find the marker offsets and the joint angles, and resulted in 1.21 degree joint angle RMSE. Our method must also recover segment scaling information from the data but achieves similar results: processing the synthetic walking data led to a joint angle RMSE of 1.6 degrees. The marker error results from our approach are also consistent with previous automated scaling approaches, which all outperform human experts when fitting a model to the same data [24, 43, 44, 6466]. However, previous approaches required large amounts of compute time, were limited to one specific skeleton, or only addressed part of the body segment scaling and marker registration problem. In addition, our method found inverse dynamics solutions with normalized residual forces and torques similar to the results from the automated RRA optimization algorithm proposed by Sturdy et al. [25]. Our approach found scaling, inverse kinematics, and inverse dynamics solutions for multiple trials in less than 30 minutes, whereas the approach by Sturdy et al. [25] can take up to two hours to find dynamics for a single trial, and requires scaling be known in advance.

Our optimization approach has some limitations that should be considered when processing experimental movement data with AddBiomechanics. First, there is some fundamental ambiguity in reconstructing the full kinematic and anthropometric information (body segment scales, marker offset registrations, and body positions) from only marker location data. For example, the pelvis can be tilted slightly forward, with the markers at the front of the pelvis shifted upward, and if the angles of the hips and spine are appropriately adjusted then the markers will still closely match the target data. If this effect is observed in practice, AddBiomechanics users can leverage the fact that the optimizer will prioritize solutions that move the anatomical markers as little as possible, and adjust the marker starting locations on the bones to more closely match the experimental placement. Second, the optimizer applies a statistical prior to body segment scales to bring them more in-line with population statistics as represented by the ANSUR II anthropometric dataset [55]. If the optimizer can find a way to fit the marker data with a skeleton that is more likely to exist in the ANSUR II population (such as by tilting the pelvis forward 2 degrees), it will choose that one, even if the “true” underlying skeleton was slightly different. The data in ANSUR II is large and detailed, but was collected from active-duty military personnel, and so is not reflective of many patient populations. A broader anthropometric dataset could help address this limitation. Finally, AddBiomechanics may not always find an inverse dynamics solution with sufficiently low residual forces and torques due to inconsistencies between the marker and ground reaction force data that cannot be accounted for with a rigid body model.

By creating and sharing this tool, we aim to make quantitative biomechanics results more accessible, including to clinicians and researchers who do not possess the technical expertise or time traditionally required to achieve high-quality results. Our method goes from labeled marker trajectories to a scaled, registered, and physically-consistent musculoskeletal model and corresponding human motion in less than 30 minutes on a low-end server. We also provide a web version at AddBiomechanics.org which features a drag-and-drop interface to automatically process human movement data in the cloud. In exchange for sharing the resulting anonymized motion data with the scientific community under a creative commons license, we make AddBiomechanics freely available for researchers. As of this writing, over 300 researchers have used the prototype tool to process and share more than 14,000 motion files from almost 1,200 experimental subjects. We hope AddBiomechanics will increase the quality, consistency, and availability of biomechanical data analyses and lead to the creation of a large-scale public dataset of accurately modeled human motion biomechanics.

Acknowledgments

Special thanks to Carmichael Ong, who lent us his OpenSim expertise and helped create several skeletons and markersets for AddBiomechanics, and Reed Gurchiek for early feedback on the tool.

References

  1. 1. Fregly BJ, Besier TF, Lloyd DG, Delp SL, Banks SA, Pandy MG, et al. Grand challenge competition to predict in vivo knee loads. Journal of Orthopaedic Research. 2012;30(4):503–513. pmid:22161745
  2. 2. Lloyd DG, Besier TF. An EMG-driven musculoskeletal model to estimate muscle forces and knee joint moments in vivo. Journal of Biomechanics. 2003;36(6):765–776. pmid:12742444
  3. 3. Besier TF, Lloyd DG, Ackland TR, Cochrane JL. Anticipatory effects on knee joint loading during running and cutting maneuvers. Medicine and Science in Sports and Exercise. 2001;33(7):1176–1181. pmid:11445765
  4. 4. Johnson WR, Mian A, Lloyd DG, Alderson JA. On-field player workload exposure and knee injury risk monitoring via deep learning. Journal of Biomechanics. 2019;93:185–193. pmid:31307769
  5. 5. Lenton GK, Doyle TL, Lloyd DG, Pizzolato C, Saxby DJ. Hip joint contact forces increase in response to greater body-borne loads and faster walking speeds. In: XXVII Congress of the International Society of Biomechanics; 2019.
  6. 6. Zhao D, Banks SA, Mitchell KH, D’Lima DD, Colwell CW Jr, Fregly BJ. Correlation between the knee adduction torque and medial contact force for a variety of gait patterns. Journal of Orthopaedic Research. 2007;25(6):789–797. pmid:17343285
  7. 7. Walter JP, D’Lima DD, Colwell CW Jr, Fregly BJ. Decreased knee adduction moment does not guarantee decreased medial contact force during gait. Journal of Orthopaedic Research. 2010;28(10):1348–1354. pmid:20839320
  8. 8. Shull PB, Shultz R, Silder A, Dragoo JL, Besier TF, Cutkosky MR, et al. Toe-in gait reduces the first peak knee adduction moment in patients with medial compartment knee osteoarthritis. Journal of Biomechanics. 2013;46(1):122–128. pmid:23146322
  9. 9. Lerner ZF, DeMers MS, Delp SL, Browning RC. How tibiofemoral alignment and contact locations affect predictions of medial and lateral tibiofemoral contact forces. Journal of Biomechanics. 2015;48(4):644–650. pmid:25595425
  10. 10. Sartori M, Fernandez J, Modenese L, Carty C, Barber L, Oberhofer K, et al. Toward modeling locomotion using electromyography-informed 3D models: application to cerebral palsy. Wiley Interdisciplinary Reviews: Systems Biology and Medicine. 2017;9(2):e1368. pmid:28002649
  11. 11. Hicks JL, Delp SL, Schwartz MH. Can biomechanical variables predict improvement in crouch gait? Gait & Posture. 2011;34(2):197–201. pmid:21616666
  12. 12. Bregman D, Van der Krogt M, De Groot V, Harlaar J, Wisse M, Collins S. The effect of ankle foot orthosis stiffness on the energy cost of walking: a simulation study. Clinical Biomechanics. 2011;26(9):955–961. pmid:21723012
  13. 13. Uchida TK, Seth A, Pouya S, Dembia CL, Hicks JL, Delp SL. Simulating ideal assistive devices to reduce the metabolic cost of running. PLOS One. 2016;11(9):e0163417. pmid:27656901
  14. 14. Dembia CL, Silder A, Uchida TK, Hicks JL, Delp SL. Simulating ideal assistive devices to reduce the metabolic cost of walking with heavy loads. PLOS One. 2017;12(7):e0180320. pmid:28700630
  15. 15. Arones MM, Font-Llagunes JM, Fregly BJ. Exoskeleton design using subject-specific synergy-driven neuromusculoskeletal models. In: International Conference on NeuroRehabilitation. Springer; 2020. p. 145–149.
  16. 16. Rodriguez KL, Roemmich RT, Cam B, Fregly BJ, Hass CJ. Persons with Parkinson’s disease exhibit decreased neuromuscular complexity during gait. Clinical Neurophysiology. 2013;124(7):1390–1397. pmid:23474055
  17. 17. Roemmich RT, Fregly BJ, Hass CJ. Neuromuscular complexity during gait is not responsive to medication in persons with Parkinson’s disease. Annals of Biomedical Engineering. 2014;42(9):1901–1912. pmid:24866571
  18. 18. Loper M, Mahmood N, Romero J, Pons-Moll G, Black MJ. SMPL: A skinned multi-person linear model. ACM Transactions on Graphics (TOG). 2015;34(6):1–16.
  19. 19. Mahmood N, Ghorbani N, Troje NF, Pons-Moll G, Black MJ. AMASS: Archive of motion capture as surface shapes. In: Proceedings of the IEEE/CVF international conference on computer vision; 2019. p. 5442–5451.
  20. 20. Wang JM, Hamner SR, Delp SL, Koltun V. Optimizing Locomotion Controllers Using Biologically-Based Actuators and Objectives. ACM Trans Graph. 2012;31(4). pmid:26251560
  21. 21. Wade L, Needham L, McGuigan P, Bilzon J. Applications and limitations of current markerless motion capture methods for clinical gait biomechanics. PeerJ. 2022;10:e12995. pmid:35237469
  22. 22. Topley M, Richards JG. A comparison of currently available optoelectronic motion capture systems. Journal of Biomechanics. 2020;106:109820. pmid:32517978
  23. 23. Bakke D, Besier T. Shape model constrained scaling improves repeatability of gait data. Journal of Biomechanics. 2020;107:109838. pmid:32517858
  24. 24. Dunne JJ, Uchida TK, Besier TF, Delp SL, Seth A. A marker registration method to improve joint angles computed by constrained inverse kinematics. PLOS One. 2021;16(5):e0252425. pmid:34048476
  25. 25. Sturdy JT, Silverman AK, Pickle NT. Automated optimization of residual reduction algorithm parameters in OpenSim. Journal of Biomechanics. 2022;137:111087. pmid:35460934
  26. 26. Bell AL, Pedersen DR, Brand RA. A comparison of the accuracy of several hip center location prediction methods. Journal of Biomechanics. 1990;23(6):617–621. pmid:2341423
  27. 27. Churchill DL, Incavo SJ, Johnson CC, Beynnon BD. The transepicondylar axis approximates the optimal flexion axis of the knee. Clinical Orthopaedics and Related Research®. 1998;356:111–118. pmid:9917674
  28. 28. Inman V. The joints of the ankle. Williams & Wilkins; 1976.
  29. 29. Kirkwood RN, Culham EG, Costigan P. Radiographic and non-invasive determination of the hip joint center location: effect on hip joint moments. Clinical Biomechanics. 1999;14(4):227–235. pmid:10619110
  30. 30. Vaughan CL, Davis BL, O’Connor JC. Dynamics of human gait. Human Kinetics; 1992.
  31. 31. Leardini A, Cappozzo A, Catani F, Toksvig-Larsen S, Petitto A, Sforza V, et al. Validation of a functional method for the estimation of hip joint centre location. Journal of Biomechanics. 1999;32(1):99–103. pmid:10050957
  32. 32. Piazza SJ, Okita N, Cavanagh PR. Accuracy of the functional method of hip joint center location: effects of limited motion and varied implementation. Journal of Biomechanics. 2001;34(7):967–973. pmid:11410180
  33. 33. Besier TF, Sturnieks DL, Alderson JA, Lloyd DG. Repeatability of gait data using a functional hip joint centre and a mean helical knee axis. Journal of Biomechanics. 2003;36(8):1159–1168. pmid:12831742
  34. 34. Hicks JL, Uchida TK, Seth A, Rajagopal A, Delp SL. Is my model good enough? Best practices for verification and validation of musculoskeletal models and simulations of movement. Journal of Biomechanical Engineering. 2015;137(2). pmid:25474098
  35. 35. Kadaba M, Ramakrishnan H, Wootten M, Gainey J, Gorton G, Cochran G. Repeatability of kinematic, kinetic, and electromyographic data in normal adult gait. Journal of Orthopaedic Research. 1989;7(6):849–860. pmid:2795325
  36. 36. Grood ES, Suntay WJ. A joint coordinate system for the clinical description of three-dimensional motions: application to the knee. Journal of Biomechanical Engineering. 1983;105(2):136–144. pmid:6865355
  37. 37. Lu TW, O’connor J. Bone position estimation from skin marker co-ordinates using global optimisation with joint constraints. Journal of Biomechanics. 1999;32(2):129–134. pmid:10052917
  38. 38. Leardini A, Chiari L, Della Croce U, Cappozzo A. Human movement analysis using stereophotogrammetry: Part 3. Soft tissue artifact assessment and compensation. Gait & Posture. 2005;21(2):212–225. pmid:15639400
  39. 39. Kainz H, Modenese L, Lloyd D, Maine S, Walsh H, Carty C. Joint kinematic calculation based on clinical direct kinematic versus inverse kinematic gait models. Journal of Biomechanics. 2016;49(9):1658–1669. pmid:27139005
  40. 40. Seth A, Matias R, Veloso AP, Delp SL. A biomechanical model of the scapulothoracic joint to accurately capture scapular kinematics during shoulder movements. PLOS One. 2016;11(1):e0141028. pmid:26734761
  41. 41. Delp SL, Anderson FC, Arnold AS, Loan P, Habib A, John CT, et al. OpenSim: open-source software to create and analyze dynamic simulations of movement. IEEE Transactions on Biomedical Engineering. 2007;54(11):1940–1950. pmid:18018689
  42. 42. Damsgaard M, Rasmussen J, Christensen ST, Surma E, De Zee M. Analysis of musculoskeletal systems in the AnyBody Modeling System. Simulation Modelling Practice and Theory. 2006;14(8):1100–1111.
  43. 43. Reinbolt JA, Schutte JF, Fregly BJ, Koh BI, Haftka RT, George AD, et al. Determination of patient-specific multi-joint kinematic models through two-level optimization. Journal of Biomechanics. 2005;38(3):621–626. pmid:15652563
  44. 44. Charlton IW, Tate P, Smyth P, Roren L. Repeatability of an optimised lower body model. Gait & Posture. 2004;20(2):213–221. pmid:15336293
  45. 45. Boyd S, Boyd SP, Vandenberghe L. Convex optimization. Cambridge University Press; 2004.
  46. 46. Andersen MS, Damsgaard M, MacWilliams B. A computationally efficient optimisation-based method for parameter identification of kinematically determinate and over-determinate biomechanical systems. Computer Methods in Biomechanics and Biomedical Engineering. 2010;13(2):171–183. pmid:19693717
  47. 47. Kanko RM, Laende EK, Davis EM, Selbie WS, Deluzio KJ. Concurrent assessment of gait kinematics using marker-based and markerless motion capture. Journal of Biomechanics. 2021;127:110665. pmid:34380101
  48. 48. Pagnon D, Domalain M, Reveret L. Pose2Sim: An open-source Python package for multiview markerless kinematics. Journal of Open Source Software. 2022.
  49. 49. Uhlrich SD, Falisse A, Kidziński Ł, Muccini J, Ko M, Chaudhari AS, et al. OpenCap: 3D human movement dynamics from smartphone videos. bioRxiv. 2022.
  50. 50. Seth A, Hicks JL, Uchida TK, Habib A, Dembia CL, Dunne JJ, et al. OpenSim: Simulating musculoskeletal dynamics and neuromuscular control to study human and animal movement. PLOS Computational Biology. 2018;14(7):e1006223. pmid:30048444
  51. 51. Todorov E, Erez T, Tassa Y. Mujoco: A physics engine for model-based control. In: 2012 IEEE/RSJ international conference on intelligent robots and systems. IEEE; 2012. p. 5026–5033.
  52. 52. Coumans E. Bullet Physics 3; 2012. https://github.com/bulletphysics/bullet3.
  53. 53. Rajagopal A, Dembia CL, DeMers MS, Delp DD, Hicks JL, Delp SL. Full-body musculoskeletal model for muscle-driven simulation of human gait. IEEE Transactions on Biomedical Engineering. 2016;63(10):2068–2079. pmid:27392337
  54. 54. Lai AK, Arnold AS, Wakeling JM. Why are antagonist muscles co-activated in my simulation? A musculoskeletal model for analysing human locomotor tasks. Annals of Biomedical Engineering. 2017;45(12):2762–2774. pmid:28900782
  55. 55. Paquette S. Anthropometric survey (ANSUR) II pilot study: methods and summary statistics. Anthrotch, US Army Natick Soldier Research, Development and Engineering Center; 2009.
  56. 56. Biegler LT. Nonlinear programming: concepts, algorithms, and applications to chemical processes. SIAM; 2010.
  57. 57. Chang LY, Pollard NS. Constrained least-squares optimization for robust estimation of center of rotation. Journal of biomechanics. 2007;40(6):1392–1400. pmid:16824530
  58. 58. Kucuk S, Bingul Z. Robot kinematics: Forward and inverse kinematics. INTECH Open Access Publisher; 2006.
  59. 59. Aristidou A, Lasenby J. FABRIK: A fast, iterative solver for the Inverse Kinematics problem. Graphical Models. 2011;73(5):243–260.
  60. 60. Kulpa R, Multon F. Fast inverse kinematics and kinetics solver for human-like figures. In: 5th IEEE-RAS International Conference on Humanoid Robots, 2005. IEEE; 2005. p. 38–43.
  61. 61. Schwartz MH, Rozumalski A. A new method for estimating joint parameters from motion data. Journal of Biomechanics. 2005;38(1):107–116. pmid:15519345
  62. 62. Hamner SR, Delp SL. Muscle contributions to fore-aft and vertical body mass center accelerations over a range of running speeds. Journal of Biomechanics. 2013;46(4):780–787. pmid:23246045
  63. 63. Bianco NA, Collins SH, Liu K, Delp SL. Simulating the effect of ankle plantarflexion and inversion-eversion exoskeleton torques on center of mass kinematics during walking. bioRxiv. 2022.
  64. 64. Fregly BJ, Reinbolt JA, Rooney KL, Mitchell KH, Chmielewski TL. Design of patient-specific gait modifications for knee osteoarthritis rehabilitation. IEEE Transactions on Biomedical Engineering. 2007;54(9):1687–1695. pmid:17867361
  65. 65. Reinbolt JA, Haftka RT, Chmielewski TL, Fregly BJ. A computational framework to predict post-treatment outcome for gait-related disorders. Medical Engineering & Physics. 2008;30(4):434–443. pmid:17616425
  66. 66. McGinley JL, Baker R, Wolfe R, Morris ME. The reliability of three-dimensional kinematic gait measurements: a systematic review. Gait & Posture. 2009;29(3):360–369. pmid:19013070