32 std::shared_ptr<ThunderAutoProject> project,
34 bool shouldResetPose =
true);
38 explicit operator bool()
const {
return isValid(); }
40 void Initialize()
override;
41 void Execute()
override;
42 void End(
bool interrupted)
override;
43 bool IsFinished()
override;
46 std::unique_ptr<ThunderAutoTrajectory> m_trajectory;
47 std::shared_ptr<ThunderAutoProject> m_project;
49 bool m_shouldResetPose;
53 std::optional<frc::DriverStation::Alliance>
56 enum class ExecutionState {
64 ExecutionState m_executionState = ExecutionState::START_ACTIONS;
66 frc2::CommandPtr m_startActionCommand = frc2::cmd::None();
67 frc2::CommandPtr m_endActionCommand = frc2::cmd::None();
69 struct StopActionCommand {
70 units::second_t stopTime;
71 frc2::CommandPtr command;
74 std::list<StopActionCommand> m_stopActionCommands;
75 using StopIterator =
decltype(m_stopActionCommands)::const_iterator;
76 StopIterator m_nextStop = m_stopActionCommands.end();
78 struct PositionedActionCommand {
79 units::second_t actionTime;
80 frc2::CommandPtr command;
83 std::list<PositionedActionCommand> m_positionedActionCommands;
84 using PositionedActionIterator =
decltype(m_positionedActionCommands)::const_iterator;
85 PositionedActionIterator m_nextAction = m_positionedActionCommands.end();
87 std::list<PositionedActionIterator> m_runningActions;
90 void beginStartAction();
91 void executeStartAction();
92 void endStartAction(
bool interrupted);
94 void beginFollowTrajectory();
95 void resumeFollowTrajectory();
96 void executeFollowTrajectory();
97 void endFollowTrajectory(
bool interrupted);
100 void executeStopped();
101 void endStopped(
bool interrupted);
103 void beginEndAction();
104 void executeEndAction();
105 void endEndAction(
bool interrupted);
110 std::optional<frc::DriverStation::Alliance> alliance,
111 FieldSymmetry fieldSymmetry);
113 static frc::Pose2d flipPoseForAlliance(
const frc::Pose2d& originalPose,
114 std::optional<frc::DriverStation::Alliance> alliance,
115 FieldSymmetry fieldSymmetry,
ThunderAutoTrajectoryCommand(const std::string &trajectoryName, std::shared_ptr< ThunderAutoProject > project, const TrajectoryRunnerProperties &properties, bool shouldResetPose=true)
Definition ThunderAutoTrajectoryCommand.cpp:5