added limits to the white arm so it doesn't over extend, also it cant retract if it is extended and needs to restart so that will need to be fixed.

This commit is contained in:
Spencer
2021-11-20 16:11:08 -06:00
parent 7caa230822
commit 056f539abd
2 changed files with 60 additions and 46 deletions

View File

@@ -74,16 +74,16 @@ public class Robot {
public static final int COUNTS_PER_REVOLUTION = 1000; public static final int COUNTS_PER_REVOLUTION = 1000;
public DcMotor driveWarehouseLeft, driveWarehouseRight, driveGoalLeft, driveGoalRight, public DcMotor driveWarehouseLeft, driveWarehouseRight, driveGoalLeft, driveGoalRight,
collectorArmRiser, collectorArmBobbin, depositorArmRiser, depositorArmBobbin; orangeArmRiser, orangeArmBobbin, whiteArmRiser, whiteArmBobbin;
// Collector // Collector
public Servo collectorDispenser; public Servo orangeDispenser;
public CRServo turretServo1; public CRServo turretServoOrange;
// Depositor // Depositor
public Servo depositorDispenser; public Servo whiteDispenser;
// Depositor, and carousel // Depositor, and carousel
public CRServo turretServo2, carouselWheel, collectorOrange, collectorWhite; public CRServo turretServoWhite, carouselWheel, collectorOrange, collectorWhite;
@@ -207,24 +207,24 @@ public class Robot {
} }
private void initCollector() { private void initCollector() {
collectorArmBobbin = engine.hardwareMap.dcMotor.get("collectorArmBobbin"); orangeArmBobbin = engine.hardwareMap.dcMotor.get("orangeArmBobbin");
collectorDispenser = engine.hardwareMap.servo.get("collectorDispenser"); orangeDispenser = engine.hardwareMap.servo.get("orangeDispenser");
collectorArmBobbin.setDirection(DcMotorSimple.Direction.FORWARD); orangeArmBobbin.setDirection(DcMotorSimple.Direction.FORWARD);
turretServo1 = engine.hardwareMap.crservo.get("turretServo1"); turretServoOrange = engine.hardwareMap.crservo.get("turretServoOrange");
collectorArmRiser = engine.hardwareMap.dcMotor.get("collectorArmRiser"); orangeArmRiser = engine.hardwareMap.dcMotor.get("orangeArmRiser");
collectorArmRiser.setDirection(DcMotorSimple.Direction.FORWARD); orangeArmRiser.setDirection(DcMotorSimple.Direction.FORWARD);
collectorArmRiser.setZeroPowerBehavior(DcMotor.ZeroPowerBehavior.BRAKE); orangeArmRiser.setZeroPowerBehavior(DcMotor.ZeroPowerBehavior.BRAKE);
collectorOrange = engine.hardwareMap.crservo.get("collectorOrange"); collectorOrange = engine.hardwareMap.crservo.get("collectorOrange");
} }
private void initDepositor(){ private void initDepositor(){
depositorDispenser = engine.hardwareMap.servo.get("depositorDispenser"); whiteDispenser = engine.hardwareMap.servo.get("whiteDispenser");
depositorArmBobbin = engine.hardwareMap.dcMotor.get("depositorArmBobbin"); whiteArmBobbin = engine.hardwareMap.dcMotor.get("whiteArmBobbin");
depositorArmBobbin.setDirection(DcMotorSimple.Direction.REVERSE); whiteArmBobbin.setDirection(DcMotorSimple.Direction.REVERSE);
turretServo2 = engine.hardwareMap.crservo.get("turretServo2"); turretServoWhite = engine.hardwareMap.crservo.get("turretServoWhite");
depositorArmRiser = engine.hardwareMap.dcMotor.get("depositorArmRiser"); whiteArmRiser = engine.hardwareMap.dcMotor.get("whiteArmRiser");
depositorArmRiser.setDirection(DcMotorSimple.Direction.FORWARD); whiteArmRiser.setDirection(DcMotorSimple.Direction.FORWARD);
depositorArmRiser.setZeroPowerBehavior(DcMotor.ZeroPowerBehavior.BRAKE); whiteArmRiser.setZeroPowerBehavior(DcMotor.ZeroPowerBehavior.BRAKE);
collectorWhite = engine.hardwareMap.crservo.get("collectorWhite"); collectorWhite = engine.hardwareMap.crservo.get("collectorWhite");
} }

