Test Climber and Reprogram to Fix Bugs

This commit is contained in:
Keenan D. Buckley
2019-02-16 19:42:25 -07:00
parent eddd8468c3
commit f1cff88862
5 changed files with 51 additions and 29 deletions
@@ -9,4 +9,8 @@ public interface IHandController {
public double getRightXAxis(); public double getRightXAxis();
public double getRightYAxis(); public double getRightYAxis();
public double getLeftTriggerAxis();
public double getRightTriggerAxis();
} }
@@ -64,10 +64,10 @@ public class OI
JoystickButton climbUp = new JoystickButton(m_driverXbox.getJoyStick(), XboxController.RIGHT_TRIGGER_AXIS); JoystickButton climbUp = new JoystickButton(m_driverXbox.getJoyStick(), XboxController.RIGHT_TRIGGER_AXIS);
JoystickButton climbDown = new JoystickButton(m_driverXbox.getJoyStick(), XboxController.LEFT_TRIGGER_AXIS); JoystickButton climbDown = new JoystickButton(m_driverXbox.getJoyStick(), XboxController.LEFT_TRIGGER_AXIS);
double speed = m_driverXbox.getRightTriggerAxis() - m_driverXbox.getLeftTriggerAxis(); //double speed = m_driverXbox.getRightTriggerAxis() - m_driverXbox.getLeftTriggerAxis();
climbUp.whileActive(new InitiateClimber(speed)); //climbUp.whenActive(new InitiateClimber(m_driverXbox.getRightTriggerAxis()));
climbDown.whileActive(new InitiateClimber(speed)); //climbDown.whenActive(new InitiateClimber(-m_driverXbox.getLeftTriggerAxis()));
JoystickButton ratchetFlip = new JoystickButton(m_driverXbox.getJoyStick(), XboxController.Y_BUTTON); JoystickButton ratchetFlip = new JoystickButton(m_driverXbox.getJoyStick(), XboxController.Y_BUTTON);
ratchetFlip.whenPressed(new ratchetFlip(0.5)); ratchetFlip.whenPressed(new ratchetFlip(0.5));
ratchetFlip.whenReleased(new ratchetFlip(0)); ratchetFlip.whenReleased(new ratchetFlip(0));
@@ -82,7 +82,7 @@ public class OI
//Operator Xbox //Operator Xbox
/* /*
JoystickButton openIntake = new JoystickButton(m_operatorXbox.getJoyStick(), XboxController.LEFT_BUMPER_BUTTON); JoystickButton openIntake = new JoystickButton(m_operatorXbox.getJoyStick(), XboxController.LEFT_BUMPER_BUTTON);
openIntake.whenPressed(new IntakePosition(true)); openIntake.whenPressed(new IntakePosition(true));
@@ -8,7 +8,6 @@ import edu.wpi.first.wpilibj.command.Command;
public class InitiateClimber extends Command public class InitiateClimber extends Command
{ {
static double SPEED; static double SPEED;
public InitiateClimber(double speed) { public InitiateClimber(double speed) {
requires(Robot.climber); requires(Robot.climber);
this.SPEED = speed; this.SPEED = speed;
@@ -15,23 +15,18 @@ public class setClimberSafety extends Command {
// Called just before this Command runs the first time // Called just before this Command runs the first time
@Override @Override
protected void initialize() { protected void initialize() {
Robot.climber.safetySwitch(safety);
} }
// Called repeatedly when this Command is scheduled to run // Called repeatedly when this Command is scheduled to run
@Override @Override
protected void execute() { protected void execute() {
if(safety){ //If saftey button is pressed
Robot.climber.safetySwitch(true);
}
else{
Robot.climber.safetySwitch(false);
}
} }
// Make this return true when this Command no longer needs to run execute() // Make this return true when this Command no longer needs to run execute()
@Override @Override
protected boolean isFinished() { protected boolean isFinished() {
return false; return true;
} }
// Called once after isFinished returns true // Called once after isFinished returns true
@@ -1,13 +1,10 @@
package org.usfirst.frc4388.robot.subsystems; package org.usfirst.frc4388.robot.subsystems;
import java.util.ArrayList; import java.util.ArrayList;
import org.usfirst.frc4388.controller.XboxController; import org.usfirst.frc4388.controller.XboxController;
import org.usfirst.frc4388.robot.Constants; import org.usfirst.frc4388.robot.Constants;
import org.usfirst.frc4388.robot.OI;
import org.usfirst.frc4388.robot.Robot; import org.usfirst.frc4388.robot.Robot;
import org.usfirst.frc4388.robot.RobotMap; import org.usfirst.frc4388.robot.RobotMap;
import org.usfirst.frc4388.robot.commands.*; import org.usfirst.frc4388.robot.commands.*;
@@ -41,21 +38,25 @@ import com.ctre.phoenix.motorcontrol.can.WPI_TalonSRX;
*/ */
public class Climber extends Subsystem{ public class Climber extends Subsystem{
//Motors //Motors
private WPI_TalonSRX climberBack; private WPI_TalonSRX climberBack;
private WPI_TalonSRX climberFront; private WPI_TalonSRX climberFront;
private WPI_TalonSRX climberFront2; private WPI_TalonSRX climberFront2;
private WPI_TalonSRX flipOutMotor; private WPI_TalonSRX flipOutMotor;
//Frequency Control //Frequency Control
static float BACK_FREQ = 1; static float BACK_FREQ = 1;
static float FRONT_FREQ; static float FRONT_FREQ;
static float FREQ_RATIO = 0.2443744576F; static float FREQ_RATIO = 0.2443744576F;
//Limit and Saftey vars //Limit and Saftey vars
LimitSwitchSource limitSwitchSource; LimitSwitchSource limitSwitchSource;
SensorCollection isPressed; SensorCollection isPressed;
boolean safetySwitch; boolean safetySwitch;
//Climb Trigger
double rightTriggerInput;
double leftTriggerInput;
public Climber(){ public Climber(){
@@ -66,7 +67,8 @@ public class Climber extends Subsystem{
climberFront2.set(ControlMode.Follower, climberFront.getDeviceID()); climberFront2.set(ControlMode.Follower, climberFront.getDeviceID());
climberBack.configForwardLimitSwitchSource(limitSwitchSource, LimitSwitchNormal.NormallyOpen, 0); climberBack.configForwardLimitSwitchSource(limitSwitchSource, LimitSwitchNormal.NormallyOpen, 0);
climberBack.configReverseLimitSwitchSource(limitSwitchSource, LimitSwitchNormal.NormallyOpen, 0); climberBack.configReverseLimitSwitchSource(limitSwitchSource, LimitSwitchNormal.NormallyOpen, 0);
climberBack.setNeutralMode(NeutralMode.Brake);
FRONT_FREQ = BACK_FREQ * FREQ_RATIO; // Sets the front motor speed to ~1/4 the back motor speed FRONT_FREQ = BACK_FREQ * FREQ_RATIO; // Sets the front motor speed to ~1/4 the back motor speed
} }
catch (Exception e) { catch (Exception e) {
@@ -82,29 +84,51 @@ public class Climber extends Subsystem{
@Override @Override
public void periodic() { public void periodic() {
// Put code here to be run every loop
} rightTriggerInput = OI.getInstance().getDriverController().getRightTriggerAxis();
leftTriggerInput = OI.getInstance().getDriverController().getLeftTriggerAxis();
public void setClimbSpeed(double speed) { double speed = rightTriggerInput - leftTriggerInput;
// Put code here to be run every loop
if (safetySwitch) { if (safetySwitch) {
/*
if (isPressed.isRevLimitSwitchClosed() && speed < 0){ //If leg at min height, and the input would retract the leg if (isPressed.isRevLimitSwitchClosed() && speed < 0){ //If leg at min height, and the input would retract the leg
climberBack.set(0); climberBack.set(0);
climberFront.set(0); climberFront.set(0);
} }
if(isPressed.isFwdLimitSwitchClosed() && speed > 0){ //If leg at max height, and the input would extend the leg else if(isPressed.isFwdLimitSwitchClosed() && speed > 0){ //If leg at max height, and the input would extend the leg
climberBack.set(0); climberBack.set(0);
climberFront.set(FRONT_FREQ * speed); climberFront.set(FRONT_FREQ * speed);
} }
else { //If leg not at max height else { //If leg not at max height */
climberBack.set(BACK_FREQ * speed); climberBack.set(BACK_FREQ * speed);
climberFront.set(FRONT_FREQ * speed); climberFront.set(FRONT_FREQ * speed);
} //}
} }
if (!safetySwitch) { else {
climberBack.set(0); climberBack.set(0);
climberFront.set(0); climberFront.set(0);
} }
} }
///DEPRICATED
public void setClimbSpeed(double speed) {
if (safetySwitch) {
/*
if (isPressed.isRevLimitSwitchClosed() && speed < 0){ //If leg at min height, and the input would retract the leg
climberBack.set(0);
climberFront.set(0);
}
else if(isPressed.isFwdLimitSwitchClosed() && speed > 0){ //If leg at max height, and the input would extend the leg
climberBack.set(0);
climberFront.set(FRONT_FREQ * speed);
}
else { //If leg not at max height */
climberBack.set(BACK_FREQ * speed);
climberFront.set(FRONT_FREQ * speed);
//}
}
}
public void safetySwitch(boolean safetySwitch){ public void safetySwitch(boolean safetySwitch){
this.safetySwitch = safetySwitch; this.safetySwitch = safetySwitch;