> ## 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.repeatability

> Measure how reliably the left arm returns to the same pose after many motions.

Repeatability test for the **left arm**: moves rest → pose **A** once, then bounces between two hard-coded poses (**A → B → A → B …**) for the requested number of cycles, returning to rest at the end (or on Ctrl-C). Each leg is planned in joint space with pyroki + the URDF so the arm can't clip the torso, and the playback is a pure joint-space interpolation — no per-waypoint IK — so it's smooth and perfectly repeatable. The gripper is held closed throughout, the right arm is left untouched (its CAN channel is disabled entirely).

| Flag                                     | Description                                                                                                      |
| ---------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
| `--cycles INT`                           | Number of A→B→A round trips; `0` (default) = run until Ctrl-C                                                    |
| `--gripper-torque-limit FLOAT`           | Gripper closing torque limit in Nm (default: 0.3)                                                                |
| `--dwell FLOAT`                          | Seconds to hold at each waypoint except B (default: 0.5)                                                         |
| `--dwell-b FLOAT`                        | Seconds to hold at pose B before returning to A (default: 3.0)                                                   |
| `--rate FLOAT`                           | Control loop / waypoint rate in Hz — higher = finer steps and smoother playback at the same speed (default: 250) |
| `--speed FLOAT`                          | Average joint speed in rad/s of the worst-case joint; peak is 1.5× this (default: \~0.31)                        |
| `--stiffness FLOAT`                      | Arm stiffness scale 0–1 — lower softens the motors and reduces tracking jitter (default: 0.5)                    |
| `--log-level {DEBUG,INFO,WARNING,ERROR}` | Default: `INFO`                                                                                                  |

```bash theme={null}
axol tune.repeatability               # bounce A↔B forever
axol tune.repeatability --cycles 5    # five A→B→A round trips, then rest
```

<Note>
  Poses A and B are hand-posed and live at the top of `almond_axol/cli/tune/repeatability.py` — `_POSE_A_LEFT` / `_POSE_B_LEFT`, in raw motor-frame angles. To re-calibrate: pose the arm by hand, run `axol motor.info --l`, and paste the printed numbers in.
</Note>
