> ## Documentation Index
> Fetch the complete documentation index at: https://docs.almond.bot/llms.txt
> Use this file to discover all available pages before exploring further.

# tune.breakaway

> Measure a joint's static (breakaway) friction and compare it to its sliding fc.

Measures the torque at which a stationary joint first moves — its **breakaway** or static friction — in both directions, and compares it to the sliding Coulomb torque `fc` the friction model already carries.

[`tune.friction`](/cli/tune-friction) cannot answer this: its model `fc·tanh(0.1·k·v) + fv·v` is monotonic in velocity and has no static/kinetic distinction, and its sweep bottoms out around 0.13 rad/s, above the creep speeds where a geared joint stick-slips. Stick-slip exists precisely *because* breakaway exceeds sliding friction — a joint tracking a slow target sticks until `kp·err` covers the gap, lets go, overshoots and re-sticks. On the X8-P20 shoulders that is a 2 Hz, \~0.5° stair pattern during slow extended-reach moves. This command measures the gap directly, with no velocity signal at all.

**Method, per pose.** The arm is homed and the [sweep-safety](/cli/tune-friction) clearances applied; the test joint ramps to the pose under impedance control, then drops to `kp = 0` with a small `kd` so only the gravity feed-forward holds it. That feed-forward is trimmed until the joint stands still (a joint sits still for any trim inside its stiction band, so this converges quickly — and without it a loaded pose is unmeasurable, since a 2 % gravity-model error at 15 Nm outweighs the whole breakaway torque). An extra torque is then ramped up and down in a triangle; the first motion past `--move-deg` is the release, the extra torque at that instant is recorded, and the joint is caught under `kp` and returned to the pose. Peaks escalate over attempts and stop at the first release, so the joint never sees more torque than it took to move it.

**What comes out.** Releases in both directions split into a symmetric half — **F\_static**, the friction — and an antisymmetric half, the standing torque the trimmed feed-forward still missed. The report gives `F_static / fc`, the predicted stick-slip stair `(F_static − fc) / kp` in degrees (compare it to the stairs a slow [`tune.motion`](/cli/tune-motion) replay shows), and the ceiling for the joint's `stiction_gain` (`F_static / fc − 1`): compensation that exceeds the friction it compensates hunts around the target at rest, so start at 60–80 % of that ceiling.

| Flag | Description |
| - | - |
| `--l` / `--r` | Arm side (required) |
| `--channel IFACE` | SocketCAN interface override for setups without the Axol hub adapter |
| `--joint JOINT` | `shoulder_1`, `shoulder_2`, `shoulder_3`, `elbow`, `wrist_1`, `wrist_2`, `wrist_3` (required) |
| `--poses DEG [DEG ...]` | Joint-frame poses (degrees, 0 = rest) to probe (default: 0). Base-collision joints are pushed 5° outboard of their boundary so a release cannot cross it |
| `--trials N` | Releases per direction (default: 3) |
| `--ramp-s S` | Seconds for one up-and-back torque ramp (default: 4) |
| `--max-torque M` | Largest ramp peak, as a multiple of the joint's `fc` (floored at 0.2 Nm for the low-friction wrists; default: 3.0) |
| `--move-deg DEG` | Motion that counts as a release — about 3 LSB of the 16-bit MIT position (default: 0.06) |
| `--kd KD` | Firmware damping during the `kp = 0` phases, so a released joint creeps rather than runs (default: 1.0) |
| `--csv PATH` | Dump every ramp sample (`t, extra_nm, pos_deg, tau_nm`) for offline plotting |

```bash theme={null}
axol tune.breakaway --r --joint shoulder_1
axol tune.breakaway --r --joint shoulder_2 --trials 5 --csv ~/breakaway-s2.csv
axol tune.breakaway --r --joint shoulder_1 --poses -30 0 30   # load dependence
```

<Note>
  The joint under test spends most of the run with **no position spring** — only a trimmed gravity feed-forward and light damping hold it. Keep the workspace around the arm clear and stay within reach of the e-stop, as for every tuning probe.
</Note>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.