Logo
Overview

WPILib's Coordinate System

Angad Tendulkar Angad Tendulkar
May 20, 2025
1 min read

I really want to know—WPI—what the fuck is this

That. makes. no. sense. For those who don’t know, this is not how 3d coordinate systems are found in the wild. This is the standard system literally everyone else uses This makes sense. This is how it should be. But WPILib had to be it’s own special snowflake.

Controller Mappings

I find this really funny. In WPILib’s coordinate system, left is +Yw+Y_w, up is +Xw+X_w (I’m using w{}_w to denote WPILib, and c{}_c to denote controllers). However, with controllers, right is +Xc+X_c and down is +Yc+Y_c. Additionally, WPILib’s rotation system is backwards. So to convert between controller power and WPILib’s coordinate system, you say that

convert(double controller_x, double controller_y, double controller_rot) {
return Tuple3(-controller_y, -controller_x, -controller_rot);
}

Literally negating everything.