Symptom A — everything is backwards. Push forward, the robot reverses; turn left, it turns right. Cause: Xbox sticks report +1 toward the driver, so forward needs a negative sign; one missing negation flips an axis. Fix: Negate getLeftY() for forward and verify each axis independently on blocks: push forward -> robot drives away from you; push left -> strafes left. Change one sign, retest, repeat. Don't flip three signs at once or you'll chase your own tail.
Symptom B — the robot creeps when the sticks are centered. Cause: joysticks don't return to exactly 0.0; residual drift commands motion. Fix: apply a deadband. MathUtil.applyDeadband(value, 0.1) zeros out small inputs. DifferentialDrive applies 0.02 by default, but swerve code should add its own (0.05–0.10). If a stick drifts past your deadband, the controller hardware is worn — swap it; don't crank the deadband so high the robot feels numb.
Symptom C — field-relative points the wrong way after a bump or reboot. Cause: the gyro heading reference is wrong. Field-relative drive rotates joystick inputs by the gyro angle, so if zero isn't "downfield," everything is rotated. Fix: bind a gyro-reset button (driver.start().onTrue(drive.runOnce(drive::zeroHeading))) and press it while the robot faces directly downfield at match start. If heading drifts over a match, your gyro may need calibration time at boot (keep the robot still during robotInit) or a better-mounted IMU.
Diagnostic discipline: treat each of these as a one-variable experiment. Reproduce the symptom on blocks, form a specific hypothesis ("the Y axis sign is wrong"), make exactly one change, and re-test the same motion. Driving bugs feel mysterious because three small bugs at once produce chaos — but isolated, each one is trivial.
Prevent it: Write a 90-second pre-practice control check the drivers run every session: forward/back, left/right strafe, rotate both ways, slow mode, gyro reset facing downfield. If any axis is off, you catch it in the pit, not in a qualification match. The best drive teams treat the control scheme as flight-critical software and pre-flight it every single time.
Key takeaways
- Backwards driving is almost always a missing axis negation; fix one sign at a time and retest on blocks.
- Center-stick creep is solved with MathUtil.applyDeadband (0.05-0.10 for swerve); persistent drift past the deadband means worn hardware.
- Wrong field-relative direction is a gyro reference problem - bind a zero-heading button and press it facing downfield at match start.
Keep going
Take the quiz · +10 XP with an accountMore in Common Mistakes & Troubleshooting
Sources & corrections
This lesson is AI-assisted: drafted from primary sources, then reviewed and edited by hand. Errors still get through. When one is reported we fix it and write down what changed — publicly, in the corrections log.
Sources and further reading
- WPILib: Joystick & Controller Inputdocs.wpilib.org
- WPILib: Using the WPILib Classes to Drive your Robot (deadband)docs.wpilib.org
Read next
Articles on this, for competition day
The lesson covers how it works. These cover what to do when it breaks.
- 13 min read
FRC Swerve Module Offsets: Calibration & Backwards Wheels
Zero your FRC swerve module offsets correctly, and fix wheels that spin backwards, modules that fight each other, and field-relative drive that feels rotated.
Read - 15 min read
FRC Odometry and Pose Estimation: Field-Centric Control with WPILib
How an FRC robot tracks its field position with WPILib: wheel odometry vs pose estimation, gyro heading, fusing AprilTag vision, and field-centric driving.
Read - 13 min read
WPILib Won't Deploy: Every Cause and How to Fix It
Your WPILib deploy is failing? Work the decision tree: wrong folder in VS Code, team number, roboRIO image, JDK version, macOS network privacy. Fixes for each.
Read
Lesson quiz
RequiredAll 4 right completes the lesson. Miss one and only that question comes back — anything you already answered correctly stays banked.
0 of 4 answered
01.The robot's field-relative heading points the wrong way after a mid-match bump or a reboot. What is the underlying cause?
02.The robot creeps forward even when the driver's sticks are centered. What is the recommended fix?
03.Everything is backwards: pushing forward reverses the robot, and turning left turns it right. What single step should be tried first to correct it?
04.What diagnostic discipline is recommended for troubleshooting driving-feel issues like inversions and drift?
Answer every question to submit.
All 34 lessons in Drive Team
- Not started:Project 1: A Production-Ready Driver Control Scheme
- Not started:Project 2: A Drivetrain That Survives a Whole Match
- Not started:Project 3: Build a Paper + Spreadsheet Scouting System
- Not started:Project 4: Pull Live OPR & EPA Data with Python
- Not started:Project 5: The One-Page Pre-Match Strategy Brief