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

# Run Policy Config Parameters

> Every setting for axol run-policy — what it does and its default.

export const prefix_2 = "robot_config.cameras."

export const prefix_1 = "robot_config."

export const F = ({children}) => <code style={{
  whiteSpace: "nowrap"
}}>{children}</code>;

export const prefix_0 = "robot_config.axol_config."

Every setting for `axol run-policy`. Add any flag below to the command, or set it once in the control panel — see [Command configuration](/cli/configuration) for config files and syntax details.

```bash theme={null}
axol run-policy --policy_path myorg/pick-act --policy_type act --task "pick up the cup" \
  --robot_config.axol_config.left_stiffness 0.8
```

<Warning>
  Stiffness, gripper torque, `observe_torques`, `observe_cartesian`, `fps`, and the camera set must be the **same as in [Data Collection](/operations/data-collection-config)**. A policy only works with the dynamics it was trained on.
</Warning>

## Policy

| Flag                   | Default        | Description                                                                                                    |
| ---------------------- | -------------- | -------------------------------------------------------------------------------------------------------------- |
| `--policy_path`        | required       | Policy checkpoint — a HuggingFace Hub repo id or local path (reachable from the inference server when remote). |
| `--policy_type`        | required       | `act`, `smolvla`, `diffusion`, `tdmpc`, `vqbet`, `pi0`, `pi05`, or `groot`.                                    |
| `--task`               | required       | Task description sent to the policy and stored with recorded frames.                                           |
| `--device`             | `cuda`         | `cuda`, `cpu`, or `mps`.                                                                                       |
| `--episode_time_s`     | `120`          | Maximum episode length (s).                                                                                    |
| `--fps`                | `60`           | Control rate. Must match the training fps unless `--allow_fps_mismatch true`.                                  |
| `--allow_fps_mismatch` | `false`        | Start even if `fps` differs from the training fps. Experiments only.                                           |
| `--server_host`        | `null` (local) | Address of a remote [`inference-server`](/cli/inference-server). `null` starts one locally.                    |
| `--server_port`        | `8765`         | Inference server port.                                                                                         |

## Action chunking

How the action chunks returned by the policy are stitched into smooth motion.

| Flag                        | Default             | Description                                                                                                                             |
| --------------------------- | ------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |
| `--actions_per_chunk`       | `50`                | Actions requested from the policy per call.                                                                                             |
| `--chunk_size_threshold`    | `0.9`               | Request the next chunk when the action queue drops below this fraction.                                                                 |
| `--aggregate_fn`            | `temporal_ensemble` | How overlapping chunks are combined: `temporal_ensemble`, `weighted_average`, `latest_only`, `average`, or `conservative`.              |
| `--temporal_ensemble_coeff` | `0.01`              | Weight decay for `temporal_ensemble`.                                                                                                   |
| `--ensemble_blend_s`        | `0.2`               | Fade (s) at the end of each chunk so the motion doesn't step when a chunk expires. `0` disables.                                        |
| `--align_fade_s`            | `1.0`               | Fade (s) over which each new chunk's offset from the current motion is blended in. Removes inference-latency oscillation. `0` disables. |
| `--exec_max_vel`            | `6.283`             | Joint speed limit (rad/s) on commands sent to the arms. `0` disables.                                                                   |
| `--exec_max_accel`          | `21.99`             | Joint acceleration limit (rad/s²). `0` disables.                                                                                        |

## Recording

Optional — the rollout is recorded to a dataset when `--repo_id` is set.

