17#include "wpi/units/angle.hpp"
18#include "wpi/units/length.hpp"
31 :
public Kinematics<DifferentialDriveWheelPositions,
32 DifferentialDriveWheelVelocities,
33 DifferentialDriveWheelAccelerations> {
45 if (!std::is_constant_evaluated()) {
61 (wheelVelocities.
left + wheelVelocities.
right) / 2.0, 0_mps,
77 chassisVelocities.
vx +
90 const wpi::units::meter_t rightDistance)
const {
91 return {(leftDistance + rightDistance) / 2, 0_m,
92 (rightDistance - leftDistance) /
trackwidth * 1_rad};
104 return start.Interpolate(end, t);
110 return {(wheelAccelerations.
left + wheelAccelerations.
right) / 2.0,
118 return {chassisAccelerations.
ax -
120 chassisAccelerations.
ax +
#define WPILIB_DLLEXPORT
Definition SymbolExports.hpp:36
constexpr DifferentialDriveWheelAccelerations ToWheelAccelerations(const ChassisAccelerations &chassisAccelerations) const override
Performs inverse kinematics to return the wheel accelerations from a desired chassis acceleration.
Definition DifferentialDriveKinematics.hpp:116
constexpr DifferentialDriveWheelPositions Interpolate(const DifferentialDriveWheelPositions &start, const DifferentialDriveWheelPositions &end, double t) const override
Performs interpolation between two values.
Definition DifferentialDriveKinematics.hpp:101
constexpr ChassisAccelerations ToChassisAccelerations(const DifferentialDriveWheelAccelerations &wheelAccelerations) const override
Performs forward kinematics to return the resulting chassis accelerations from the wheel acceleration...
Definition DifferentialDriveKinematics.hpp:107
constexpr Twist2d ToTwist2d(const wpi::units::meter_t leftDistance, const wpi::units::meter_t rightDistance) const
Returns a twist from left and right distance deltas using forward kinematics.
Definition DifferentialDriveKinematics.hpp:89
wpi::units::meter_t trackwidth
Differential drive trackwidth.
Definition DifferentialDriveKinematics.hpp:125
constexpr Twist2d ToTwist2d(const DifferentialDriveWheelPositions &start, const DifferentialDriveWheelPositions &end) const override
Performs forward kinematics to return the resulting Twist2d from the given change in wheel positions.
Definition DifferentialDriveKinematics.hpp:95
constexpr DifferentialDriveKinematics(wpi::units::meter_t trackwidth)
Constructs a differential drive kinematics object.
Definition DifferentialDriveKinematics.hpp:43
constexpr DifferentialDriveWheelVelocities ToWheelVelocities(const ChassisVelocities &chassisVelocities) const override
Returns left and right component velocities from a chassis velocity using inverse kinematics.
Definition DifferentialDriveKinematics.hpp:73
constexpr ChassisVelocities ToChassisVelocities(const DifferentialDriveWheelVelocities &wheelVelocities) const override
Returns a chassis velocity from left and right component velocities using forward kinematics.
Definition DifferentialDriveKinematics.hpp:58
Helper class that converts a chassis velocity (dx, dy, and dtheta components) into individual wheel v...
Definition Kinematics.hpp:26
static void ReportUsage(std::string_view resource, std::string_view data)
Definition MathShared.hpp:61
Definition LinearSystem.hpp:20
Represents robot chassis accelerations.
Definition ChassisAccelerations.hpp:21
units::meters_per_second_squared_t ax
Acceleration along the x-axis.
Definition ChassisAccelerations.hpp:25
units::radians_per_second_squared_t alpha
Angular acceleration of the robot frame.
Definition ChassisAccelerations.hpp:35
Represents robot chassis velocities.
Definition ChassisVelocities.hpp:26
wpi::units::meters_per_second_t vx
Velocity along the x-axis.
Definition ChassisVelocities.hpp:30
wpi::units::radians_per_second_t omega
Represents the angular velocity of the robot frame.
Definition ChassisVelocities.hpp:40
Represents the wheel accelerations for a differential drive drivetrain.
Definition DifferentialDriveWheelAccelerations.hpp:14
units::meters_per_second_squared_t left
Acceleration of the left side of the robot.
Definition DifferentialDriveWheelAccelerations.hpp:18
units::meters_per_second_squared_t right
Acceleration of the right side of the robot.
Definition DifferentialDriveWheelAccelerations.hpp:23
Represents the wheel positions for a differential drive drivetrain.
Definition DifferentialDriveWheelPositions.hpp:15
wpi::units::meter_t left
Distance driven by the left side.
Definition DifferentialDriveWheelPositions.hpp:19
wpi::units::meter_t right
Distance driven by the right side.
Definition DifferentialDriveWheelPositions.hpp:24
Represents the wheel velocities for a differential drive drivetrain.
Definition DifferentialDriveWheelVelocities.hpp:15
wpi::units::meters_per_second_t right
Velocity of the right side of the robot.
Definition DifferentialDriveWheelVelocities.hpp:24
wpi::units::meters_per_second_t left
Velocity of the left side of the robot.
Definition DifferentialDriveWheelVelocities.hpp:19
A change in distance along a 2D arc since the last pose update.
Definition Twist2d.hpp:23