Control Schemas

What Are Control Schemas?

A control schema defines how a gamepad's sticks and buttons map to a bot's functions. When a pilot connects their controller, the schema tells the system which axis controls throttle, which button fires the gripper, etc.

Each bot type comes with a standard schema. Owners can override it with a custom schema if their bot has unique controls.

Standard Layouts

Bot TypeLeft StickRight StickKey Buttons
Differential Drive Throttle (Y) / Turn (X) Camera Pan (X) / Tilt (Y) A = Action, B = Lights, LB/RB = Speed
Mecanum Drive Strafe (X) / Throttle (Y) Rotate (X) / Camera Tilt (Y) A/B = Actions, LB/RB = Speed
Robotic Arm Base Rotate (X) / Shoulder (Y) Wrist Rotate (X) / Elbow (Y) LT = Gripper Open, RT = Gripper Close
Tracked Vehicle Left Track (Y) Right Track (Y) / Turret Pan (X) A = Action, B = Lights
Aerial Drone Throttle (Y) / Yaw (X) Pitch (Y) / Roll (X) A = Takeoff/Land, B = Return Home
Custom Define your own via JSON editor

Schema JSON Format

Control schemas are JSON objects with axes and buttons arrays:

{
    "axes": [
        {
            "id": "left_x",       // Which gamepad axis
            "label": "Turn",      // Display label for pilot
            "type": "analog",     // analog or digital
            "deadzone": 0.1,      // Ignore values below this
            "inverted": false     // Flip the axis direction
        }
    ],
    "buttons": [
        {
            "id": "a",            // Button identifier
            "label": "Action",    // Display label for pilot
            "gamepad_index": 0    // Standard Gamepad API index
        }
    ]
}
Gamepad Button Indices (Standard Gamepad API)
IndexXboxPlayStation
0A
1B
2X
3Y
4LBL1
5RBR1
6LTL2
7RTR2

Custom Schemas

If your bot has a unique control scheme (e.g., a hybrid arm-on-wheels), select "Custom" as the bot type and paste your schema JSON in the bot editor. Your custom schema overrides the bot type's default.