[wpilib] Enable ArmSubsystem in ArmBot example (#2752)

This commit is contained in:
Prateek Machiraju
2020-10-01 23:03:50 -04:00
committed by GitHub
parent 693daafe29
commit 330b90e046
5 changed files with 50 additions and 11 deletions

View File

@@ -1,5 +1,5 @@
/*----------------------------------------------------------------------------*/
/* Copyright (c) 2017-2019 FIRST. All Rights Reserved. */
/* Copyright (c) 2017-2020 FIRST. All Rights Reserved. */
/* Open Source Software - may be modified and shared by FRC teams. The code */
/* must be accompanied by the FIRST BSD license file in the root directory of */
/* the project. */
@@ -27,7 +27,7 @@ void Robot::RobotPeriodic() { frc2::CommandScheduler::GetInstance().Run(); }
* can use it to reset any subsystem information you want to clear when the
* robot is disabled.
*/
void Robot::DisabledInit() {}
void Robot::DisabledInit() { m_container.DisablePIDSubsystems(); }
void Robot::DisabledPeriodic() {}

View File

@@ -32,12 +32,25 @@ void RobotContainer::ConfigureButtonBindings() {
// Move the arm to 2 radians above horizontal when the 'A' button is pressed.
frc2::JoystickButton(&m_driverController, 1)
.WhenPressed([this] { m_arm.SetGoal(2_rad); }, {&m_arm});
.WhenPressed(
[this] {
m_arm.SetGoal(2_rad);
m_arm.Enable();
},
{&m_arm});
// Move the arm to neutral position when the 'B' button is pressed.
frc2::JoystickButton(&m_driverController, 1)
.WhenPressed([this] { m_arm.SetGoal(ArmConstants::kArmOffset); },
{&m_arm});
frc2::JoystickButton(&m_driverController, 2)
.WhenPressed(
[this] {
m_arm.SetGoal(ArmConstants::kArmOffset);
m_arm.Enable();
},
{&m_arm});
// Disable the arm controller when Y is pressed.
frc2::JoystickButton(&m_driverController, 4)
.WhenPressed([this] { m_arm.Disable(); }, {&m_arm});
// While holding the shoulder button, drive at half speed
frc2::JoystickButton(&m_driverController, 6)
@@ -45,6 +58,8 @@ void RobotContainer::ConfigureButtonBindings() {
.WhenReleased([this] { m_drive.SetMaxOutput(1); });
}
void RobotContainer::DisablePIDSubsystems() { m_arm.Disable(); }
frc2::Command* RobotContainer::GetAutonomousCommand() {
// Runs the chosen command in autonomous
return new frc2::InstantCommand([] {});

View File

@@ -1,5 +1,5 @@
/*----------------------------------------------------------------------------*/
/* Copyright (c) 2019 FIRST. All Rights Reserved. */
/* Copyright (c) 2019-2020 FIRST. All Rights Reserved. */
/* Open Source Software - may be modified and shared by FRC teams. The code */
/* must be accompanied by the FIRST BSD license file in the root directory of */
/* the project. */
@@ -35,6 +35,12 @@ class RobotContainer {
public:
RobotContainer();
/**
* Disables all ProfiledPIDSubsystem and PIDSubsystem instances.
* This should be called on robot disable to prevent integral windup.
*/
void DisablePIDSubsystems();
frc2::Command* GetAutonomousCommand();
private: