Method for Arcade Drive input scaling

“Arcade Drive” is a popular joystick control method for skid-steer robot drivetrains, where one joystick axis controls the “throttle” (speed forward and back) and the other axis controls the rate of rotation of the robot chassis.

We provide a method for scaling the [-2, 2] range of (throttle command + turn command) down to [-1, 1] for use with an arcade drive.

This scaling is applied smoothly with no discontinuities anywhere in the input range. There is also no loss of information– both outputs (power/speed commands to motor controllers on the left and right sides of the drivetrain) always depend on both inputs (the driver’s throttle and turn joystick commands).

Explainer document

Code example

Chief Delphi discussion