44 : m_feedforward(feedforward),
45 m_kinematics(
std::move(kinematics)),
46 m_maxVoltage(maxVoltage) {}
50 units::meters_per_second_t velocity)
const override {
51 return units::meters_per_second_t{std::numeric_limits<double>::max()};
56 units::meters_per_second_t speed)
const override {
58 m_kinematics.ToWheelSpeeds({speed, 0_mps, speed * curvature});
60 auto maxWheelSpeed = (std::max)(wheelSpeeds.left, wheelSpeeds.right);
61 auto minWheelSpeed = (std::min)(wheelSpeeds.left, wheelSpeeds.right);
65 auto maxWheelAcceleration =
66 m_feedforward.MaxAchievableAcceleration(m_maxVoltage, maxWheelSpeed);
67 auto minWheelAcceleration =
68 m_feedforward.MinAchievableAcceleration(m_maxVoltage, minWheelSpeed);
87 units::meters_per_second_squared_t maxChassisAcceleration;
88 units::meters_per_second_squared_t minChassisAcceleration;
91 maxChassisAcceleration =
92 maxWheelAcceleration /
94 minChassisAcceleration =
95 minWheelAcceleration /
98 maxChassisAcceleration =
99 maxWheelAcceleration /
102 minChassisAcceleration =
103 minWheelAcceleration /
116 minChassisAcceleration = -minChassisAcceleration;
117 }
else if (speed < 0_mps) {
118 maxChassisAcceleration = -maxChassisAcceleration;
122 return {minChassisAcceleration, maxChassisAcceleration};
128 units::volt_t m_maxVoltage;
#define WPILIB_DLLEXPORT
Definition SymbolExports.h:36
Helper class that converts a chassis velocity (dx and dtheta components) to left and right wheel velo...
Definition DifferentialDriveKinematics.h:31
A class that enforces constraints on differential drive voltage expenditure based on the motor dynami...
Definition DifferentialDriveVoltageConstraint.h:29
constexpr DifferentialDriveVoltageConstraint(const SimpleMotorFeedforward< units::meter > &feedforward, DifferentialDriveKinematics kinematics, units::volt_t maxVoltage)
Creates a new DifferentialDriveVoltageConstraint.
Definition DifferentialDriveVoltageConstraint.h:41
constexpr units::meters_per_second_t MaxVelocity(const Pose2d &pose, units::curvature_t curvature, units::meters_per_second_t velocity) const override
Returns the max velocity given the current pose and curvature.
Definition DifferentialDriveVoltageConstraint.h:48
constexpr MinMax MinMaxAcceleration(const Pose2d &pose, units::curvature_t curvature, units::meters_per_second_t speed) const override
Returns the minimum and maximum allowable acceleration for the trajectory given pose,...
Definition DifferentialDriveVoltageConstraint.h:54
Represents a 2D pose containing translational and rotational elements.
Definition Pose2d.h:28
A helper class that computes feedforward voltages for a simple permanent-magnet DC motor.
Definition SimpleMotorFeedforward.h:24
An interface for defining user-defined velocity and acceleration constraints while generating traject...
Definition TrajectoryConstraint.h:21
constexpr UnitType abs(const UnitType x) noexcept
Compute absolute value.
Definition math.h:726
Implement std::hash so that hash_code can be used in STL containers.
Definition PointerIntPair.h:280
constexpr int sgn(T val)
Definition MathExtras.h:758
Represents a minimum and maximum acceleration.
Definition TrajectoryConstraint.h:37