# Human Center of Mass Control

## Overview

Here we go over a controller to model task-level feedback of CoM variables for standing postural balance that predicts whole body dynamic responses to support surface translations. This type of control solves the issues of the redundancy in configuration and indeterminacy of ground contact forces while still allowing variability in joint motion and also maintaining the center-of-mass above the base-of-support.

## Theory

We define the equations of motion with q as the state vector of generalized coordinates, $\mathsf{M}$ as the inertia matrix, $\mathsf{V}$ as coriolis and centripetal terms, $\mathsf{G}$ as gravitational terms, $\mathbf{T}$ as joint torque, $\mathsf{J_c}$ as the constraint jacobian, $\mathbf{F_c}$ as the generalized constraint force, and $\mathbf{\ddot{x}}$ as the constraint acceleration. For simplicity in writing the equations time and state dependence are removed.

\begin{align} \mathsf{M} \ddot{\mathbf{q}} = \mathsf{V} + \mathsf{G} + \mathbf{T} +\mathsf{J}_{c}^T \mathbf{F}_{c} \\ \mathsf{J}_{c} \ddot{\mathbf{q}} + \dot{\mathsf{J}_{c}} \dot{\mathbf{q}} = \ddot{\mathbf{x}} \end{align}

We then define the control as a virtual spring and damper ($\mathsf{K}$) applied to the center of mass such that the external forces exactly balance this virtual load. For this model, where the feet are pinned, we can use the constraint forces as a proxy for the ground-reactions, which are therefore defined by the forces due to gravity and the virtual load, where $\mathsf{L}$ is the generalized momentum.

\begin{align} \mathsf{L} \mathsf{M}^{-1} \mathsf{J}_{c}^T \mathbf{F}_{c} =-\mathsf{K} \left( \mathbf{x}_{com} - \mathbf{x}_{com_0} \right) - \mathsf{L} \mathsf{M}^{-1} \mathsf{G} \end{align}

Unique joint torques were achieved by solving a quadratic program that minimized the acceleration of the actuated joints.

\begin{align} \min \frac{1}{2} \ddot{\mathbf{q}}^T\ddot{\mathbf{q}}\;\:\;&s.t.\\ \mathsf{M} \ddot{\mathbf{q}} =& \mathsf{V} + \mathsf{G} + \mathbf{T} +\mathsf{J}_{c}^T \mathbf{F}_{c} \\ \mathsf{J}_{c} \ddot{\mathbf{q}} =& \ddot{\mathbf{x}} - \dot{\mathsf{J}_{c}} \dot{\mathbf{q}}\\ \mathsf{L} \mathsf{M}^{-1} \mathsf{J}_{c}^T \mathbf{f}_{c} =& -\mathsf{K} \left( \mathbf{x}_{com} - \mathbf{x}_{com_0} \right) \end{align}

## Model

Response at wide stance. You may need to reload your browser to see the animation.

A human model (75 kg, 1.8 m) consisting of 22 rigid body segments and 26 mechanical degrees-of-freedom was constructed based on the OpenSim Gait 2354 Model (http://opensim.stanford.edu/) using the Neuromechanic software. Actuation of the model was applied to 20 physiologically defined revolute joints of the shoulder (3), elbow (2), hip (3), knee (1) and ankle (2) describing the articulation of the skeleton. All degrees-of-freedom of the forefoot segments were locked and constrained to follow an acceleration profile that caused translation of the model in the frontal plane.

Simulations of the model to match experimental conditions were run at three separate stance widths of inter-malleoli distances of 10, 20 and 30 cm while a translational acceleration directed in the frontal plane was applied. The acceleration profile consisted of two gaussian pulses with opposite signs, spaced 1.59 s apart, magnitudes of 1.96 m/s/s and half-widths of 35 ms, which simulated a 24 cm ramp-and-hold translation with a peak velocity of 15 m/s.