This commit is contained in:
Aarav
2023-03-15 15:29:52 -06:00
parent 6e7c58422d
commit 11046d9dd9
6 changed files with 54 additions and 15 deletions
@@ -89,8 +89,8 @@ public class RobotContainer {
.withName("SwerveDrive DefaultCommand")); .withName("SwerveDrive DefaultCommand"));
m_robotArm.setDefaultCommand(new RunCommand(() -> { m_robotArm.setDefaultCommand(new RunCommand(() -> {
m_robotArm.setRotVel(getDeadbandedOperatorController().getLeftY()); m_robotArm.setRotVel(getDeadbandedOperatorController().getLeftY(), false);
m_robotArm.setTeleVel(getDeadbandedOperatorController().getRightY()); m_robotArm.setTeleVel(getDeadbandedOperatorController().getRightY(), false);
}, m_robotArm) }, m_robotArm)
.withName("Arm DefaultCommand")); .withName("Arm DefaultCommand"));
@@ -165,9 +165,8 @@ public class RobotContainer {
new JoystickButton(getDeadbandedOperatorController(), XboxController.LEFT_BUMPER_BUTTON) new JoystickButton(getDeadbandedOperatorController(), XboxController.LEFT_BUMPER_BUTTON)
.onTrue(new ParallelCommandGroup( .onTrue(new ParallelCommandGroup(
new InstantCommand(() -> m_robotClaw.toggle()), new InstantCommand(() -> m_robotClaw.toggle()),
new RunArmIn(m_robotArm),
new SequentialCommandGroup( new SequentialCommandGroup(
new WaitCommand(.25), new RunArmIn(m_robotArm),
new PivotCommand(m_robotArm, 135) new PivotCommand(m_robotArm, 135)
) )
)); ));
@@ -0,0 +1,36 @@
// 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.
package frc4388.robot.commands;
import edu.wpi.first.wpilibj2.command.CommandBase;
import frc4388.robot.subsystems.Arm;
public class ExtendArmTo extends CommandBase {
private final Arm m_arm;
private final double m_target;
private final boolean m_direction;
public ExtendArmTo(Arm arm, double units) {
m_arm = arm;
m_target = units;
m_direction = m_target > 1;
addRequirements(m_arm);
}
// Called every time the scheduler runs while the command is scheduled.
@Override
public void execute() {
m_arm.setTeleVel(m_direction ? 1 : -1, false);
}
// Returns true when the command should end.
@Override
public boolean isFinished() {
if (m_direction)
return m_arm.getTeleUnit() > m_target;
else
return m_arm.getTeleUnit() < m_target;
}
}
@@ -27,6 +27,6 @@ public class PivotCommand extends PelvicInflammatoryDisease {
@Override @Override
public void runWithOutput(double output) { public void runWithOutput(double output) {
SmartDashboard.putNumber("pivot output", output); SmartDashboard.putNumber("pivot output", output);
arm.setRotVel(output); arm.setRotVel(output, true);
} }
} }
@@ -22,7 +22,7 @@ public class RunArmIn extends CommandBase {
// Called every time the scheduler runs while the command is scheduled. // Called every time the scheduler runs while the command is scheduled.
@Override @Override
public void execute() { public void execute() {
m_arm.setTeleVel(1); m_arm.setTeleVel(1, true);
} }
// Called once the command ends or is interrupted. // Called once the command ends or is interrupted.
@@ -27,6 +27,6 @@ public class TeleCommand extends PelvicInflammatoryDisease {
@Override @Override
public void runWithOutput(double output) { public void runWithOutput(double output) {
arm.setTeleVel(output); arm.setTeleVel(output, true);
} }
} }
@@ -47,7 +47,7 @@ public class Arm extends SubsystemBase {
this(pivot, tele, encoder, false); this(pivot, tele, encoder, false);
} }
public void setRotVel(double vel) { public void setRotVel(double vel, boolean fast) {
var degrees = Math.abs(getArmRotation()) - 135; var degrees = Math.abs(getArmRotation()) - 135;
SmartDashboard.putNumber("arm degrees", degrees); SmartDashboard.putNumber("arm degrees", degrees);
SmartDashboard.putNumber("arm rot vel", vel); SmartDashboard.putNumber("arm rot vel", vel);
@@ -55,21 +55,25 @@ public class Arm extends SubsystemBase {
if ((degrees < 2 && vel < 0) || (degrees > 110 && vel > 0)) { if ((degrees < 2 && vel < 0) || (degrees > 110 && vel > 0)) {
m_pivot.set(ControlMode.PercentOutput, 0); m_pivot.set(ControlMode.PercentOutput, 0);
} else if (degrees > 90 && vel > 0) { } else if (degrees > 90 && vel > 0) {
m_pivot.set(ControlMode.PercentOutput, .1 * vel); m_pivot.set(ControlMode.PercentOutput, .2 * vel);
} else { } else {
m_pivot.set(ControlMode.PercentOutput, .25 * vel); m_pivot.set(ControlMode.PercentOutput, (fast ? .8 : .3) * vel);
} }
} }
public void setTeleVel(double vel) { public void setTeleVel(double vel, boolean speed) {
m_tele.set(ControlMode.PercentOutput, -0.5 * vel); m_tele.set(ControlMode.PercentOutput, (speed ? -.9 : .7) * vel);
} }
public boolean isTeleIn() { public boolean isTeleIn() {
return m_tele.isFwdLimitSwitchClosed() == 1 || return m_tele.isRevLimitSwitchClosed() == 1 ||
m_tele.getSelectedSensorPosition() < reverse_tele; m_tele.getSelectedSensorPosition() < reverse_tele;
} }
public double getTeleUnit() {
return m_tele.getSelectedSensorPosition() - reverse_tele;
}
public void armSetRotation(double rot) { public void armSetRotation(double rot) {
if (rot > 1 || rot < 0) return; if (rot > 1 || rot < 0) return;
// Move arm code // Move arm code
@@ -104,8 +108,8 @@ public class Arm extends SubsystemBase {
(ArmConstants.TELE_FORWARD_SOFT_LIMIT - ArmConstants.TELE_REVERSE_SOFT_LIMIT); (ArmConstants.TELE_FORWARD_SOFT_LIMIT - ArmConstants.TELE_REVERSE_SOFT_LIMIT);
if (pivot > 0 || tele < 0 || checkLimits(abs_tele, abs_pivot)) { if (pivot > 0 || tele < 0 || checkLimits(abs_tele, abs_pivot)) {
setRotVel(pivot); setRotVel(pivot, false);
setTeleVel(tele); setTeleVel(tele, false);
} }
} }