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

# Data Collection Config Parameters

> Every setting for axol collect-data — what it does and its default.

export const prefix_6 = "teleop_config.jelly."

export const prefix_5 = "teleop_config.vr_server_config."

export const prefix_4 = "teleop_config.kinematics_config."

export const prefix_3 = "teleop_config.vr_teleop_config."

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 collect-data`. 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 collect-data --repo_id myorg/pick --task "pick up the cup" \
  --robot_config.axol_config.left_stiffness 0.8 \
  --teleop_config.vr_teleop_config.position_multiplier 1.5
```

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

## Recording

| Flag                   | Default      | Description                                                                                                                     |
| ---------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------- |
| `--repo_id`            | required     | Dataset id, `<user>/<dataset>`.                                                                                                 |
| `--task`               | required     | Task description stored with every frame.                                                                                       |
| `--fps`                | `60`         | Recording rate. Camera frames are captured at this rate.                                                                        |
| `--teleop_hz`          | `120`        | Motor command rate (Hz) while teleoperating, independent of `fps`.                                                              |
| `--dataset_resolution` | `SVGA`       | Resolution the recorded video is downscaled to: `SVGA`, `HD1080`, or `HD1200`. The headset stream keeps the capture resolution. |
| `--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.                                                                            |
| `--qa_gate`            | `true`       | Refuse to save Mantis episodes the quality check marks corrupt. `false` saves anyway.                                           |
| `--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.                                                                                |

## Mantis

Only used with `--mantis`.

| Flag                          | Default      | Description                                                                                                      |
| ----------------------------- | ------------ | ---------------------------------------------------------------------------------------------------------------- |
| `--mantis`                    | `false`      | Record with the Mantis handheld rigs instead of the robot: tracked TCP poses plus wrist cameras.                 |
| `--mantis_source`             | `lighthouse` | Pose source: `quest`, `lighthouse`, or `ultimate`. Defaults to the host's **Mantis settings → Tracking** choice. |
| `--mantis_allow_uncalibrated` | `false`      | Record without a tracker → TCP calibration. Bring-up only; don't train on the result.                            |
| `--mantis_smooth_hz`          | `10.0`       | Low-pass cutoff (Hz) applied to the recorded pose track on save. `0` disables.                                   |

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

<h2 id="teleop">
  Teleop session
</h2>

How VR controller motion becomes arm motion.

