Skip to content

Commit 18ee516

Browse files
committed
bug fixes for 2023
1 parent 830a9a4 commit 18ee516

7 files changed

Lines changed: 43 additions & 242 deletions

File tree

src/main/java/org/carlmontrobotics/lib199/OmniDrive.java

Lines changed: 0 additions & 225 deletions
This file was deleted.

src/main/java/org/carlmontrobotics/lib199/path/DifferentialDriveInterface.java

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,16 @@ public interface DifferentialDriveInterface extends DrivetrainInterface {
6060
*/
6161
public void setOdometry(DifferentialDriveOdometry odometry);
6262

63+
/**
64+
* @return The left encoder position in meters
65+
*/
66+
public double getLeftEncoderPosition();
67+
68+
/**
69+
* @return The right encoder position in meters
70+
*/
71+
public double getRightEncoderPosition();
72+
6373
/**
6474
* Creates Ramsete Controller
6575
*
@@ -105,14 +115,13 @@ public default Command createAutoCommand(Trajectory trajectory, Supplier<Rotatio
105115
}
106116

107117
/**
108-
* Sets odometry based on current gyro angle and pose
118+
* Sets odometry to the specified pose
109119
*
110-
* @param gyroAngle The angle reported by the gyroscope.
111120
* @param initialPose The starting position of the robot on the field.
112121
*/
113122
@Override
114-
public default void setOdometry(Rotation2d gyroAngle, Pose2d initialPose) {
115-
setOdometry(new DifferentialDriveOdometry(gyroAngle, initialPose));
123+
public default void setOdometry(Pose2d initialPose) {
124+
setOdometry(new DifferentialDriveOdometry(Rotation2d.fromDegrees(getHeadingDeg()), getLeftEncoderPosition(), getRightEncoderPosition(), initialPose));
116125
}
117126

118127
}

src/main/java/org/carlmontrobotics/lib199/path/DrivetrainInterface.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,12 +50,11 @@ public interface DrivetrainInterface extends Subsystem {
5050
public double getHeadingDeg();
5151

5252
/**
53-
* Sets odometry based on current gyro angle and pose
53+
* Sets odometry to the specified pose
5454
*
55-
* @param gyroAngle The angle reported by the gyroscope.
5655
* @param initialPose The starting position of the robot on the field.
5756
*/
58-
public void setOdometry(Rotation2d gyroAngle, Pose2d initialPose);
57+
public void setOdometry(Pose2d initialPose);
5958

6059
/**
6160
* Stops the drivetrain

src/main/java/org/carlmontrobotics/lib199/path/RobotPath.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,15 @@
1515
import org.apache.commons.csv.CSVParser;
1616
import org.apache.commons.csv.CSVRecord;
1717

18-
import edu.wpi.first.wpilibj.Filesystem;
19-
import edu.wpi.first.wpilibj.Timer;
20-
import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard;
2118
import edu.wpi.first.math.geometry.Pose2d;
2219
import edu.wpi.first.math.geometry.Rotation2d;
2320
import edu.wpi.first.math.geometry.Translation2d;
2421
import edu.wpi.first.math.trajectory.Trajectory;
2522
import edu.wpi.first.math.trajectory.TrajectoryConfig;
2623
import edu.wpi.first.math.trajectory.TrajectoryGenerator;
24+
import edu.wpi.first.wpilibj.Filesystem;
25+
import edu.wpi.first.wpilibj.Timer;
26+
import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard;
2727
import edu.wpi.first.wpilibj2.command.Command;
2828
import edu.wpi.first.wpilibj2.command.InstantCommand;
2929

@@ -107,7 +107,7 @@ public void initializeDrivetrainPosition() {
107107
if (trajectory == null) {
108108
generateTrajectory();
109109
}
110-
dt.setOdometry(Rotation2d.fromDegrees(dt.getHeadingDeg()), trajectory.getInitialPose());
110+
dt.setOdometry(trajectory.getInitialPose());
111111
}
112112

113113
/**

src/main/java/org/carlmontrobotics/lib199/path/SwerveDriveInterface.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import edu.wpi.first.math.geometry.Rotation2d;
99
import edu.wpi.first.math.kinematics.SwerveDriveKinematics;
1010
import edu.wpi.first.math.kinematics.SwerveDriveOdometry;
11+
import edu.wpi.first.math.kinematics.SwerveModulePosition;
1112
import edu.wpi.first.math.kinematics.SwerveModuleState;
1213
import edu.wpi.first.math.trajectory.Trajectory;
1314
import edu.wpi.first.math.trajectory.TrajectoryConfig;
@@ -55,6 +56,11 @@ public interface SwerveDriveInterface extends DrivetrainInterface {
5556
*/
5657
public void setOdometry(SwerveDriveOdometry odometry);
5758

59+
/**
60+
* @return The current positions of the swerve modules
61+
*/
62+
public SwerveModulePosition[] getModulePositions();
63+
5864
/**
5965
* Configures the constants for generating a trajectory
6066
*
@@ -95,14 +101,13 @@ public default Command createAutoCommand(Trajectory trajectory, Supplier<Rotatio
95101
}
96102

97103
/**
98-
* Sets odometry based on current kinematics, gyro angle, and pose
104+
* Sets odometry to the specified pose
99105
*
100-
* @param gyroAngle The angle reported by the gyroscope.
101106
* @param initialPose The starting position of the robot on the field.
102107
*/
103108
@Override
104-
public default void setOdometry(Rotation2d gyroAngle, Pose2d initialPose) {
105-
setOdometry(new SwerveDriveOdometry(getKinematics(), gyroAngle, initialPose));
109+
public default void setOdometry(Pose2d initialPose) {
110+
setOdometry(new SwerveDriveOdometry(getKinematics(), Rotation2d.fromDegrees(getHeadingDeg()), getModulePositions(), initialPose));
106111
}
107112

108113
}

src/main/java/org/carlmontrobotics/lib199/SwerveConfig.java renamed to src/main/java/org/carlmontrobotics/lib199/swerve/SwerveConfig.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.carlmontrobotics.lib199;
1+
package org.carlmontrobotics.lib199.swerve;
22

33
public final class SwerveConfig {
44

src/main/java/org/carlmontrobotics/lib199/SwerveModule.java renamed to src/main/java/org/carlmontrobotics/lib199/swerve/SwerveModule.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.carlmontrobotics.lib199;
1+
package org.carlmontrobotics.lib199.swerve;
22

33
import java.util.function.Supplier;
44

@@ -12,6 +12,7 @@
1212
import edu.wpi.first.math.controller.ProfiledPIDController;
1313
import edu.wpi.first.math.controller.SimpleMotorFeedforward;
1414
import edu.wpi.first.math.geometry.Rotation2d;
15+
import edu.wpi.first.math.kinematics.SwerveModulePosition;
1516
import edu.wpi.first.math.kinematics.SwerveModuleState;
1617
import edu.wpi.first.math.trajectory.TrapezoidProfile;
1718
import edu.wpi.first.wpilibj.Timer;
@@ -242,6 +243,18 @@ public SwerveModuleState getCurrentState() {
242243
return new SwerveModuleState(getCurrentSpeed(), Rotation2d.fromDegrees(getModuleAngle()));
243244
}
244245

246+
/**
247+
* Gets the current position (distance and angle) of this module.
248+
* @return A SwerveModulePosition object representing the distance and angle of the module.
249+
*/
250+
public SwerveModulePosition getCurrentPosition() {
251+
return new SwerveModulePosition(getCurrentDistance(), Rotation2d.fromDegrees(getModuleAngle()));
252+
}
253+
254+
public double getCurrentDistance() {
255+
return drive.getEncoder().getPosition();
256+
}
257+
245258
public double getCurrentSpeed() {
246259
return drive.getEncoder().getVelocity();
247260
}

0 commit comments

Comments
 (0)