2024-Robot
Robot code for 2024 FRC season by Argos, FRC team #1756
Loading...
Searching...
No Matches
auto_aim_command.h
Go to the documentation of this file.
1
4
5#pragma once
6
9#include <frc2/command/Command.h>
10#include <frc2/command/CommandHelper.h>
11
17
18class AutoAimCommand : public frc2::CommandHelper<frc2::Command, AutoAimCommand> {
19 public:
21 ShooterSubsystem* shooter,
22 ElevatorSubsystem* elevator,
23 VisionSubsystem* vision,
26 bool endWhenAimed = false);
27
28 void Initialize() override;
29
30 void Execute() override;
31
32 void End(bool interrupted) override;
33
34 bool IsFinished() override;
35
36 private:
45 std::chrono::time_point<std::chrono::steady_clock> m_startTime;
46
47 struct AimParams {
48 units::degree_t carriageAngle;
49 units::angular_velocity::revolutions_per_minute_t shooterSpeed;
50 units::degree_t targetAngleOffset;
51 units::degree_t cameraAngleOffset;
52 };
53
56 [[nodiscard]] std::optional<AimParams> GetAimParams();
57
61 [[nodiscard]] std::optional<units::degree_t> GetAdjustmentOffset(const std::optional<AimParams>& params);
62
66 [[nodiscard]] bool Aimed(const std::optional<AimParams>& params);
67
71 [[nodiscard]] bool Aim(const std::optional<AimParams>& params);
72
75 void SetOperatorFeedback(const std::optional<AimParams>& params);
76};
Definition auto_aim_command.h:18
void Execute() override
Definition auto_aim_command.cpp:45
void End(bool interrupted) override
Definition auto_aim_command.cpp:54
VisionSubsystem * m_pVision
Definition auto_aim_command.h:40
std::optional< AimParams > GetAimParams()
Read latest vision targets from vision subsystem and generate parameters useful for aiming.
Definition auto_aim_command.cpp:65
void SetOperatorFeedback(const std::optional< AimParams > &params)
Set LEDs and vibration based on aiming status.
Definition auto_aim_command.cpp:109
SwerveDriveSubsystem * m_pSwerveDrive
Definition auto_aim_command.h:37
argos_lib::SwappableControllersSubsystem * m_pControllers
Definition auto_aim_command.h:41
SimpleLedSubsystem * m_pLeds
Definition auto_aim_command.h:42
argos_lib::Debouncer m_aimedDebouncer
Definition auto_aim_command.h:44
ElevatorSubsystem * m_pElevator
Definition auto_aim_command.h:39
bool Aimed(const std::optional< AimParams > &params)
Check if robot is currently aimed at vision target.
Definition auto_aim_command.cpp:84
std::chrono::time_point< std::chrono::steady_clock > m_startTime
Definition auto_aim_command.h:45
ShooterSubsystem * m_pShooter
Definition auto_aim_command.h:38
bool IsFinished() override
Definition auto_aim_command.cpp:62
std::optional< units::degree_t > GetAdjustmentOffset(const std::optional< AimParams > &params)
Calculate angle offset to aim toward vision target.
Definition auto_aim_command.cpp:77
void Initialize() override
Definition auto_aim_command.cpp:28
bool Aim(const std::optional< AimParams > &params)
Aim at vision target.
Definition auto_aim_command.cpp:94
bool m_endWhenAimed
Definition auto_aim_command.h:43
Definition elevator_subsystem.h:14
Definition shooter_subsystem.h:13
Definition simple_led_subsystem.h:24
Subsystem for controlling the swerve drivetrain of the robot.
Definition swerve_drive_subsystem.h:67
Definition vision_subsystem.h:120
Definition debouncer.h:14
Allows two controllers to swap between "Driver" and "Operator" control schemes on the fly by swapping...
Definition swappable_controllers_subsystem.h:18
Definition Constants.h:68
Definition auto_aim_command.h:47
units::angular_velocity::revolutions_per_minute_t shooterSpeed
Definition auto_aim_command.h:49
units::degree_t carriageAngle
Definition auto_aim_command.h:48
units::degree_t cameraAngleOffset
Definition auto_aim_command.h:51
units::degree_t targetAngleOffset
Definition auto_aim_command.h:50