# System Settings
Supported since 2.9.0
The structure of the system settings is as follow.
- schema.json(readonly) - It contains the metadata of all settings, including names, types, ranges, descriptions, etc.
 - default.json(readonly) - It contains the defaults value of all settings.
 - user.json - It stores the values modified by the user.
 - effective.json(readonly) - It contains the merged values by overlaying 
user.jsonoverdefault.json. 
By design, only user.json is modifiable. Whenever it is modified, effective.json will be updated automatically.
schema.json and default.json are constants. They are related to the model of the robot.
# Schema
curl http://192.168.25.25:8090/system/settings/schema
{
   "ax":[
      {
         "name":"robot.footprint",
         "title":"Robot: Footprint",
         "type":"Polygon",
         "default":[
            [
               0.248,
               0.108
            ],
            ["..."],
            [
               0.248,
               -0.108
            ]
         ]
      },
      {
         "name":"control.auto_hold",
         "title":"Control: Auto Hold",
         "type":"bool",
         "default":true,
         "description":"When idle, the robot shall hold still"
      },
      {
         "name":"control.max_forward_velocity",
         "title":"Control: Max Forward Velocity",
         "type":"float",
         "default":1.2,
         "range":"[0, 2.0]"
      },
      {
         "name":"control.max_backward_velocity",
         "title":"Control: Max Backward Velocity",
         "type":"float",
         "default":-0.2,
         "range":"[-0.3, 0]"
      },
      {
         "name":"control.max_forward_acc",
         "title":"Control: Max Forward Acc",
         "type":"float",
         "default":0.5,
         "range":"[0, 0.8]"
      },
      {
         "name":"control.max_forward_decel",
         "title":"Control: Max Forward Decel",
         "type":"float",
         "default":-2.0,
         "range":"[-2.0, 0]"
      },
      {
         "name":"control.max_angular_velocity",
         "title":"Control: Max Angular Velocity",
         "type":"float",
         "default":1.2,
         "range":"[0, 1.2]"
      },
      {
         "name":"control.acc_smoother.smooth_level",
         "title":"Control: Acc Smoother: Smooth Level",
         "type":"Enum",
         "default":"normal",
         "options":[
            "disabled",
            "lower",
            "normal",
            "higher"
         ]
      },
      {
         "name":"bump_based_speed_limit.enable",
         "title":"enable bump-based speed limit",
         "type":"bool",
         "default":true
      },
      {
         "name":"bump_based_speed_limit.bump_tolerance",
         "title":"Bump Based Speed Limit: Bump Tolerance",
         "type":"float",
         "default":0.5,
         "range":"[0, 1.0]"
      }
   ]
}
# Default Settings
curl http://192.168.25.25:8090/system/settings/default
# User Settings
Get user settings:
curl http://192.168.25.25:8090/system/settings/user
Save user settings:
curl -X POST \
    -H "Content-Type: application/json" \
    -d '...' \
    http://192.168.25.25:8090/system/settings/user
Partial update of user settings:
curl -X PATCH \
    -H "Content-Type: application/json" \
    -d '...' \
    http://192.168.25.25:8090/system/settings/user
# Effective Settings
curl http://192.168.25.25:8090/system/settings/effective
# Setting Options
This section records all available options.
# rack.specs
The physical representation of a rack. And how a robot should carry it.
{
   "rack.specs": [
      {
         "width": 0.66,
         "depth": 0.7,
         // Some racks have extruded parts(handles, etc) outside 
         // the reams of the wheels.
         "margin": [0, 0, 0, 0], 
         "alignment": "center",  // center/back. 
         "alignment_margin_back": 0.02,
         // Some rack legs have a base plate, which is invisible to laser.
         // When crawling under the rack, the robot will avoid this extra area.
         "extra_leg_offset": 0.02, 
         // Since 2.10  square/round/other
         "leg_shape": "square", 
         // Since 2.10 the side size of a square leg, or the diameter of a round leg.
         "leg_size": 0.03, 
         // Since 2.10 some racks have rotational wheels, 
         // which are invisible to the robot lasers. 
         // Use this parameter to expand the footprint of the robot to avoid collision.
         "foot_radius": 0.05 
      }
   ]
}
width,depth- The size of the rack.margin- Some racks have extruded parts outside of rectangle formed by the legs.extra_leg_offset- Some racks have inward extruded legs that can't be seen by lidar.cargo_to_jack_front_edge_min_distance- When mounted, the distance between the front edge of the rack to the front edge of the jack panel. :::

