103 wpi::units::degree_t tippingThreshold,
104 wpi::units::meters_per_second_t maxCorrectionSpeed);
132 std::function<wpi::units::degrees_per_second_t()> angularVelocitySupplier);
166 wpi::units::degrees_per_second_t angularVelocity);
372 wpi::math::ChassisVelocities speeds)
const;
388 std::optional<std::reference_wrapper<wpi::math::PIDController>>
GetRotationPID();
391 static wpi::math::Translation2d
CubeTranslation(wpi::math::Translation2d translation);
398 std::vector<SwerveModule*> m_modules;
399 wpi::cmd::SubsystemBase* m_subsystem{
nullptr};
400 std::string m_telemetryName{
"swerve"};
401 std::optional<TelemetryVerbosity> m_telemetryVerbosity;
402 std::optional<telemetry::SwerveDriveTelemetryConfig> m_specifiedTelemetryConfig;
403 std::optional<std::function<wpi::math::Rotation3d()>> m_gyroSupplier;
406 mutable double m_continuousHeadingRadians{0};
407 mutable bool m_continuousHeadingRead{
false};
408 mutable math::DerivativeTimeFilter m_gyroAngularVelocityFilter{wpi::units::millisecond_t{20}};
409 mutable std::optional<wpi::util::Alert> m_noGyroAngularVelocitySupplierAlert;
410 std::optional<std::function<wpi::units::degrees_per_second_t()>> m_gyroAngularVelocitySupplier;
411 std::optional<wpi::units::degree_t> m_gyroOffset;
412 bool m_gyroInverted{
false};
413 wpi::math::Pose2d m_initialPose;
414 std::optional<wpi::units::meters_per_second_t> m_maximumChassisLinearVelocity;
415 std::optional<wpi::units::degrees_per_second_t> m_maximumChassisAngularVelocity;
416 std::optional<wpi::units::meters_per_second_t> m_maximumModuleLinearVelocity;
417 std::optional<bool> m_moduleStateOptimization;
418 std::optional<wpi::math::AntiTipping> m_antiTipping;
419 std::optional<wpi::units::second_t> m_discretizationSeconds;
420 std::optional<wpi::units::second_t> m_simDiscretizationSeconds;
421 std::optional<double> m_angularVelocityScaleFactor;
422 std::optional<double> m_simAngularVelocityScaleFactor;
423 std::optional<wpi::math::Translation2d> m_centerOfRotation;
424 std::optional<wpi::math::PIDController> m_translationController;
425 std::optional<wpi::math::PIDController> m_rotationController;
426 std::optional<wpi::math::PIDController> m_simTranslationController;
427 std::optional<wpi::math::PIDController> m_simRotationController;
429 wpi::math::ChassisVelocities AngularVelocitySkewCorrection(
430 wpi::math::ChassisVelocities robotRelativeSpeeds)
const;