From 619e64296f3491263e445648538da8ec302bc99a Mon Sep 17 00:00:00 2001 From: scott Date: Mon, 7 Feb 2022 13:11:58 -0600 Subject: [PATCH] all servos working. strafe needs weight balance to be efficient. --- .idea/misc.xml | 3 +- .../minibots/cyberarm/MecanumMinibot.java | 57 ++++++++++++++----- .../states/MecanumMinibotTeleOpState.java | 54 +++++++++++++++++- build.gradle | 14 ++--- gradle/wrapper/gradle-wrapper.properties | 2 +- 5 files changed, 105 insertions(+), 25 deletions(-) diff --git a/.idea/misc.xml b/.idea/misc.xml index 9422e84..54d5acd 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,7 @@ - + + diff --git a/TeamCode/src/main/java/org/timecrafters/minibots/cyberarm/MecanumMinibot.java b/TeamCode/src/main/java/org/timecrafters/minibots/cyberarm/MecanumMinibot.java index 24ea658..b4c8798 100644 --- a/TeamCode/src/main/java/org/timecrafters/minibots/cyberarm/MecanumMinibot.java +++ b/TeamCode/src/main/java/org/timecrafters/minibots/cyberarm/MecanumMinibot.java @@ -1,8 +1,10 @@ package org.timecrafters.minibots.cyberarm; +import com.qualcomm.robotcore.hardware.CRServo; import com.qualcomm.robotcore.hardware.DcMotor; import com.qualcomm.robotcore.hardware.DcMotorEx; import com.qualcomm.robotcore.hardware.DcMotorSimple; +import com.qualcomm.robotcore.hardware.Servo; import org.cyberarm.engine.V2.CyberarmEngine; @@ -15,24 +17,50 @@ public class MecanumMinibot { private CyberarmEngine engine; public DcMotor frontLeftDrive, frontRightDrive, backLeftDrive, backRightDrive; + public Servo pServoRotate, pServoGrab; + public CRServo pServoArch, pServoElevate, pServoCarousel; public MecanumMinibot(CyberarmEngine engine) { this.engine = engine; setupDrivetrain(); + setupServos(); } private void setupDrivetrain() { - frontLeftDrive = engine.hardwareMap.dcMotor.get("frontLeft"); - frontRightDrive = engine.hardwareMap.dcMotor.get("frontRight"); - backLeftDrive = engine.hardwareMap.dcMotor.get("backLeft"); - backRightDrive = engine.hardwareMap.dcMotor.get("backRight"); + frontLeftDrive = engine.hardwareMap.dcMotor.get("frontLeft"); //2 + frontRightDrive = engine.hardwareMap.dcMotor.get("frontRight"); //3 + backLeftDrive = engine.hardwareMap.dcMotor.get("backLeft"); //1 + backRightDrive = engine.hardwareMap.dcMotor.get("backRight"); //0 frontLeftDrive.setDirection(DcMotorSimple.Direction.REVERSE); frontRightDrive.setDirection(DcMotorSimple.Direction.REVERSE); backLeftDrive.setDirection(DcMotorSimple.Direction.REVERSE); backRightDrive.setDirection(DcMotorSimple.Direction.REVERSE); } + private void setupServos(){ + pServoArch = engine.hardwareMap.crservo.get("arch"); //0 + pServoElevate = engine.hardwareMap.crservo.get("elevate"); //2 + pServoRotate = engine.hardwareMap.servo.get("rotate"); //3 + pServoGrab = engine.hardwareMap.servo.get("grab"); //4 + pServoCarousel = engine.hardwareMap.crservo.get("carousel"); //5 + + pServoRotate.scaleRange(0.0, 1.0); + pServoGrab.scaleRange(0.0, 1.0); + + pServoArch.setDirection(DcMotorSimple.Direction.FORWARD); + pServoElevate.setDirection(DcMotorSimple.Direction.REVERSE); + pServoRotate.setDirection(Servo.Direction.FORWARD); + pServoGrab.setDirection(Servo.Direction.FORWARD); + pServoCarousel.setDirection(DcMotorSimple.Direction.FORWARD); + + pServoArch.setPower(0.0); + pServoElevate.setPower(0.0); + pServoRotate.setPosition(0.70); + pServoGrab.setPosition(0.9); + pServoCarousel.setPower(0.0); + + } public void driveAll(double power) { frontLeftDrive.setPower(power); @@ -65,19 +93,22 @@ public class MecanumMinibot { } public void driveStrafe(int direction, double power) { - if (direction == STRAFE_LEFT) { - frontLeftDrive.setPower(power); - frontRightDrive.setPower(-power); + double dStrafeRatioBack=1.0; + double dStrafeRatioFront=0.5; - backLeftDrive.setPower(-power); - backRightDrive.setPower(power); + if (direction == STRAFE_LEFT) { + frontLeftDrive.setPower(power*dStrafeRatioFront); + frontRightDrive.setPower(-power*dStrafeRatioFront); + + backLeftDrive.setPower(-power*dStrafeRatioBack); + backRightDrive.setPower(power*dStrafeRatioBack); } else if (direction == STRAFE_RIGHT) { - frontLeftDrive.setPower(-power); - frontRightDrive.setPower(power); + frontLeftDrive.setPower(-power*dStrafeRatioFront); + frontRightDrive.setPower(power*dStrafeRatioFront); - backLeftDrive.setPower(power); - backRightDrive.setPower(-power); + backLeftDrive.setPower(power*dStrafeRatioBack); + backRightDrive.setPower(-power*dStrafeRatioBack); } else { throw new RuntimeException("Invalid direction for driveStrafe()"); } diff --git a/TeamCode/src/main/java/org/timecrafters/minibots/cyberarm/states/MecanumMinibotTeleOpState.java b/TeamCode/src/main/java/org/timecrafters/minibots/cyberarm/states/MecanumMinibotTeleOpState.java index adc2ff8..8175957 100644 --- a/TeamCode/src/main/java/org/timecrafters/minibots/cyberarm/states/MecanumMinibotTeleOpState.java +++ b/TeamCode/src/main/java/org/timecrafters/minibots/cyberarm/states/MecanumMinibotTeleOpState.java @@ -6,6 +6,7 @@ import org.cyberarm.engine.V2.CyberarmEngine; import org.cyberarm.engine.V2.CyberarmState; import org.timecrafters.minibots.cyberarm.MecanumMinibot; + public class MecanumMinibotTeleOpState extends CyberarmState { private final MecanumMinibot robot; private float speed; @@ -16,6 +17,8 @@ public class MecanumMinibotTeleOpState extends CyberarmState { @Override public void exec() { + + /* ............................................................................ drive */ speed = 1.0f - engine.gamepad1.left_trigger; if (engine.gamepad1.y) { @@ -28,13 +31,60 @@ public class MecanumMinibotTeleOpState extends CyberarmState { robot.driveStrafe(MecanumMinibot.STRAFE_RIGHT, speed); } else if (engine.gamepad1.left_bumper) { - robot.driveTurn(MecanumMinibot.TURN_LEFT, speed); + robot.driveTurn(MecanumMinibot.TURN_LEFT, speed*.5); } else if (engine.gamepad1.right_bumper) { - robot.driveTurn(MecanumMinibot.TURN_RIGHT, speed); + robot.driveTurn(MecanumMinibot.TURN_RIGHT, speed*.5); } else { robot.driveStop(); } + /* ............................................................................ elevator */ + if(engine.gamepad1.dpad_up){ + robot.pServoElevate.setPower(1.0); + } + else if(engine.gamepad1.dpad_down){ + robot.pServoElevate.setPower(-1.0); + } + else{ + robot.pServoElevate.setPower((0.0)); + } + + /* ............................................................................ arch */ + if(Math.abs(engine.gamepad1.left_stick_y)>0.1){ + robot.pServoArch.setPower(engine.gamepad1.left_stick_y); + } + else{ + robot.pServoArch.setPower((0.0)); + } + + /* ............................................................................ rotate */ + if(engine.gamepad1.dpad_right){ // up position + robot.pServoRotate.setPosition(0.0); + } + if(engine.gamepad1.dpad_left){ // down position + robot.pServoRotate.setPosition(0.70); + } + + /* ............................................................................ grab */ + if(engine.gamepad1.left_stick_x>0.5|| engine.gamepad1.right_stick_x<-0.5){ // in + robot.pServoGrab.setPosition(0.9); + } + if(engine.gamepad1.left_stick_x<-0.5){ // small out + robot.pServoGrab.setPosition(0.50); + } + if(engine.gamepad1.right_stick_x>0.5){ // big out + robot.pServoGrab.setPosition(0.0); + } + /* ............................................................................ carousel */ + if(Math.abs(engine.gamepad1.left_trigger)>0.1){ + robot.pServoCarousel.setPower(engine.gamepad1.left_trigger); + } + else if(Math.abs(engine.gamepad1.right_trigger)>0.1){ + robot.pServoCarousel.setPower(-engine.gamepad1.right_trigger); + } + else{ + robot.pServoCarousel.setPower((0.0)); + } } @Override diff --git a/build.gradle b/build.gradle index 87f0507..fb778e8 100644 --- a/build.gradle +++ b/build.gradle @@ -12,10 +12,9 @@ buildscript { repositories { mavenCentral() google() - jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:4.0.1' + classpath 'com.android.tools.build:gradle:7.1.1' } } @@ -25,7 +24,6 @@ allprojects { repositories { mavenCentral() google() - jcenter() } } @@ -38,11 +36,11 @@ repositories { } dependencies { - doc 'org.firstinspires.ftc:Hardware:6.2.0' - doc 'org.firstinspires.ftc:RobotCore:6.2.0' - doc 'org.firstinspires.ftc:FtcCommon:6.2.0' - doc 'org.firstinspires.ftc:OnBotJava:6.2.0' - doc 'org.firstinspires.ftc:Inspection:6.2.0' + doc 'org.firstinspires.ftc:Hardware:7.0.0' + doc 'org.firstinspires.ftc:RobotCore:7.0.0' + doc 'org.firstinspires.ftc:FtcCommon:7.0.0' + doc 'org.firstinspires.ftc:OnBotJava:7.0.0' + doc 'org.firstinspires.ftc:Inspection:7.0.0' } task extractJavadoc { diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 530fb22..a6b15d5 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-all.zip