14 template <
size_t NumModules>
16 frc::Trajectory trajectory, std::function<frc::Pose2d()> pose,
17 frc::SwerveDriveKinematics<NumModules> kinematics,
18 frc2::PIDController xController, frc2::PIDController yController,
19 frc::ProfiledPIDController<units::radians> thetaController,
20 std::function<frc::Rotation2d()> desiredRotation,
21 std::function<
void(std::array<frc::SwerveModuleState, NumModules>)> output,
22 std::initializer_list<Subsystem*> requirements)
23 : m_trajectory(
std::move(trajectory)),
24 m_pose(
std::move(pose)),
25 m_kinematics(kinematics),
26 m_controller(xController, yController, thetaController),
27 m_desiredRotation(
std::move(desiredRotation)),
28 m_outputStates(output)
30 this->AddRequirements(requirements);
33 template <
size_t NumModules>
35 frc::Trajectory trajectory, std::function<frc::Pose2d()> pose,
36 frc::SwerveDriveKinematics<NumModules> kinematics,
37 frc2::PIDController xController, frc2::PIDController yController,
38 frc::ProfiledPIDController<units::radians> thetaController,
39 std::function<
void(std::array<frc::SwerveModuleState, NumModules>)> output,
40 std::initializer_list<Subsystem*> requirements)
47 this->AddRequirements(requirements);
53 template <
size_t NumModules>
55 frc::Trajectory trajectory, std::function<frc::Pose2d()> pose,
56 frc::SwerveDriveKinematics<NumModules> kinematics,
57 frc2::PIDController xController, frc2::PIDController yController,
58 frc::ProfiledPIDController<units::radians> thetaController,
59 std::function<frc::Rotation2d()> desiredRotation,
60 std::function<
void(std::array<frc::SwerveModuleState, NumModules>)> output,
61 wpi::ArrayRef<Subsystem*> requirements)
69 this->AddRequirements(requirements);
72 template <
size_t NumModules>
74 frc::Trajectory trajectory, std::function<frc::Pose2d()> pose,
75 frc::SwerveDriveKinematics<NumModules> kinematics,
76 frc2::PIDController xController, frc2::PIDController yController,
77 frc::ProfiledPIDController<units::radians> thetaController,
78 std::function<
void(std::array<frc::SwerveModuleState, NumModules>)> output,
79 wpi::ArrayRef<Subsystem*> requirements)
86 this->AddRequirements(requirements);
92 template <
size_t NumModules>
98 template <
size_t NumModules>
100 auto curTime = units::second_t(
m_timer.Get());
104 auto targetChassisSpeeds =
m_controller.Calculate(
m_pose(), m_desiredState, m_desiredState.pose.Rotation());
112 auto targetModuleStates =
m_kinematics.ToSwerveModuleStates(targetChassisSpeeds);
117 template <
size_t NumModules>
122 template <
size_t NumModules>
frc::HolonomicDriveController m_controller
std::function< void(std::array< frc::SwerveModuleState, NumModules >)> m_outputStates
std::function< frc::Pose2d()> m_pose
void Initialize() override
std::function< frc::Rotation2d()> m_desiredRotation
bool IsFinished() override
SwerveControllerCommand2(frc::Trajectory trajectory, std::function< frc::Pose2d()> pose, frc::SwerveDriveKinematics< NumModules > kinematics, frc2::PIDController xController, frc2::PIDController yController, frc::ProfiledPIDController< units::radians > thetaController, std::function< frc::Rotation2d()> desiredRotation, std::function< void(std::array< frc::SwerveModuleState, NumModules >)> output, std::initializer_list< Subsystem * > requirements)
frc::Trajectory m_trajectory
void End(bool interrupted) override
frc::SwerveDriveKinematics< NumModules > m_kinematics