The Zero-Torque Counterfactual
What does this exact model compute when one declared generalized-torque channel is set to zero? The answer is conditional on the intervention record.
—A thought experiment in constraint physics
The model assigns terms to a declared autonomous plant and to declared input channels. That bookkeeping does not identify individual muscle forces or divide a real swing into physiology versus physics.
A common assumption is that muscular effort maps directly to motion. The forward ZTCF trajectory provides a narrower, model-based test: it quantifies the motion generated by the declared effective plant after the modeled generalized-control channel is set to zero.
The forward Zero-Torque Counterfactual (ZTCF) trajectory is a thought experiment that isolates the autonomous contribution of a declared effective plant. It asks: What trajectory follows from the current state when the model’s applied generalized-control channel is set to zero? This intervention does not imply zero muscle activation, zero co-contraction, or a flaccid body; passive impedance and other retained state-dependent effects remain in the plant.
A forward ZTCF is a model-conditioned intervention. Any comparison with an achieved or simulated reference branch needs a declared horizon, metric, uncertainty treatment, and interpretation boundary.
Normative ZTCF Contract
Every executable or quantitative record uses affinedrift.ztcf-intervention/v1; see the normative schema and Python golden fixture. The record freezes model/version/revision, inputs, state, units, frame, retained controls/constraints/contact/loads/internal states, solver/version, horizon, preconditions, postconditions, and failure states. It separates the simulated trajectory difference from any contribution measure, causal estimand, or physiological interpretation, and it records non-identifiability explicitly. Unavailable or engine-unsupported interventions fail closed; no MATLAB, Simulink, or cross-engine parity result is inherited from the Python fixture.
Formal Definition of the ZTCF
The concept of analyzing passive motion is foundational in biomechanics. By studying what a system does without active control, researchers can isolate and understand the contribution of passive forces (Nesbit 2005; MacKenzie and Sprigings 2009).
The forward Zero-Torque Counterfactual trajectory is \(\bm{q}_{\text{ZTCF}}(t)\) obtained by solving the declared effective-plant equations from the current state \((\bm{q}(t_0), \dot{\bm{q}}(t_0),\bm{z}(t_0))\) with the declared applied generalized control set to zero:
\[ \bm{M}(\bm{q})\ddot{\bm{q}} + \bm{h}(\bm{q},\dot{\bm{q}},\bm{z};\bm{p}) = \mathbf{0}, \qquad \bm{u}(t) \equiv \mathbf{0} \]
The retained term \(\bm{h}\) must be declared and may include Coriolis/centrifugal effects, gravity, passive joint impedance, shaft dynamics, damping, and modeled contact or constraint reactions. Exogenous loads and contact modes are held, removed, or recomputed only according to the stated protocol. Therefore, ZTCF means zero in one modeled control channel, not absence of every physiological or environmental force.
Understanding the ZTCF
Think of it as a software intervention rather than a physiological event. At a selected state, the simulator sets the declared applied generalized-control vector to zero while retaining the effective plant and the protocol-specified loads. It then evaluates either an instantaneous sample or a forward rollout.
The answer is the trajectory of the retained effective plant. Its forces are exactly those listed in the intervention record; they are not assumed to be purely gravitational, inertial, or biologically passive.
The rollout is a software branch, not a measured muscle state. It can report modeled state or task differences under its declared intervention. It cannot by itself allocate those differences to muscle activation, effort, strategy, or unmodeled forces.
Agreement with measured motion supports the adequacy of that model and intervention over the tested interval. It does not establish low EMG or relaxation. Divergence can reflect control input, parameter error, omitted forces, contact mismatch, or numerical error and must be tested against those alternatives.
The Decomposition: What the ZTCF Reveals
At a fixed state, the acceleration block admits the pointwise decomposition
\[ \bm{a}(\bm{x},\bm{u}) = \bm{a}_{\text{drift}}(\bm{x}) + \bm{B}_{a}(\bm{x})\bm{u} \]
where: - \(\bm{a}_{\text{drift}}\) is the acceleration induced by the declared autonomous effective plant. - \(\bm{B}_{a}\bm{u}\) is the acceleration induced by the declared applied generalized-control channel.
Calling a drift term a “ZTCF torque” is avoided because generalized force and acceleration are different representations. Any force-space decomposition must specify the mass matrix, Jacobian, projection, and constraint treatment used to construct it.
Net generalized torque, the modeled input term, individual muscle forces, activation, co-contraction, impedance, and effort are distinct quantities. A pointwise affine decomposition is exact within its declared model, but it does not identify the biological source of either term.
What This Analysis Can Support
A registered ZTCF can compare model branches, test implementation closure, and quantify a declared task difference. It cannot prescribe setup, timing, relaxation, or coaching cues. Human-performance conclusions require measured participants and an analysis that separates model discrepancy from the named intervention.
Computing the ZTCF: Algorithm and Simulation
Computing the ZTCF Trajectory
Given the current state \(\bm{x}(t_0) = (\bm{q}(t_0), \dot{\bm{q}}(t_0))\) at time \(t_0\):
Capture the state: Record the joint angles and angular velocities at the moment of interest (e.g., at mid-downswing).
Set up the passive equations:
\[ \ddot{\bm{q}} = \bm{M}(\bm{q})^{-1} \left[ -\bm{C}(\bm{q}, \dot{\bm{q}})\dot{\bm{q}} - \bm{g}(\bm{q}) \right] \]
This equation gives the acceleration from the terms retained in this simplified declared model.
Integrate: Numerically integrate this ODE from \(t_0\) forward in time using a standard solver (e.g., RK4). The declared applied generalized-control channel is zero; the retained effective plant determines the branch.
Report the branch: Compare only under a declared metric and uncertainty model. Divergence is not uniquely attributable to active control.
Generic Branch-Switch Pattern
In practice, the ZTCF is computed in simulation by:
Register the forward-dynamics model and retained-force inventory.
Including a “kill switch” parameter, a binary flag \(k_u\) that multiplies the input torques:
\[ \bm{M}(\bm{q})\ddot{\bm{q}} + \bm{C}(\bm{q}, \dot{\bm{q}})\dot{\bm{q}} + \bm{g}(\bm{q}) = k_u \cdot \bm{B}(\bm{q}) \bm{u} \]
Running the model twice:
- With \(k_u = 1\): the actual (controlled) dynamics.
- With \(k_u = 0\): the ZTCF (uncontrolled) dynamics.
Both simulations start from the same registered state. Differences remain conditional on model identity, retained protocols, and numerical error.
The Python fixture is the only executable engine registered here. A Simulink switch is an illustrative architecture, not a supported or parity-validated implementation under this contract.
The Zero-Velocity Counterfactual (ZVCF)
The instantaneous Zero-Velocity Counterfactual (ZVCF) isolates the zero-velocity, zero-control acceleration at the current configuration and declared internal state. It is an evaluation, not a trajectory:
\[ \bm{a}_{\text{ZVCF}}(\bm{q},\bm{z};\bm{p}) =-\bm{M}(\bm{q})^{-1}\bm{h}(\bm{q},\mathbf{0},\bm{z}_0;\bm{p}), \qquad \bm{u}=\mathbf{0} \]
This equation contains only gravity (\(\bm{g}\)) and the inertial mass matrix. It excludes Coriolis/centrifugal terms, which depend on \(\dot{\bm{q}}\).
ZVCF vs. ZTCF: What’s the Difference?
The ZTCF sets the declared control channel to zero. A pointwise ZTCF sample retains the measured velocity; a forward or branched ZTCF trajectory then integrates the resulting autonomous dynamics.
The ZVCF evaluates one instantaneous acceleration with both velocity and declared control set to zero. It retains configuration-dependent loads and any protocol-specified internal state. It must not be described as freezing the system and then releasing it, because the subsequent state would immediately acquire nonzero velocity and cease to satisfy the defining intervention.
This is useful because it isolates a clean decomposition:
\[ \bm{a}_{\text{drift}}(\bm{q},\dot{\bm{q}},\bm{z}) = \bm{a}_{\text{ZVCF}}(\bm{q},\bm{z}) + \bm{a}_{\text{velocity}}(\bm{q},\dot{\bm{q}},\bm{z}) \]
This difference isolates velocity-dependent drift only when the two evaluations use the same parameters, internal state, load protocol, and contact mode. In a gravity-only rigid model ZVCF reduces to the gravity-induced acceleration; in a richer effective plant it can also contain configuration-dependent elasticity and other retained loads.
For a golfer, this distinction matters because gravity is always present (and predictable), while Coriolis effects depend on how fast you’re moving. A faster downswing creates stronger Coriolis whipping.
Double Pendulum ZTCF: A Worked Example
Example: ZTCF for a Two-Link Arm in Downswing Configuration
Consider a double pendulum (shoulder and elbow) with parameters: - Shoulder: length \(L_1 = 0.4\) m, mass \(m_1 = 2\) kg (upper arm), \(I_1 = 0.05\) kg\(\cdot\)m\(^2\) (about the shoulder). - Elbow: length \(L_2 = 0.3\) m, mass \(m_2 = 0.2\) kg (club), \(I_2 = 0.01\) kg\(\cdot\)m\(^2\) (about the elbow).
These values are an illustrative counterfactual setup used only in this worked example. They are intentionally different from Chapter 03’s canonical two-link baseline because this example trades physical realism for compact algebra and to isolate the passive-dynamics mechanism.
At a snapshot in the mid-downswing, the state is:
\[ \begin{aligned} q_1 &= 45° \quad \text{(shoulder angle, measured from horizontal)}\\ \dot{q}_1 &= 8 \text{ rad/s} \quad \text{(shoulder rotating forward)}\\ q_2 &= 70° \quad \text{(elbow extension angle)}\\ \dot{q}_2 &= 12 \text{ rad/s} \quad \text{(elbow extending)} \end{aligned} \]
Step 1: Compute the mass matrix and passive forces.
The mass matrix for a planar double pendulum is:
\[ \bm{M}(\bm{q}) = \begin{bmatrix} I_1 + m_1 (L_1/2)^2 + I_2 + m_2 L_1^2 + 2 m_2 L_1 (L_2/2) \cos(q_2) & I_2 + m_2 L_1 (L_2/2) \cos(q_2) \\ I_2 + m_2 L_1 (L_2/2) \cos(q_2) & I_2 + m_2 (L_2/2)^2 \end{bmatrix} \]
Substituting values:
\[ \bm{M} \approx \begin{bmatrix} 0.05 + 0.2 + 0.01 + 0.2 \times 0.16 + 2 \times 0.2 \times 0.4 \times 0.15 \times \cos(70°) & 0.01 + 0.2 \times 0.4 \times 0.15 \times \cos(70°) \\ 0.01 + 0.2 \times 0.4 \times 0.15 \times \cos(70°) & 0.01 + 0.2 \times 0.0225 \end{bmatrix} \]
Evaluating at \(\cos(70°) \approx 0.342\):
\[ \bm{M} \approx \begin{bmatrix} 0.71 & 0.014 \\ 0.014 & 0.016 \end{bmatrix} \]
Step 2: Compute Coriolis torques.
The Coriolis term is:
\[ C_1 = -m_2 L_1 (L_2/2) \sin(q_2) \dot{q}_1 \dot{q}_2 \]
Substituting:
\[ C_1 \approx -0.2 \times 0.4 \times 0.15 \times \sin(70°) \times 8 \times 12 \approx -0.2 \times 0.4 \times 0.15 \times 0.940 \times 96 \approx -1.09 \text{ Nm} \]
\[ C_2 = 0 \]
(no Coriolis on the second segment in this simple model).
Step 3: Compute gravity torques.
\[ \begin{aligned} g_1 &= m_1 g (L_1/2) \cos(q_1) + m_2 g L_1 \cos(q_1) + m_2 g (L_2/2) \cos(q_1 + q_2)\\ g_2 &= m_2 g (L_2/2) \cos(q_1 + q_2) \end{aligned} \]
At \(q_1 = 45°\) and \(q_1 + q_2 = 115°\):
\[ \begin{aligned} g_1 &\approx 2 \times 9.81 \times 0.2 \times 0.707 + 0.2 \times 9.81 \times 0.4 \times 0.707 + 0.2 \times 9.81 \times 0.15 \times (-0.906) \\ &\approx 2.78 - 0.27 \approx 2.51 \text{ Nm} \\ g_2 &\approx 0.2 \times 9.81 \times 0.15 \times (-0.906) \approx -0.27 \text{ Nm} \end{aligned} \]
Step 4: Solve for ZTCF acceleration.
With \(\bm{u} = \mathbf{0}\):
\[ \begin{aligned} \begin{bmatrix} \ddot{q}_1 \\ \ddot{q}_2 \end{bmatrix} &= \bm{M}^{-1} \begin{bmatrix} -1.09 - 2.51 \\ -0 - (-0.27) \end{bmatrix} = \bm{M}^{-1} \begin{bmatrix} -3.60 \\ 0.27 \end{bmatrix} \end{aligned} \]
Inverting the mass matrix:
\[ \bm{M}^{-1} \approx \begin{bmatrix} 1.45 & -1.27 \\ -1.27 & 64.1 \end{bmatrix} \]
Thus:
\[ \begin{aligned} \ddot{q}_1^{\text{ZTCF}} &\approx 1.45 \times (-3.60) - 1.27 \times 0.27 \approx -5.22 - 0.34 \approx -5.56 \text{ rad/s}^2 \\ \ddot{q}_2^{\text{ZTCF}} &\approx -1.27 \times (-3.60) + 64.1 \times 0.27 \approx 4.57 + 17.3 \approx 21.9 \text{ rad/s}^2 \end{aligned} \]
Interpretation:
The shoulder would decelerate at \(5.56\) rad/s\(^2\) (gravity is pulling the arm down). The elbow would accelerate at \(21.9\) rad/s\(^2\) (the club is extending under its own weight and Coriolis effects).
Now compare to the actual swing. If the actual \(\ddot{q}_1 = 2\) rad/s\(^2\) and \(\ddot{q}_2 = 8\) rad/s\(^2\), then:
\[ \begin{aligned} \tau_{\text{input},1} &\approx 0.71 \times (2 - (-5.56)) = 0.71 \times 7.56 \approx 5.37 \text{ Nm} \\ \tau_{\text{input},2} &\approx 0.016 \times (8 - 21.9) = 0.016 \times (-13.9) \approx -0.22 \text{ Nm} \end{aligned} \]
Insight: Under this coordinate convention and toy-model inventory, the applied generalized input is approximately \(5.37\) Nm at the shoulder and \(-0.22\) Nm at the elbow. These net generalized quantities do not identify a muscle, activation level, or biological strategy.
Why ZTCF Cannot Be Measured Directly
A crucial limitation: the ZTCF cannot be observed directly from experimental data. It requires a model of the passive dynamics.
In a real swing, you can measure: - Joint angles (via markers, IMUs, or motion capture). - Joint velocities and accelerations (by differentiating). - Muscle activation (via electromyography, EMG). - Reaction forces at the grip (via force plates or instrumented clubs).
But you cannot directly observe the trajectory generated by zeroing a modeled generalized-control channel. That trajectory is a model-conditioned counterfactual, not an observation of removed muscle activity.
To compute the ZTCF, you must: 1. Estimate the mass matrix \(\bm{M}(\bm{q})\) from body segment parameters (inertias, lengths, masses). 2. Estimate the Coriolis matrix \(\bm{C}(\bm{q}, \dot{\bm{q}})\) from the kinematics. 3. Estimate the gravity vector \(\bm{g}(\bm{q})\) from segment centers of mass and gravitational acceleration. 4. Solve the passive EOM with \(\bm{u} = \mathbf{0}\).
The usefulness of the ZTCF depends on the declared model, retained-load inventory, parameter estimates, solver, initial state, and horizon. A fixture can verify software replay; it cannot establish a unique “true” counterfactual for a person.
Why Model Errors Matter
Suppose your estimate of the club’s moment of inertia is off by 20%. This changes the retained inertial and velocity-dependent terms, so the computed ZTCF trajectory can change materially.
This is why researchers spend so much effort on accurate biomechanical parameter estimation. The ZTCF analysis is only as good as the model underneath.
However—and this is important—the ZTCF can still be qualitatively useful under parameter uncertainty when the sensitivity is reported. The defensible insight is not a universal DCR blow-up threshold; it is that velocity-dependent drift terms can rapidly reduce late correction authority in the specified model, so the conclusion should be checked against plausible parameter ranges.
Hypothesis: Late-Downswing Correction Under a Declared Model
For a specified plant, admissible-input set, metric, and horizon, a ZTCF comparison can motivate the hypothesis that the late-downswing state is strongly conditioned by an earlier state. ZTCF alone does not establish human control authority or coaching guidance.
Some velocity-dependent model terms are quadratic in generalized velocity, but that fact alone does not determine reachable corrections. Any claim about late corrective authority requires a declared admissible-control set, finite-horizon reachability calculation, constraints, and sensitivity study.
The governed comparison may report branch separation in a named output metric. It may not infer stiffness regulation, feedforward timing, muscular strategy, elite technique, or a reachable-set boundary without the additional models and measurements required for those claims.
Drift: A declared drift term can exceed the bounded instantaneous input effect in a stated norm at a specified state.
Control: That magnitude comparison is not a finite-horizon reachable set and does not identify muscle activation.
Implication: Any statement about feasible correction, human skill, or timing must be tested separately with declared controls, constraints, horizon, and measurement evidence.
Required analysis for an impact-time claim: Freeze the model/version and state estimate; define the face-angle output, admissible generalized inputs, contact mode, horizon, constraints, and solver tolerance; then compute a finite-horizon reachable set with uncertainty. Until that artifact is available, a numerical margin-to-correction or muscular-capacity claim is unavailable rather than inferred from DCR or ZTCF.
Summary and Preview
- What the ZTCF is: A model intervention that sets the declared applied generalized-control channel to zero and integrates the retained effective plant. It does not measure muscle activation or a biological “passive fraction.”
- The decomposition: The declared generalized equation separates drift from applied input effect. Neither term is automatically a passive fraction or muscular quantity.
- The ZVCF refinement: Further isolates gravity from velocity-dependent forces, revealing the role of initial momentum.
- DCR boundary: DCR is a declared instantaneous magnitude comparison; it does not establish finite-horizon reachability or a human control strategy.
- Double-pendulum example: Demonstrates model arithmetic for retained drift and a net generalized input, not muscle-force attribution.
- Model-dependence: ZTCF requires a biomechanical model; it cannot be measured directly. Qualitative conclusions should be reported with the DCR weighting, torque bound, parameter set, and sensitivity checks rather than asserted as model-independent facts.
- Unavailable inference: Late correction, skill, effort, and coaching claims require separate reachability, muscle, and measurement evidence.
What comes next: ZTCF records one declared model intervention. The next chapter studies constraint forces, which are distinct from both the drift/input bookkeeping and physiological attribution.
Chapter Exercises: The Zero-Torque Counterfactual
{Conceptual} Define a two-link model at the top of a simulated backswing. List which generalized-control channels are zeroed and which passive, contact, and constraint terms are retained. Predict the model trajectory, and list the physiological conclusions that the intervention cannot support.
(Hint: think about gravity and the Coriolis effect as the shoulder starts rotating forward.)
{Quantitative} For a single-segment arm (shoulder only, no elbow), estimate the ZVCF acceleration: - Arm length: \(0.7\) m (including club). - Arm mass: \(2\) kg (upper arm + club). - Moment of inertia about shoulder: \(0.08\) kg\(\cdot\)m\(^2\). - Current angle: \(45°\) from vertical (arm pointing down-forward).
What is the gravity-induced angular acceleration? How does this compare to a typical muscular torque of \(10\) Nm?
{Computational} Set up the double pendulum ZTCF from Section 1.7 in a numerical solver (Python with scipy, Matlab, etc.). 1. Start from the configuration given (\(q_1 = 45°\), \(\dot{q}_1 = 8\) rad/s, \(q_2 = 70°\), \(\dot{q}_2 = 12\) rad/s). 2. Integrate the ZTCF equations forward for 0.1 seconds. 3. Plot the ZTCF trajectory: \(q_1(t)\) and \(q_2(t)\). 4. Qualitatively describe the motion: does the shoulder continue rotating? Does the elbow extend further?
{Analysis} The Drift-Control Ratio (DCR) compares modeled drift with bounded modeled control under a stated weighting and torque bound. Choose plausible early- and late-downswing values for \(\bm{W}\) and \(u_{\max}\), declare the model parameters that matter most, then estimate how the DCR changes under at least two sensitivity perturbations.
Explain why these DCR values alone do not determine reachable corrections or the type, timing, or magnitude of muscular effort.
{Application} For three simulated downswing states, freeze a model/version, norm, admissible-input set, and parameters. Compute DCR and a short-horizon reachable set at each state. Compare what each diagnostic supports, and identify the EMG, musculoskeletal, and uncertainty evidence needed before making a physiological interpretation.