--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) |
--kp KP [KP ...] | Proportional gain candidates (default: the joint’s configured kp) |
--kd KD [KD ...] | Derivative gain candidates (default: the joint’s configured kd) |
--ff {full,gravity,friction,none} | Feed-forward during the test (default: full, the same as teleop) |
--host-kd KD | Host damping in Nm·s/rad, the same as the config’s kd_host (default: the joint’s configured value) |
--host-kd-hz HZ | Center of the band the host damping acts in, the same as kd_host_hz. Set it to the ring frequency the step test reports (default: the joint’s configured value, else 3.2 Hz). |
--host-kd-q Q | Width of that band, the same as kd_host_q: bandwidth is the center divided by Q (default: the joint’s configured value, else 0.8). See below. |
--stiffness S | Test the production gains at this stiffness-slider position, 0 to 1. Can’t be combined with --save. |
--mode {sine,step} | sine tracks a sine wave (default). step measures a step response. |
--amp DEG | Motion amplitude in degrees (default: 10°, limited to the room the joint has) |
--center DEG | Center of the test, joint-frame degrees with 0 at rest (default: a step starts where the joint is, a sine centers on its midpoint). See below. |
--pose JOINT=DEG | Hold another joint at this joint-frame angle during the test. Repeatable, see below. |
--pose-by-hand | Pose the arm by hand between tests. See below. |
--hold-host-kd KD | With --pose-by-hand: cap the host damping on the held joints |
--a4-holders | Hold the other joints on their firmware position loops instead of impedance. This is stiffer but can make a shoulder oscillate, so keep a hand on the E-Stop. |
--target-noise DEG | Sine only: add about 8 Hz noise of this RMS to the target, like hand-tracking jitter. Try 0.1 to 0.3. |
--freq FLOAT | Sine frequency in Hz (default: 1.0) |
--duration FLOAT | Sine duration in seconds (default: 5.0) |
--hold FLOAT | Step hold time per phase in seconds (default: 2.0). The joint also settles this long before the step. |
--rate FLOAT | Command rate in Hz (default: 240, the teleop control rate). The report prints the rate it reached and warns if the CAN bus held it below the request. |
--save | Save the best candidate’s Kp/Kd to ~/.almond/calibration.json |
--no-imu | Skip the wrist IMU. By default each candidate gets an imu shake score (see tune.motion). |
--save-run | Save each candidate’s time series and scores under ~/.almond/diagnostics/tuning/ for the diagnostics dashboard |
--label TEXT | Note stored on each saved run |
--dump-csv [PATH] | Write every sample (kp, kd, t, target, actual, error) to a CSV for plotting. Without a path it is named logs/pid_<side>_<joint>_<timestamp>.csv. |