Theoretical Framework#

Pendulum test bench dynamics#

For a single-axis pendulum test bench:

\[\tau_m + \tau_e(\theta) + \tau_f = J\ddot{\theta}\]

where:

  • \(\theta\) is the joint position

  • \(\tau_m\) is the actuator torque

  • \(\tau_e(\theta) = mgl\sin(\theta)\) is the gravity torque

  • \(\tau_f\) is the friction torque

  • \(J\) is the apparent inertia (load + actuator side)

Friction as a torque budget#

The Coulomb-Viscous form is typically written as a force opposed to velocity. In BAM, friction is handled through a maximum available resistive torque \(\tau_{fm}\).

For a discrete simulator with time step \(\Delta t\), stopping at next step requires:

\[\dot{\theta}_{k+1} = 0\]

which yields the stopping torque:

\[\tau_{f,stop} = -\left(\frac{J}{\Delta t}\dot{\theta} + \tau_m + \tau_e\right)\]

The applied friction is then this stopping torque clipped to the available friction budget:

\[\tau_f = \mathrm{clip}(\tau_{f,stop}, -\tau_{fm}, \tau_{fm})\]

Each model \(\mathcal{M}_i\) defines \(\tau_{fm}\) with a different level of expressiveness.

Servo model + friction model coupling#

In BAM, simulation combines:

  • a servo model \(\mathcal{S}\) that maps state and target to motor torque

  • a friction model \(\mathcal{M}\) that computes the friction budget

At each step:

  1. compute \(\tau_m\) from control law and motor model

  2. compute \(\tau_{fm}\) from chosen friction model

  3. compute \(\tau_f\) by clipping \(\tau_{f,stop}\)

  4. integrate acceleration from bench dynamics

This makes the framework both identifiable from logs and directly usable in simulation.