Skip to content

Commit f9c33fb

Browse files
committed
Apply gyro offset to odometry
1 parent 6e2c4a3 commit f9c33fb

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

src/main/java/org/strykeforce/swerve/SwerveDrive.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)