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.