ThunderLib
Loading...
Searching...
No Matches
TrajectoryRunnerProperties.hpp
1#pragma once
2
3#include <ThunderLib/Types/CanonicalAngle.hpp>
4#include <frc/controller/HolonomicDriveController.h>
5#include <frc/geometry/Pose2d.h>
6#include <frc/kinematics/ChassisSpeeds.h>
7#include <functional>
8#include <memory>
9
10namespace thunder {
11
17 frc::Pose2d currentPose;
18 frc::Pose2d targetPose;
19 CanonicalAngle heading;
20 units::meters_per_second_t linearVelocity;
21 };
22
23 using GetPoseFunc = std::function<frc::Pose2d()>;
24 using ResetPoseFunc = std::function<void(const frc::Pose2d&)>;
25 using GetSpeedsFunc = std::function<frc::ChassisSpeeds()>;
26 using SetSpeedsFunc = std::function<void(const frc::ChassisSpeeds&)>;
27 using SetSpeedsWithDiagnosticsFunc =
28 std::function<void(const frc::ChassisSpeeds&, const DriveControllerInputData&)>;
29 using ControlFunc = std::function<void(const DriveControllerInputData&)>;
30 using StopFunc = std::function<void()>;
31
35 const GetPoseFunc getPose = nullptr;
36
42 const ResetPoseFunc resetPose = nullptr;
43
49 const SetSpeedsFunc setSpeeds = nullptr;
50
56 const SetSpeedsWithDiagnosticsFunc setSpeedsWithDiagnostics = nullptr;
57
64 const std::shared_ptr<frc::HolonomicDriveController> controller = nullptr;
65
69 const ControlFunc control = nullptr;
70
74 const StopFunc stop = nullptr;
75
86 TrajectoryRunnerProperties(GetPoseFunc getPoseFunc,
87 ResetPoseFunc resetPoseFunc,
88 SetSpeedsFunc setSpeedsFunc,
89 std::shared_ptr<frc::HolonomicDriveController> holonomicDriveController)
90 : getPose(std::move(getPoseFunc)),
91 resetPose(std::move(resetPoseFunc)),
92 setSpeeds(std::move(setSpeedsFunc)),
93 controller(std::move(holonomicDriveController)) {}
94
106 TrajectoryRunnerProperties(GetPoseFunc getPoseFunc,
107 ResetPoseFunc resetPoseFunc,
108 SetSpeedsWithDiagnosticsFunc setSpeedsWithDiagnosticsFunc,
109 std::shared_ptr<frc::HolonomicDriveController> holonomicDriveController)
110 : getPose(std::move(getPoseFunc)),
111 resetPose(std::move(resetPoseFunc)),
112 setSpeedsWithDiagnostics(std::move(setSpeedsWithDiagnosticsFunc)),
113 controller(std::move(holonomicDriveController)) {}
114
126 TrajectoryRunnerProperties(GetPoseFunc getPose, ResetPoseFunc resetPose, ControlFunc control, StopFunc stop)
127 : getPose(std::move(getPose)),
128 resetPose(std::move(resetPose)),
129 control(std::move(control)),
130 stop(std::move(stop)) {}
131
132 bool isValid() const {
133 if (getPose == nullptr)
134 return false;
135
136 if (setSpeeds != nullptr || setSpeedsWithDiagnostics != nullptr) {
137 if (controller == nullptr)
138 return false;
139 } else {
140 return control != nullptr && stop != nullptr;
141 }
142
143 return true;
144 }
145
146 explicit operator bool() const { return isValid(); }
147};
148
149} // namespace thunder
Definition CanonicalAngle.hpp:16
Definition TrajectoryRunnerProperties.hpp:16
Definition TrajectoryRunnerProperties.hpp:15
const std::shared_ptr< frc::HolonomicDriveController > controller
Definition TrajectoryRunnerProperties.hpp:64
TrajectoryRunnerProperties(GetPoseFunc getPoseFunc, ResetPoseFunc resetPoseFunc, SetSpeedsWithDiagnosticsFunc setSpeedsWithDiagnosticsFunc, std::shared_ptr< frc::HolonomicDriveController > holonomicDriveController)
Definition TrajectoryRunnerProperties.hpp:106
const StopFunc stop
Definition TrajectoryRunnerProperties.hpp:74
const SetSpeedsFunc setSpeeds
Definition TrajectoryRunnerProperties.hpp:49
TrajectoryRunnerProperties(GetPoseFunc getPoseFunc, ResetPoseFunc resetPoseFunc, SetSpeedsFunc setSpeedsFunc, std::shared_ptr< frc::HolonomicDriveController > holonomicDriveController)
Definition TrajectoryRunnerProperties.hpp:86
const SetSpeedsWithDiagnosticsFunc setSpeedsWithDiagnostics
Definition TrajectoryRunnerProperties.hpp:56
const ResetPoseFunc resetPose
Definition TrajectoryRunnerProperties.hpp:42
const ControlFunc control
Definition TrajectoryRunnerProperties.hpp:69
TrajectoryRunnerProperties(GetPoseFunc getPose, ResetPoseFunc resetPose, ControlFunc control, StopFunc stop)
Definition TrajectoryRunnerProperties.hpp:126
const GetPoseFunc getPose
Definition TrajectoryRunnerProperties.hpp:35