3#include <frc/controller/PIDController.h>
4#include <frc/controller/ProfiledPIDController.h>
5#include <units/velocity.h>
6#include <units/length.h>
8#include <units/angular_velocity.h>
9#include <frc/geometry/Translation2d.h>
10#include <frc/geometry/Rotation2d.h>
11#include <frc/geometry/Pose2d.h>
12#include <frc/kinematics/ChassisSpeeds.h>
15#include "pathplanner/lib/util/GeometryUtil.h"
16#include "pathplanner/lib/config/PIDConstants.h"
17#include "pathplanner/lib/trajectory/PathPlannerTrajectory.h"
18#include "pathplanner/lib/controllers/PathFollowingController.h"
20namespace pathplanner {
31 PIDConstants rotationConstants, units::second_t period = 0.02_s);
43 inline void reset(
const frc::Pose2d ¤tPose,
44 const frc::ChassisSpeeds ¤tSpeeds)
override {
45 m_xController.Reset();
46 m_yController.Reset();
47 m_rotationController.Reset();
56 return m_translationError.Norm();
67 const frc::Pose2d ¤tPose,
86 [[deprecated(
"Use overrideRotationFeedback instead, with the output of your own PID controller")]]
88 std::function<std::optional<frc::Rotation2d>()> rotationTargetOverride) {
89 PPHolonomicDriveController::rotationTargetOverride =
90 rotationTargetOverride;
99 std::function<units::meters_per_second_t()> xFeedbackOverride) {
100 PPHolonomicDriveController::xFeedbackOverride = xFeedbackOverride;
108 PPHolonomicDriveController::xFeedbackOverride = { };
117 std::function<units::meters_per_second_t()> yFeedbackOverride) {
118 PPHolonomicDriveController::yFeedbackOverride = yFeedbackOverride;
126 PPHolonomicDriveController::yFeedbackOverride = { };
136 std::function<units::meters_per_second_t()> xFeedbackOverride,
137 std::function<units::meters_per_second_t()> yFeedbackOverride) {
157 std::function<units::radians_per_second_t()> rotationFeedbackOverride) {
158 PPHolonomicDriveController::rotationFeedbackOverride =
159 rotationFeedbackOverride;
167 PPHolonomicDriveController::rotationFeedbackOverride = { };
177 frc::PIDController m_xController;
178 frc::PIDController m_yController;
179 frc::PIDController m_rotationController;
181 frc::Translation2d m_translationError;
182 bool m_enabled =
true;
184 static std::function<std::optional<frc::Rotation2d>()> rotationTargetOverride;
186 static std::function<units::meters_per_second_t()> xFeedbackOverride;
187 static std::function<units::meters_per_second_t()> yFeedbackOverride;
188 static std::function<units::radians_per_second_t()> rotationFeedbackOverride;
Definition: PIDConstants.h:4
Definition: PPHolonomicDriveController.h:21
void reset(const frc::Pose2d ¤tPose, const frc::ChassisSpeeds ¤tSpeeds) override
Definition: PPHolonomicDriveController.h:43
static void setRotationTargetOverride(std::function< std::optional< frc::Rotation2d >()> rotationTargetOverride)
Definition: PPHolonomicDriveController.h:87
static void clearYFeedbackOverride()
Definition: PPHolonomicDriveController.h:125
static void overrideXFeedback(std::function< units::meters_per_second_t()> xFeedbackOverride)
Definition: PPHolonomicDriveController.h:98
frc::ChassisSpeeds calculateRobotRelativeSpeeds(const frc::Pose2d ¤tPose, const PathPlannerTrajectoryState &referenceState) override
Definition: PPHolonomicDriveController.cpp:28
static void clearFeedbackOverrides()
Definition: PPHolonomicDriveController.h:171
units::meter_t getPositionalError() override
Definition: PPHolonomicDriveController.h:55
static void overrideXYFeedback(std::function< units::meters_per_second_t()> xFeedbackOverride, std::function< units::meters_per_second_t()> yFeedbackOverride)
Definition: PPHolonomicDriveController.h:135
static void overrideYFeedback(std::function< units::meters_per_second_t()> yFeedbackOverride)
Definition: PPHolonomicDriveController.h:116
bool isHolonomic() override
Definition: PPHolonomicDriveController.h:76
static void clearXYFeedbackOverride()
Definition: PPHolonomicDriveController.h:146
static void overrideRotationFeedback(std::function< units::radians_per_second_t()> rotationFeedbackOverride)
Definition: PPHolonomicDriveController.h:156
static void clearRotationFeedbackOverride()
Definition: PPHolonomicDriveController.h:166
static void clearXFeedbackOverride()
Definition: PPHolonomicDriveController.h:107
constexpr void setEnabled(bool enabled)
Definition: PPHolonomicDriveController.h:39
Definition: PathFollowingController.h:9
Definition: PathPlannerTrajectoryState.h:17