Press once.
The robot does the rest.
PedroPathing autonomy, Pinpoint odometry fused with an EKF, and a one-button auto-aim that computes heading, distance, RPM, and pitch on its own.
Why PedroPathing.
We plan paths with PedroPathing, generating smooth, predictable trajectories from Bézier curves. To simplify coding, we define paths for one side of the field only; on the other side the code mirrors every path and angle automatically, cutting the chance of error.
Compared with RoadRunner, PedroPathing supports real-time pose correction — the robot keeps adjusting heading and position while following a path, so even a mid-auto collision recovers onto the correct trajectory. It also exposes Bézier control points directly, so we build complex non-linear paths precisely, with a drag-and-drop online tool that renders the simulated run.
Always knows
where it is.
The swerve base runs three odometry pods and an IMU, fused through an Extended Kalman Filter for high-refresh, high-accuracy pose (x, y, θ) in both auto and teleop — the foundation for path following and auto-aim. Field-centric drive means the driver never tracks which way the robot faces.
We use a GoBILDA Pinpoint as the core localization module. Versus a hand-rolled encoder odometry, Pinpoint just needs the two perpendicular odometry-pod offsets at init, then solves pose in hardware and outputs global coordinates over I²C — simpler software, faster loop, quicker response.
Near and far.
AutoMain · near
AutoFar · far



Two drivers, one map.
Main driver owns the base; second driver owns intake and shooting. Functions are physically grouped — fire, assist, mode — so the layout stays readable mid-match.

The math behind
one button.
With the robot's live coordinates, the system computes the bearing to the target with atan2, compares it to current heading to get a heading error, and feeds a PID loop that rotates the base onto target — fast and smooth.
Once aligned, it reads the distance and looks up a calibrated flywheel-RPM model. We recorded twenty valid data points from 1.0–3.0 m — flywheel RPM, arc-plate angle, and hit result — pruned outliers, and fit trend lines into an empirical formula embedded directly in the turret controller.
Pitch comes from a projectile model with drag and height correction, solved with Newton–Raphson to back out the elevation for a required range. In TeleOp, the driver presses one button — the rest is automatic, freeing them to focus on field tactics.





Tuned for a shorter window.
Each swerve module gets its own steering PID, tuned to its friction, backlash, and load — so low-speed micro-moves, alignment, and lock are far steadier.
We moved from an external MA3 encoder (with a switch-point error that caused jitter) to four-wire servo internal feedback — continuous, stable angle for reliable closed-loop control.
A new power-distribution map keeps servos precise under varying load, and a minimum-start compensation on rotation commands kills both dead-zone stall and overshoot.
Encoder-based velocity closed-loop with an up-to-speed threshold and timed trigger/reset logic delivers a stable three-shot cadence with pitch travel protection.