Skip to main content
Every setting for axol collect-dagger. Add any flag below to the command, or set it once in the control panel — see Command configuration for config files and syntax details. In the shared settings file (~/.almond/settings.json, read by default) the same sections appear without this command’s wrapper prefixes — robot_config.axol_config.* is the file’s axol, teleop_config.vr_teleop_config.* is teleop, teleop_config.kinematics_config.* is kinematics, the other robot_config.* fields are lerobot, and the recording fields live under recording — exactly as for data collection.
Stiffness, gripper torque, observe_torques, observe_cartesian, fps, and the camera set must be the same as when the policy’s data was collected. A policy only works with the dynamics it was trained on.

Policy

Custom policy interface

--policy_type custom uses the custom policy interface. Set these fields on the DAgger command itself; its shared settings inherit from collect-data, not the run-policy inference category.

Recording

Robot

CAN buses, cameras, and what goes into observations.

Cameras

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 edits all of this visually.

Arm gains

Arm stiffness, gripper limits, and per-joint gains. 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.
A robot calibrated with tune.pid --save, tune.friction --save, or tune.gravity --save uses its own measured values (from ~/.almond/calibration.json) instead of the defaults below. Flags you pass still override both.
Both arms share these. kp/kd are the stiffness-1 values (the default); the soft columns are what stiffness 0 blends toward. shoulder_1 confines its pose-tracked host damper with kd_host_q 3 (every other joint leaves kd_host_hz / kd_host_q null: a pose-tracked centre, the shared Q), and no joint runs the Stribeck cancellation.Slow-motion gains. A joint whose own slow-profile friction fit is in the calibration — written by tune.factory (its default profile) or tune.friction --profile slow --save — runs the stiffer set instead. They were tuned against calibrated friction and oscillate on a robot still running the fallback friction below, so an uncalibrated joint keeps the table above.Those values come from slow-motion tuning on the jelly robot’s right arm (2026-09, and shoulder_1’s damper and shoulder_2 on 2026-10-06 — shoulder_2’s creep ripple −57% at 3°/s; with shoulder_1’s damper change slow_osc’s 1–3 Hz wrist sway about −10% over three interleaved rounds). Gains saved in the calibration entry itself (tune.pid --save, the fit’s stribeck_gain) still win over them.
Fallback values of fc, k, fv, fo for each motor, measured on the reference robot with tune.friction. A joint’s slow-profile friction (fl and the Stribeck excess) comes only from its own calibration: there is no fallback for it, so calibrate each robot.

Teleop session

How VR controller motion becomes arm motion while you intervene.
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.

Kinematics

The IK solver that turns hand targets into joint angles. A higher weight means the solver cares more about that term.
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.

VR server

The connection the headset streams poses over.

Jelly

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

Teleoperator