10 #include <frc/Encoder.h> 11 #include <frc/geometry/Pose2d.h> 12 #include <frc/geometry/Rotation2d.h> 13 #include <frc/kinematics/ChassisSpeeds.h> 14 #include <frc/kinematics/SwerveDriveKinematics.h> 15 #include <frc/kinematics/SwerveDriveOdometry.h> 16 #include <frc/SmartDashBoard/SmartDashboard.h> 17 #include <frc2/command/SubsystemBase.h> 19 #include <ctre/phoenix/CANifier.h> 51 void Periodic()
override;
64 void Drive(meters_per_second_t xSpeed, meters_per_second_t ySpeed, radians_per_second_t rot,
bool fieldRelative);
73 void RotationDrive(meters_per_second_t xSpeed, meters_per_second_t ySpeed, radian_t rot,
bool fieldRelative);
83 void RotationDrive(meters_per_second_t xSpeed, meters_per_second_t ySpeed,
double xRot,
double yRot,
bool fieldRelative);
92 void HeadingDrive(meters_per_second_t xSpeed, meters_per_second_t ySpeed, radians_per_second_t rot,
bool fieldRelative);
95 void UpdateLastHeading();
112 double PWMToPulseWidth(CANifier::PWMChannel pwmChannel);
116 void ResetOdometry(Pose2d pose);
119 void WheelsForward();
122 void ResetRelativeToAbsolute();
125 SwerveDriveKinematics<kNumSwerveModules> kDriveKinematics{
136 m_frontLeft.GetState(),
137 m_frontRight.GetState(),
138 m_rearLeft.GetState(),
139 m_rearRight.GetState()
158 SwerveDriveOdometry<DriveConstants::kNumSwerveModules>
m_odometry;
161 frc2::PIDController m_rotationPIDController{
ModuleLocation
< Order as returned by kDriveKinematics.ToSwerveModuleStates
constexpr double kRotationDriveI
constexpr double kRotationDriveD
constexpr meter_t kTrackWidth
Distance between centers of left and right wheels on robot.
SwerveDriveOdometry< DriveConstants::kNumSwerveModules > m_odometry
Odometry class for tracking robot pose.
CANifier m_canifier
Reads the absolute encoder pulse widths.
SwerveModule m_frontRight
wpi::array< SwerveModuleState, DriveConstants::kNumSwerveModules > SwerveModuleStates
Readable alias for array of swerve modules.
double m_lastHeading
Last maintained heading, used for HeadingDrive.
SwerveModuleStates getCurrentWheelSpeeds()
Get all 4 swerve module wheel speed to update the odometry with.
Gyro * m_gyro
Gyro to determine field relative driving, from RobotContainer.
constexpr meter_t kWheelBase
Distance between centers of front and back wheels on robot.
constexpr double kRotationDriveP
bool m_rotationalInput
Whether or not rotation input was provided, used for HeadingDrive.