| Flag            | Default      | Description                                                                            |
| --------------- | ------------ | -------------------------------------------------------------------------------------- |
| `--repo_id`     | `null`       | Dataset id, `<user>/<dataset>`. Set it to record the rollout.                          |
| `--vcodec`      | per platform | Dataset video codec: `h264` on Jetson, `auto` elsewhere.                               |
| `--root`        | `null`       | Local dataset directory. Default is the LeRobot cache, `~/.cache/huggingface/lerobot`. |
| `--push_to_hub` | `false`      | Upload the dataset to the HuggingFace Hub when done.                                   |
| `--rerun_ip`    | `null` (off) | Stream live visualisation to a [Rerun](https://rerun.io) viewer at this address.       |
| `--rerun_port`  | `9876`       | Rerun viewer port.                                                                     |
| `--log_level`   | `INFO`       | `DEBUG`, `INFO`, `WARNING`, or `ERROR`.                                                |
| `--config_path` | —            | Load a JSON/YAML config file. Flags override it.                                       |

## Contact safety

A contact stop trips when a joint's torque is higher than the gravity model expects — the arm hit something. The arms then go limp instead of pushing through.

| Flag                        | Default   | Description                                                                                              |
| --------------------------- | --------- | -------------------------------------------------------------------------------------------------------- |
| `--reset_torque_threshold`  | `4.0`     | Contact stop during return-to-rest (Nm). `0` disables.                                                   |
| `--policy_torque_threshold` | `0` (off) | Contact stop while the policy drives (Nm). A trip aborts the episode. The control panel arms it at `16`. |
| `--reset_gravity_comp_kd`   | `0.25`    | Damping (Nm·s/rad) of the limp hold.                                                                     |

<h2 id="robot-config">
  Robot
</h2>

CAN buses, cameras, and what goes into observations.

| Flag                                  | Default                      | Description                                                                                                                                                                    |
| ------------------------------------- | ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| <F>--{prefix_1}left\_channel</F>      | `can_alm_axol_l`             | CAN interface for the left arm.                                                                                                                                                |
| <F>--{prefix_1}right\_channel</F>     | `can_alm_axol_r`             | CAN interface for the right arm.                                                                                                                                               |
| <F>--{prefix_1}cameras</F>            | 3 unassigned slots           | Camera slots `overhead`, `left_arm`, `right_arm` — fields below. Pass inline: `--robot_config.cameras "{overhead: {serial: 41234567}}"`. Slots left at serial `0` are dropped. |
| <F>--{prefix_1}video\_backend</F>     | `auto` (`sdk` on run-policy) | Camera backend: `gst` (GPU pipeline, low latency), `sdk` (ZED SDK), or `auto` (prefers `gst`).                                                                                 |
| <F>--{prefix_1}observe\_torques</F>   | `false`                      | Include joint torques in observations. Must match between collection and inference.                                                                                            |
| <F>--{prefix_1}observe\_cartesian</F> | `false`                      | Use end-effector poses instead of joint angles for observations and actions. Must match between collection and inference.                                                      |
| <F>--{prefix_1}id</F>                 | `null`                       | LeRobot bookkeeping, unused by Axol.                                                                                                                                           |
| <F>--{prefix_1}calibration\_dir</F>   | `null`                       | LeRobot bookkeeping, unused by Axol.                                                                                                                                           |

<h3 id="cameras">
  Cameras
</h3>

One ZED camera per slot: `overhead`, `left_arm`, `right_arm`. Flags are shown for `overhead`; swap in the other slot names. Stereo ZED X cameras are detected from their serial. The [control panel's Cameras tab](/guides/control-panel#cameras) edits all of this visually.

| Flag                                     | Default          | Description                                                                                                     |
| ---------------------------------------- | ---------------- | --------------------------------------------------------------------------------------------------------------- |
| <F>--{prefix_2}overhead.serial</F>       | `0` (unassigned) | Serial number of the ZED camera. `0` leaves the slot unused.                                                    |
| <F>--{prefix_2}overhead.fps</F>          | `60`             | Capture rate. Raised automatically if the recording `fps` is higher.                                            |
| <F>--{prefix_2}overhead.width</F>        | `960`            | Capture width. With `height`, must be a ZED resolution: `SVGA` 960×600, `HD1080` 1920×1080, `HD1200` 1920×1200. |
| <F>--{prefix_2}overhead.height</F>       | `600`            | Capture height.                                                                                                 |
| <F>--{prefix_2}overhead.color\_mode</F>  | `RGB`            | `RGB` or `BGR`.                                                                                                 |
| <F>--{prefix_2}overhead.warmup\_s</F>    | `1`              | Seconds of frames discarded on connect.                                                                         |
| <F>--{prefix_2}overhead.stereo</F>       | `false` (auto)   | Force stereo on or off instead of detecting it from the serial.                                                 |
| <F>--{prefix_2}overhead.eyes</F>         | `both`           | Which eye(s) to **record**: `both` (`overhead_left` + `overhead_right`), `left`, or `right`.                    |
| <F>--{prefix_2}overhead.stream\_eyes</F> | `null`           | Which eye(s) to **stream** to the headset. `null` follows `eyes`. Not used by run-policy.                       |
| <F>--{prefix_2}overhead.record</F>       | `true`           | Write this camera to the dataset.                                                                               |
| <F>--{prefix_2}overhead.stream</F>       | `true`           | Show this camera in the headset. Not used by run-policy.                                                        |

<h3 id="robot">
  Arm gains
</h3>

Arm stiffness, gripper limits, and per-joint gains.

| Flag                                          | Default   | Description                                                                                                                                                                                                                                                                                                                                        |
| --------------------------------------------- | --------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| <F>--{prefix_0}left\_stiffness</F>            | `1.0`     | How stiff the left arm is, from `0` (soft, hand-guidable) to `1` (the tuned gains). Lower values only add compliance — the arm tracks a little less tightly but yields more to obstacles. One number applies to every joint; a 7-element list sets each joint in the order `shoulder_1, shoulder_2, shoulder_3, elbow, wrist_1, wrist_2, wrist_3`. |
| <F>--{prefix_0}right\_stiffness</F>           | `1.0`     | Same, for the right arm.                                                                                                                                                                                                                                                                                                                           |
| <F>--{prefix_0}has\_gripper</F>               | `true`    | Set `false` on the gripperless model. The gripper motors are never enabled and datasets record 7 channels per arm instead of 8.                                                                                                                                                                                                                    |
| <F>--{prefix_0}max\_step\_rad</F>             | `0.5`     | Largest joint move (rad) allowed between two consecutive commands. Bigger moves are dropped with a warning. `inf` disables.                                                                                                                                                                                                                        |
| <F>--{prefix_0}left.gripper.torque\_limit</F> | `0.5`     | Grip force — peak gripper torque (Nm).                                                                                                                                                                                                                                                                                                             |
| <F>--{prefix_0}left.gripper.max\_speed</F>    | `10.0`    | Maximum gripper speed (rad/s).                                                                                                                                                                                                                                                                                                                     |
| <F>--{prefix_0}left.elbow\.kp</F>             | per joint | Position stiffness of one joint, in `[0, 500]`. This is the stiffness-`1` value.                                                                                                                                                                                                                                                                   |
| <F>--{prefix_0}left.elbow\.kd</F>             | per joint | Velocity damping in the motor firmware, in `[0, 5]`.                                                                                                                                                                                                                                                                                               |
| <F>--{prefix_0}left.elbow\.kd\_host</F>       | per joint | Extra damping (Nm·s/rad) applied by the host, for the slow shoulder resonance the firmware can't damp. Scaled down automatically in poses where the joint carries less inertia. `0` on joints whose firmware damping is enough.                                                                                                                    |
| <F>--{prefix_0}left.elbow\.kd\_host\_hz</F>   | `null`    | Centre frequency (Hz) of the band the host damping acts in. `null` tracks the arm's pose automatically.                                                                                                                                                                                                                                            |
| <F>--{prefix_0}left.elbow\.kd\_host\_q</F>    | `null`    | Width of that band (bandwidth = centre ÷ q). `null` uses `0.8`.                                                                                                                                                                                                                                                                                    |
| <F>--{prefix_0}left.elbow\.j\_eff</F>         | per joint | Effective inertia (kg·m²) used for acceleration feed-forward.                                                                                                                                                                                                                                                                                      |
| <F>--{prefix_0}left.elbow\.mass</F>           | per joint | Mass (kg) of the link, used for gravity compensation. Tune if an arm sags or pushes back in [gravity comp](/operations/gravity-comp).                                                                                                                                                                                                              |
| <F>--{prefix_0}left.elbow\.com</F>            | per joint | Centre of mass `[x, y, z]` (m) of the link.                                                                                                                                                                                                                                                                                                        |
| <F>--{prefix_0}left.elbow\.friction.fc</F>    | per motor | Coulomb friction (Nm). Measured per motor with [`tune.friction`](/cli/tune-friction).                                                                                                                                                                                                                                                              |
| <F>--{prefix_0}left.elbow\.friction.k</F>     | per motor | Friction curve sharpness.                                                                                                                                                                                                                                                                                                                          |
| <F>--{prefix_0}left.elbow\.friction.fv</F>    | per motor | Viscous friction (Nm·s/rad).                                                                                                                                                                                                                                                                                                                       |
| <F>--{prefix_0}left.elbow\.friction.fo</F>    | per motor | Constant torque offset (Nm).                                                                                                                                                                                                                                                                                                                       |

Per-arm and per-joint flags are shown for `left` / `elbow`. Swap in `right`, or any joint: `shoulder_1`, `shoulder_2`, `shoulder_3`, `elbow`, `wrist_1`, `wrist_2`, `wrist_3`.

<Note>
  A robot calibrated with [`tune.pid --save`](/cli/tune-pid), [`tune.friction --save`](/cli/tune-friction), or [`tune.gravity --save`](/cli/tune-gravity) uses its own measured values (from `~/.almond/calibration.json`) instead of the defaults below. Flags you pass still override both.
</Note>

<Accordion title="Per-joint defaults">
  Both arms share these. `kp`/`kd` are the stiffness-`1` values (the default); the **soft** columns are what stiffness `0` blends toward. `shoulder_1` also sets `kd_host_q` to `3.0`; every other joint leaves it `null`.

  | Joint        | `kp` | `kd` | `kd_host` | `j_eff` | `mass` (kg) | soft `kp` | soft `kd` |
  | ------------ | ---- | ---- | --------- | ------- | ----------- | --------- | --------- |
  | `shoulder_1` | 250  | 3.5  | 40        | 1.27    | 1.80        | 40        | 1.4       |
  | `shoulder_2` | 250  | 3.5  | 35        | 1.1     | 1.00        | 50        | 1.57      |
  | `shoulder_3` | 180  | 5.0  | 0         | 0.25    | 3.75        | 45        | 1.0       |
  | `elbow`      | 130  | 5.0  | 0         | 0.6     | 0.25        | 40        | 2.22      |
  | `wrist_1`    | 180  | 1.7  | 0         | 0       | 0.25        | 30        | 0.69      |
  | `wrist_2`    | 130  | 3.5  | 0         | 0       | 0.65        | 25        | 1.5       |
  | `wrist_3`    | 130  | 2.0  | 0         | 0       | 0.75        | 25        | 0.9       |
</Accordion>

<Accordion title="Per-motor friction defaults">
  Fallback values of `fc`, `k`, `fv`, `fo` for each motor, measured on the reference robot with [`tune.friction`](/cli/tune-friction).

  | Joint        | Left arm                         | Right arm                         |
  | ------------ | -------------------------------- | --------------------------------- |
  | `shoulder_1` | `0.9091, 799.59, 0, 0.37`        | `1.2972, 742.11, 0, −0.1557`      |
  | `shoulder_2` | `1.1378, 756.76, 0, −0.3969`     | `1.3950, 768.06, 0, 0.2082`       |
  | `shoulder_3` | `0.3599, 835.51, 0, −0.0133`     | `0.4377, 107.94, 0.0853, −0.0147` |
  | `elbow`      | `0.6023, 855.95, 0, −0.072`      | `0.6066, 784.78, 0, 0.049`        |
  | `wrist_1`    | `0.3765, 88.91, 0.0298, −0.0115` | `0.5245, 98.58, 0.3062, −0.0097`  |
  | `wrist_2`    | `0.1521, 780.31, 0, −0.0152`     | `0.1092, 899.67, 0, 0.0021`       |
  | `wrist_3`    | `0.0714, 927.26, 0, 0.0042`      | `0.1172, 204.46, 0, 0.0042`       |
</Accordion>
