@@ -62,7 +62,7 @@ public SwerveDrive(Gyro gyro, SwerveModule... swerveModules) {
6262 maxSpeedMetersPerSecond = swerveModules [0 ].getMaxSpeedMetersPerSecond ();
6363
6464 kinematics = new SwerveDriveKinematics (translation2ds );
65- odometry = new SwerveDriveOdometry (kinematics , gyro .getRotation2d ());
65+ odometry = new SwerveDriveOdometry (kinematics , gyro .getRotation2d (). rotateBy ( gyroOffset ) );
6666 }
6767
6868 /**
@@ -103,7 +103,7 @@ public Pose2d getPoseMeters() {
103103 * @return the Rotation2d of the robot relative to gyro zero
104104 */
105105 public Rotation2d getHeading () {
106- return gyro .getRotation2d ();
106+ return hasGyroOffset ? gyro . getRotation2d (). rotateBy ( gyroOffset ) : gyro .getRotation2d ();
107107 }
108108
109109 /**
@@ -115,7 +115,8 @@ public Rotation2d getHeading() {
115115 *
116116 * @return the current heading in degrees of the robot relative to gyro zero
117117 */
118- public double getGyroAngle () {
118+ double getGyroAngle () {
119+ // FIXME: does not have gyro offset
119120 return gyro .getAngle ();
120121 }
121122
@@ -146,7 +147,9 @@ public Rotation2d getGyroOffset() {
146147 * @param gyroOffset the desired offset
147148 */
148149 public void setGyroOffset (Rotation2d gyroOffset ) {
149- if (this .gyroOffset .equals (gyroOffset )) return ;
150+ if (this .gyroOffset .equals (gyroOffset )) {
151+ return ;
152+ }
150153 this .gyroOffset = gyroOffset ;
151154 hasGyroOffset = true ;
152155 }
@@ -167,7 +170,7 @@ public SwerveModule[] getSwerveModules() {
167170 * @param pose The robot's actual position on the field.
168171 */
169172 public void resetOdometry (Pose2d pose ) {
170- odometry .resetPosition (pose , gyro .getRotation2d ());
173+ odometry .resetPosition (pose , gyro .getRotation2d (). rotateBy ( gyroOffset ) );
171174 }
172175
173176 /** Resets the drive encoders to currently read a position of 0. */
@@ -188,7 +191,7 @@ public void resetGyro() {
188191 */
189192 public void periodic () {
190193 odometry .update (
191- gyro .getRotation2d (),
194+ hasGyroOffset ? gyro . getRotation2d (). rotateBy ( gyroOffset ) : gyro .getRotation2d (),
192195 swerveModules [0 ].getState (),
193196 swerveModules [1 ].getState (),
194197 swerveModules [2 ].getState (),
0 commit comments