mirror of
https://github.com/TimeCrafters/FTC_2022
synced 2025-12-15 15:32:35 +00:00
all servos working.
strafe needs weight balance to be efficient.
This commit is contained in:
3
.idea/misc.xml
generated
3
.idea/misc.xml
generated
@@ -1,6 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="JDK" project-jdk-type="JavaSDK">
|
||||
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_11" default="true" project-jdk-name="11" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/build/classes" />
|
||||
</component>
|
||||
<component name="ProjectType">
|
||||
|
||||
@@ -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()");
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
14
build.gradle
14
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 {
|
||||
|
||||
2
gradle/wrapper/gradle-wrapper.properties
vendored
2
gradle/wrapper/gradle-wrapper.properties
vendored
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user