Skip to main content
~/.almond/settings.json on the robot’s computer holds the robot’s settings. Every tool uses it:
  • The control panel edits it and applies it to every operation it starts. Export and Import in the panel save and load this file.
  • The axol CLI commands, such as axol teleop, gravity-comp and collect-data, read it by default.
  • The SDK constructors (Axol(), VRTeleop(), Jelly(), Mantis()) build their default configs from it.

Which value wins

When a value is set in more than one place, the later one in this list wins:
  1. The built-in defaults.
  2. The settings file.
  3. A --config_path file.
  4. CLI flags.
On the CLI, --no_settings skips the file and --settings_path PATH reads a different one. In the SDK, a config or channel argument you pass overrides the setting.

Layout

The file has one object per section. It stores only the values you have changed. Anything missing uses the default.
The axol, teleop, kinematics, jelly and vr_server sections have the same fields as the matching configs. They use the same names as a teleop --config_path file, the operation config pages and the SDK: You can set any field in these sections. The panel shows the common ones as controls and the rest under Advanced. Each value applies to every operation that uses it. kinematics.mount is what Axol is mounted on when Jelly isn’t attached, set by Mount in the panel. kinematics.robot_model forces a version: any mount value, or mobile for Axol on Jelly. Leave it unset to use Axol on Jelly whenever Jelly is enabled, and mount otherwise. See Axol version.

Version 1 files

A version 1 file has a flat values map with keys such as robot.left_stiffness, and an advanced map. Axol reads it and saves it in the layout above the next time settings are saved. You can import a version 1 file into the panel too.