| Flag                                            | Default                               | Description                                                                                                                                                                                                                          |
| ----------------------------------------------- | ------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| <F>--{prefix_3}rest\_pose\_left</F>             | `[−0.157, 0, 0, 0.314, 0, 0, −0.157]` | Left arm rest pose (rad, 7 joints). The arms start here and return here on reset. Edit it visually in the control panel's **Rest pose** tab.                                                                                         |
| <F>--{prefix_3}rest\_pose\_right</F>            | `[0.157, 0, 0, −0.314, 0, 0, 0.157]`  | Right arm rest pose.                                                                                                                                                                                                                 |
| <F>--{prefix_3}frequency</F>                    | `120`                                 | Motor command rate (Hz). Data collection sets this from `teleop_hz`.                                                                                                                                                                 |
| <F>--{prefix_3}ik\_frequency</F>                | `120`                                 | How often VR poses are sent to the IK solver (Hz). The control loop interpolates between solutions.                                                                                                                                  |
| <F>--{prefix_3}position\_multiplier</F>         | `1.0`                                 | Scales hand movement. `2` moves the arm twice as far as your hand. Ignored in `absolute_mode`.                                                                                                                                       |
| <F>--{prefix_3}rotation\_multiplier</F>         | `1.0`                                 | Scales hand rotation the same way. Ignored in `absolute_mode`.                                                                                                                                                                       |
| <F>--{prefix_3}hold\_to\_engage</F>             | `false`                               | `false`: click both grips to engage, then click a grip to freeze or unfreeze that arm. `true`: each arm tracks only while its grip is held.                                                                                          |
| <F>--{prefix_3}disengage\_timeout</F>           | `0.5`                                 | Seconds without a VR frame before tracking disengages and the arms hold position. `0` disables.                                                                                                                                      |
| <F>--{prefix_3}record</F>                       | `null`                                | Record every stage of the teleop pipeline to `~/.almond/recordings/<name>_*.npz` for [`motion.build`](/cli/motion-build) and [`diag.offline`](/cli/diag-offline). A bare name like `rec1` goes in that folder; a path is used as-is. |
| <F>--{prefix_3}reset\_speed</F>                 | `0.628`                               | Speed (rad/s) of the return-to-rest move.                                                                                                                                                                                            |
| <F>--{prefix_3}reset\_min\_duration</F>         | `1.5`                                 | Minimum duration (s) of a return-to-rest move.                                                                                                                                                                                       |
| <F>--{prefix_3}reset\_rest\_weight</F>          | `50.0`                                | IK weight toward the rest pose when planning a return.                                                                                                                                                                               |
| <F>--{prefix_3}reset\_limit\_weight</F>         | `100.0`                               | IK weight against joint limits when planning a return.                                                                                                                                                                               |
| <F>--{prefix_3}reset\_collision\_margin</F>     | `0.025`                               | Minimum self-collision clearance (m) when planning a return.                                                                                                                                                                         |
| <F>--{prefix_3}reset\_collision\_weight</F>     | `100.0`                               | IK weight on self-collision when planning a return.                                                                                                                                                                                  |
| <F>--{prefix_3}reset\_max\_iterations</F>       | `10`                                  | IK iterations per return waypoint.                                                                                                                                                                                                   |
| <F>--{prefix_3}reset\_torque\_threshold</F>     | `4.0`                                 | **Contact stop during return-to-rest** (Nm of unexpected torque). If the arm hits something, the move stops and the arms go limp; press reset to retry. `0` disables. Hardware only.                                                 |
| <F>--{prefix_3}teleop\_torque\_threshold</F>    | `0` (off)                             | **Contact stop while tracking.** Same behaviour; a running episode is discarded. The control panel arms it at `16`. Hardware only.                                                                                                   |
| <F>--{prefix_3}reset\_gravity\_comp\_kd</F>     | `0.25`                                | Damping (Nm·s/rad) of the limp hold after a contact stop.                                                                                                                                                                            |
| <F>--{prefix_3}engage\_max\_vel</F>             | `0.628`                               | Joint speed cap (rad/s) right after engaging, so the first move is gentle.                                                                                                                                                           |
| <F>--{prefix_3}engage\_duration</F>             | `1.0`                                 | Seconds to ramp from `engage_max_vel` up to `teleop_max_vel`.                                                                                                                                                                        |
| <F>--{prefix_3}teleop\_max\_vel</F>             | `6.283`                               | Maximum joint speed (rad/s) while tracking.                                                                                                                                                                                          |
| <F>--{prefix_3}teleop\_max\_accel</F>           | `21.99`                               | Maximum joint acceleration (rad/s²) while tracking.                                                                                                                                                                                  |
| <F>--{prefix_3}ik\_alpha</F>                    | `0.3`                                 | Smoothing on the IK output, `(0, 1]`. `1` is no smoothing; lower is smoother but adds lag. See [Latency tuning](/operations/teleop#latency-tuning).                                                                                  |
| <F>--{prefix_3}pose\_cutoff</F>                 | `2.5`                                 | Low-pass cutoff (Hz) on raw controller poses before IK. Lower rejects more hand tremor but adds lag.                                                                                                                                 |
| <F>--{prefix_3}absolute\_mode</F>               | `false`                               | Mantis mapping: track controller poses 1:1 in a fixed world frame instead of relative to where you engaged. Forced `true` by `--mantis`.                                                                                             |
| <F>--{prefix_3}base\_height</F>                 | `null`                                | In `absolute_mode`, fix the robot base this many metres above the VR floor instead of inferring it. Keeps datasets consistent across operators.                                                                                      |
| <F>--{prefix_3}tcp\_transform\_left</F>         | `null`                                | *Mantis data collection.* Tracker → gripper transform `[x, y, z, qx, qy, qz, qw]` for the left rig. Normally read from the saved calibration; set to override. See [`tracker`](/cli/tracker#transform-file).                         |
| <F>--{prefix_3}tcp\_transform\_right</F>        | `null`                                | *Mantis data collection.* Same for the right rig.                                                                                                                                                                                    |
| <F>--{prefix_3}tracker\_key</F>                 | `null`                                | *Mantis data collection, Quest.* Which saved calibration to use, e.g. `quest:oculus-touch-v3:grip`. Set from **Mantis settings** in the panel.                                                                                       |
| <F>--{prefix_3}quest\_controller\_profile</F>   | `null`                                | *Mantis data collection, Quest.* Expected controller profile. Filled from `tracker_key`.                                                                                                                                             |
| <F>--{prefix_3}quest\_pose\_space</F>           | `null`                                | *Mantis data collection, Quest.* Expected pose datum, `grip` or `target-ray`. Filled from `tracker_key`.                                                                                                                             |
| <F>--{prefix_3}urdf\_viewer\_world\_aligned</F> | `null`                                | *Mantis data collection.* Whether the pose source shares the viewer headset's floor. `null` means `true` for Quest, `false` for Lighthouse/Ultimate.                                                                                 |

<Note>
  **Mantis mode** (`--mantis`) forces `absolute_mode: true`, `hold_to_engage: false`, `ik_alpha: 1.0`, `pose_cutoff: 5.0`, and removes the speed and acceleration limits. Your values for these keys are ignored in Mantis mode.
</Note>

<h2 id="kinematics">
  Kinematics
</h2>

The IK solver that turns hand targets into joint angles. A higher weight means the solver cares more about that term.

| Flag                                         | Default   | Description                                                                                                |
| -------------------------------------------- | --------- | ---------------------------------------------------------------------------------------------------------- |
| <F>--{prefix_4}pos\_weight</F>               | `50.0`    | Weight on end-effector position error.                                                                     |
| <F>--{prefix_4}ori\_weight</F>               | `10.0`    | Weight on end-effector orientation error.                                                                  |
| <F>--{prefix_4}elbow\_weight</F>             | `0` (off) | Weight on the headset's elbow-position hint. Off by default because the hint is unreliable on hardware.    |
| <F>--{prefix_4}rest\_weight</F>              | `15.0`    | Damping toward the current pose. Higher is steadier, lower tracks faster.                                  |
| <F>--{prefix_4}posture\_weight</F>           | `5.0`     | Pull toward the home posture, preventing slow drift.                                                       |
| <F>--{prefix_4}manipulability\_weight</F>    | `0.05`    | Keeps the arm away from singular poses. Forced `0` in Mantis mode.                                         |
| <F>--{prefix_4}limit\_weight</F>             | `75.0`    | Penalty on joint-limit violations.                                                                         |
| <F>--{prefix_4}self\_collision\_margin</F>   | `0.025`   | Distance (m) at which self-collision avoidance starts. Keep below the arm–torso clearance of normal poses. |
| <F>--{prefix_4}self\_collision\_weight</F>   | `150.0`   | Weight on self-collision avoidance.                                                                        |
| <F>--{prefix_4}max\_iterations</F>           | `8`       | Solver iterations per IK call.                                                                             |
| <F>--{prefix_4}cost\_tolerance</F>           | `1e-4`    | Convergence tolerance. Keep small.                                                                         |
| <F>--{prefix_4}lambda\_initial</F>           | `1e-2`    | Initial Levenberg–Marquardt damping.                                                                       |
| <F>--{prefix_4}lambda\_factor</F>            | `10.0`    | Damping multiplier after a rejected solver step.                                                           |
| <F>--{prefix_4}max\_joint\_delta</F>         | `0.0346`  | Largest joint change (rad) per IK call. Raise for faster tracking, lower for gentler motion.               |
| <F>--{prefix_4}max\_reach</F>                | `0.82`    | Maximum shoulder-to-target distance (m). Targets beyond it are pulled in.                                  |
| <F>--{prefix_4}reach\_soft\_start</F>        | `0.78`    | Distance (m) at which the reach limit starts to act.                                                       |
| <F>--{prefix_4}manip\_damping\_threshold</F> | `0.015`   | Below this manipulability, extra damping kicks in (near full extension).                                   |
| <F>--{prefix_4}manip\_damping\_boost</F>     | `60.0`    | Extra damping at zero manipulability. `0` disables.                                                        |
| <F>--{prefix_4}limit\_damping\_margin</F>    | `0.12`    | Distance (rad) from a joint limit inside which the joint is damped while moving toward it.                 |
| <F>--{prefix_4}elbow\_fade\_band</F>         | `0.15`    | Height (m) above the shoulder over which the elbow hint fades out.                                         |

<Note>
  **Mantis mode** replaces any of these still at their default with `pos_weight 200`, `ori_weight 120`, `manipulability_weight 0`, `self_collision_margin 0.02`, `max_joint_delta 0.05`, `max_iterations 12`. A value you set explicitly still wins.
</Note>

<h2 id="vr-server">
  VR server
</h2>

The connection the headset streams poses over.

| Flag                                          | Default | Description                                                                                                                                          |
| --------------------------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| <F>--{prefix_5}port</F>                       | `8000`  | Port the headset connects to. [Quest-over-USB](/guides/quest-over-usb) uses the same port.                                                           |
| <F>--{prefix_5}certfile</F>                   | `null`  | TLS certificate. `null` uses the auto-generated one in `~/.almond/vr/certs/`.                                                                        |
| <F>--{prefix_5}keyfile</F>                    | `null`  | TLS private key. `null` as above.                                                                                                                    |
| <F>--{prefix_5}interp\_enabled</F>            | `true`  | Smooth out jittery or batched pose arrivals. `false` uses the latest raw frame.                                                                      |
| <F>--{prefix_5}interp\_min\_delay\_s</F>      | `0`     | Minimum playout delay (s).                                                                                                                           |
| <F>--{prefix_5}interp\_max\_delay\_s</F>      | `0.15`  | Maximum playout delay (s) spent absorbing network jitter.                                                                                            |
| <F>--{prefix_5}interp\_smooth\_window\_s</F>  | `0.12`  | Smoothing window (s). Adds about half of it as latency. `0` disables. See [Latency tuning](/operations/teleop#latency-tuning).                       |
| <F>--{prefix_5}interp\_outlier\_k</F>         | `4.0`   | Glitch-rejection threshold. Lower is more aggressive; `≤ 0` disables.                                                                                |
| <F>--{prefix_5}pose\_source\_kind</F>         | `null`  | Which pose source may drive: `webxr` (Quest), `tracker` (Lighthouse/Ultimate), or `null` for whichever connects first. Set automatically for Mantis. |
| <F>--{prefix_5}expected\_pose\_source\_id</F> | `null`  | *Mantis data collection.* Exact pose-source ID accepted. Set automatically.                                                                          |

<h2 id="jelly">
  Jelly
</h2>

The optional powered cart, driven from the headset thumbsticks between takes. Jelly motion is never recorded.

| Flag                                | Default          | Description                                                                                    |
| ----------------------------------- | ---------------- | ---------------------------------------------------------------------------------------------- |
| <F>--{prefix_6}enabled</F>          | `false`          | This robot is on a Jelly. Thumbsticks drive the base, stick clicks run the lift.               |
| <F>--{prefix_6}channel</F>          | `can_alm_axol_b` | CAN interface of the wheel motors. `null` means lift only.                                     |
| <F>--{prefix_6}max\_speed</F>       | `20.0`           | Peak wheel speed (rad/s) at full stick.                                                        |
| <F>--{prefix_6}turn\_scale</F>      | `1.0`            | Rotation speed relative to driving speed, `[0, 1]`.                                            |
| <F>--{prefix_6}slew</F>             | `0.5`            | Acceleration ramp. The default takes 2 s from rest to full speed.                              |
| <F>--{prefix_6}axis\_snap\_deg</F>  | `15.0`           | Stick directions within this many degrees of straight or sideways snap to exact. `0` disables. |
| <F>--{prefix_6}deadzone</F>         | `0.15`           | Thumbstick deadzone, as a fraction of full deflection.                                         |
| <F>--{prefix_6}imu</F>              | `false`          | Use the board IMU to hold a straight heading.                                                  |
| <F>--{prefix_6}yaw\_hold\_gain</F>  | `2.0`            | Heading-hold strength. `0` disables.                                                           |
| <F>--{prefix_6}yaw\_hold\_max</F>   | `0.3`            | Maximum heading-hold correction.                                                               |
| <F>--{prefix_6}yaw\_log</F>         | `false`          | Log heading-hold data at 10 Hz, for diagnosing drift.                                          |
| <F>--{prefix_6}hold\_kp</F>         | `60.0`           | Stiffness (Nm/rad) holding the wheels when parked. `0` leaves them idle.                       |
| <F>--{prefix_6}hold\_kd</F>         | `1.5`            | Damping (Nm·s/rad) of the parked hold.                                                         |
| <F>--{prefix_6}frequency</F>        | `50.0`           | Wheel command rate (Hz).                                                                       |
| <F>--{prefix_6}command\_timeout</F> | `0.2`            | Seconds without a stick command before Jelly stops.                                            |
| <F>--{prefix_6}can\_timeout\_ms</F> | `200.0`          | Motor-side loss-of-comms timeout (ms). Stops the wheels even if the host hangs.                |
| <F>--{prefix_6}lift</F>             | `true`           | The lift is present.                                                                           |
| <F>--{prefix_6}lift\_channel</F>    | `can_alm_axol_c` | CAN interface of the lift controller.                                                          |
| <F>--{prefix_6}lift\_speed</F>      | `650`            | Lift speed (encoder counts/s).                                                                 |

<h2 id="teleop-config">
  Teleoperator
</h2>

| Flag                              | Default | Description                                                      |
| --------------------------------- | ------- | ---------------------------------------------------------------- |
| `--teleop_config.has_gripper`     | `true`  | Set automatically from `--robot_config.axol_config.has_gripper`. |
| `--teleop_config.id`              | `null`  | LeRobot bookkeeping, unused by Axol.                             |
| `--teleop_config.calibration_dir` | `null`  | LeRobot bookkeeping, unused by Axol.                             |
