Recently migrated to Python and the robot is currently going in circles. I think it has something to do with the CanCoders not being properly zero’d, but I’m really not sure. Mechanically it’s a swerve drive with CanCoders and SparkMaxes.
Here’s the GitHub with all of the swerve code:
According to these co-ordinates, your left modules are on the right, and vice versa.