// Copyright (c) FIRST and other WPILib contributors. // Open Source Software; you can modify and/or share it under the terms of // the WPILib BSD license file in the root directory of this project. #pragma once #include #include #include #include #include "Constants.h" #include "commands/Autos.h" #include "subsystems/DriveSubsystem.h" #include "subsystems/HatchSubsystem.h" namespace ac = AutoConstants; /** * This class is where the bulk of the robot should be declared. Since * Command-based is a "declarative" paradigm, very little robot logic should * actually be handled in the {@link Robot} periodic methods (other than the * scheduler calls). Instead, the structure of the robot (including subsystems, * commands, and button mappings) should be declared here. */ class RobotContainer { public: RobotContainer(); frc2::Command* GetAutonomousCommand(); private: // The driver's controller frc2::CommandPS4Controller m_driverController{ OIConstants::kDriverControllerPort}; // The robot's subsystems and commands are defined here... // The robot's subsystems DriveSubsystem m_drive; HatchSubsystem m_hatch; // Commands owned by RobotContainer // The autonomous routines frc2::CommandPtr m_simpleAuto = autos::SimpleAuto(&m_drive); frc2::CommandPtr m_complexAuto = autos::ComplexAuto(&m_drive, &m_hatch); // The chooser for the autonomous routines frc::SendableChooser m_chooser; void ConfigureButtonBindings(); };