View File

@@ -8,18 +8,24 @@ import org.timecrafters.FreightFrenzy.Competition.Common.Robot;
public class TeleOpState extends CyberarmState { public class TeleOpState extends CyberarmState {
Robot robot; Robot robot;
double maxDriveSpeed, maxCollectorArmSpeed, maxDepositorArmSpeed; double maxDriveSpeed, maxCollectorArmSpeed, maxDepositorArmSpeed;
int maxArmTravelDistance;
public TeleOpState(Robot robot) { public TeleOpState(Robot robot) {
this.robot = robot; this.robot = robot;
maxDriveSpeed = 1; maxDriveSpeed = 1;
maxCollectorArmSpeed = 0.7; maxCollectorArmSpeed = 0.8;
maxDepositorArmSpeed = 0.7; maxDepositorArmSpeed = 0.8;
maxArmTravelDistance = 4000;
} }
@Override @Override
public void start() { public void start() {
super.start(); super.start();
// FIXME: Don't reset when doing autonomous stuff
// FIXME: Fix unable to retract if reset mid-match
robot.whiteArmBobbin.setMode(DcMotor.RunMode.STOP_AND_RESET_ENCODER);
robot.whiteArmBobbin.setMode(DcMotor.RunMode.RUN_WITHOUT_ENCODER);
} }
@Override @Override
@@ -35,18 +41,18 @@ public class TeleOpState extends CyberarmState {
// dispenser powered // dispenser powered
if (engine.gamepad1.b){ if (engine.gamepad1.b){
robot.collectorDispenser.setPosition(.5); robot.orangeDispenser.setPosition(.5);
} }
// if not pressed dispenser off // if not pressed dispenser off
else { else {
robot.collectorDispenser.setPosition(0); robot.orangeDispenser.setPosition(0);
} }
// if one of triggers pressed arm extends or unextends // if one of triggers pressed arm extends or unextends
robot.collectorArmBobbin.setPower(engine.gamepad1.left_trigger * maxCollectorArmSpeed); robot.orangeArmBobbin.setPower(engine.gamepad1.left_trigger * maxCollectorArmSpeed);
if (engine.gamepad1.left_trigger <= 0){ if (engine.gamepad1.left_trigger <= 0){
robot.collectorArmBobbin.setPower(-engine.gamepad1.right_trigger * maxCollectorArmSpeed); robot.orangeArmBobbin.setPower(-engine.gamepad1.right_trigger * maxCollectorArmSpeed);
} }
// if either of these buttons... move the servo // if either of these buttons... move the servo
@@ -54,33 +60,33 @@ public class TeleOpState extends CyberarmState {
if (engine.gamepad1.dpad_right || engine.gamepad1.dpad_left) { if (engine.gamepad1.dpad_right || engine.gamepad1.dpad_left) {
if (engine.gamepad1.dpad_right) { if (engine.gamepad1.dpad_right) {
robot.turretServo1.setPower(-1); robot.turretServoOrange.setPower(-1);
} }
if (engine.gamepad1.dpad_left) { if (engine.gamepad1.dpad_left) {
robot.turretServo1.setPower(1); robot.turretServoOrange.setPower(1);
} }
} }
// if neither of these buttons... power off // if neither of these buttons... power off
else { else {
robot.turretServo1.setPower(0); robot.turretServoOrange.setPower(0);
} }
// if dpad verticles pressed arm rises or lowers... // if dpad verticles pressed arm rises or lowers...
if (engine.gamepad1.dpad_up || engine.gamepad1.dpad_down) { if (engine.gamepad1.dpad_up || engine.gamepad1.dpad_down) {
if (engine.gamepad1.dpad_up) { if (engine.gamepad1.dpad_up) {
robot.collectorArmRiser.setPower(1); robot.orangeArmRiser.setPower(1);
} }
if (engine.gamepad1.dpad_down) { if (engine.gamepad1.dpad_down) {
robot.collectorArmRiser.setPower(-1); robot.orangeArmRiser.setPower(-1);
} }
} }
// nothing pressed nothing move... // nothing pressed nothing move...
else { else {
robot.collectorArmRiser.setPower(0); robot.orangeArmRiser.setPower(0);
} }
// if bumpers pressed intake wheel move... // if bumpers pressed intake wheel move...
@@ -112,19 +118,27 @@ public class TeleOpState extends CyberarmState {
// GamePad 2 // GamePad 2
// if triggers are pressed then arm extends or unextends // if triggers are pressed then arm extends or unextends
robot.depositorArmBobbin.setPower(engine.gamepad2.left_trigger * maxDepositorArmSpeed); if (robot.whiteArmBobbin.getCurrentPosition() <= maxArmTravelDistance && engine.gamepad2.left_trigger > 0) {
robot.whiteArmBobbin.setPower(engine.gamepad2.left_trigger * maxDepositorArmSpeed);
} else {
if (engine.gamepad2.left_trigger <= 0 && robot.whiteArmBobbin.getCurrentPosition() >= 0) {
robot.whiteArmBobbin.setPower(-engine.gamepad2.right_trigger * maxDepositorArmSpeed);
} else {
robot.whiteArmBobbin.setPower(0);
}
if (engine.gamepad2.left_trigger <= 0) {
robot.depositorArmBobbin.setPower(-engine.gamepad2.right_trigger * maxDepositorArmSpeed);
} }
// if b is pressed then depositor door opens, if not pressed not opening. // if b is pressed then depositor door opens, if not pressed not opening.
if (engine.gamepad2.b){ if (engine.gamepad2.b){
robot.depositorDispenser.setPosition(.5); robot.whiteDispenser.setPosition(.5);
} }
else { else {
robot.depositorDispenser.setPosition(0); robot.whiteDispenser.setPosition(0);
} }
// if either of these buttons move the servo // if either of these buttons move the servo
@@ -132,32 +146,32 @@ public class TeleOpState extends CyberarmState {
if (engine.gamepad2.dpad_right || engine.gamepad2.dpad_left) { if (engine.gamepad2.dpad_right || engine.gamepad2.dpad_left) {
if (engine.gamepad2.dpad_right) { if (engine.gamepad2.dpad_right) {
robot.turretServo2.setPower(-1); robot.turretServoWhite.setPower(-1);
} }
if (engine.gamepad2.dpad_left) { if (engine.gamepad2.dpad_left) {
robot.turretServo2.setPower(1); robot.turretServoWhite.setPower(1);
} }
} }
// if neither of these buttons power off // if neither of these buttons power off
else { else {
robot.turretServo2.setPower(0); robot.turretServoWhite.setPower(0);
} }
// if dpad verticles pressed arm rises or lowers // if dpad verticles pressed arm rises or lowers
if (engine.gamepad2.dpad_down || engine.gamepad2.dpad_up) { if (engine.gamepad2.dpad_down || engine.gamepad2.dpad_up) {
if (engine.gamepad2.dpad_up) { if (engine.gamepad2.dpad_up) {
robot.depositorArmRiser.setPower(1); robot.whiteArmRiser.setPower(-1);
} }
if (engine.gamepad2.dpad_down) { if (engine.gamepad2.dpad_down) {
robot.depositorArmRiser.setPower(-1); robot.whiteArmRiser.setPower(1);
} }
} }
// nothing pressed nothing move... // nothing pressed nothing move...
else { else {
robot.depositorArmRiser.setPower(0); robot.whiteArmRiser.setPower(0);
} }
if (engine.gamepad2.left_bumper || engine.gamepad2.right_bumper) { if (engine.gamepad2.left_bumper || engine.gamepad2.right_bumper) {
@@ -178,8 +192,8 @@ public class TeleOpState extends CyberarmState {
} }
@Override
public void telemetry() {
engine.telemetry.addData("white arm extension", robot.whiteArmBobbin.getCurrentPosition());
}
} }