mirror of
https://github.com/TimeCrafters/FTC_2022
synced 2025-12-15 22:22: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"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<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" />
|
<output url="file://$PROJECT_DIR$/build/classes" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectType">
|
<component name="ProjectType">
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
package org.timecrafters.minibots.cyberarm;
|
package org.timecrafters.minibots.cyberarm;
|
||||||
|
|
||||||
|
import com.qualcomm.robotcore.hardware.CRServo;
|
||||||
import com.qualcomm.robotcore.hardware.DcMotor;
|
import com.qualcomm.robotcore.hardware.DcMotor;
|
||||||
import com.qualcomm.robotcore.hardware.DcMotorEx;
|
import com.qualcomm.robotcore.hardware.DcMotorEx;
|
||||||
import com.qualcomm.robotcore.hardware.DcMotorSimple;
|
import com.qualcomm.robotcore.hardware.DcMotorSimple;
|
||||||
|
import com.qualcomm.robotcore.hardware.Servo;
|
||||||
|
|
||||||
import org.cyberarm.engine.V2.CyberarmEngine;
|
import org.cyberarm.engine.V2.CyberarmEngine;
|
||||||
|
|
||||||
@@ -15,24 +17,50 @@ public class MecanumMinibot {
|
|||||||
private CyberarmEngine engine;
|
private CyberarmEngine engine;
|
||||||
|
|
||||||
public DcMotor frontLeftDrive, frontRightDrive, backLeftDrive, backRightDrive;
|
public DcMotor frontLeftDrive, frontRightDrive, backLeftDrive, backRightDrive;
|
||||||
|
public Servo pServoRotate, pServoGrab;
|
||||||
|
public CRServo pServoArch, pServoElevate, pServoCarousel;
|
||||||
|
|
||||||
public MecanumMinibot(CyberarmEngine engine) {
|
public MecanumMinibot(CyberarmEngine engine) {
|
||||||
this.engine = engine;
|
this.engine = engine;
|
||||||
|
|
||||||
setupDrivetrain();
|
setupDrivetrain();
|
||||||
|
setupServos();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setupDrivetrain() {
|
private void setupDrivetrain() {
|
||||||
frontLeftDrive = engine.hardwareMap.dcMotor.get("frontLeft");
|
frontLeftDrive = engine.hardwareMap.dcMotor.get("frontLeft"); //2
|
||||||
frontRightDrive = engine.hardwareMap.dcMotor.get("frontRight");
|
frontRightDrive = engine.hardwareMap.dcMotor.get("frontRight"); //3
|
||||||
backLeftDrive = engine.hardwareMap.dcMotor.get("backLeft");
|
backLeftDrive = engine.hardwareMap.dcMotor.get("backLeft"); //1
|
||||||
backRightDrive = engine.hardwareMap.dcMotor.get("backRight");
|
backRightDrive = engine.hardwareMap.dcMotor.get("backRight"); //0
|
||||||
|
|
||||||
frontLeftDrive.setDirection(DcMotorSimple.Direction.REVERSE);
|
frontLeftDrive.setDirection(DcMotorSimple.Direction.REVERSE);
|
||||||
frontRightDrive.setDirection(DcMotorSimple.Direction.REVERSE);
|
frontRightDrive.setDirection(DcMotorSimple.Direction.REVERSE);
|
||||||
backLeftDrive.setDirection(DcMotorSimple.Direction.REVERSE);
|
backLeftDrive.setDirection(DcMotorSimple.Direction.REVERSE);
|
||||||
backRightDrive.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) {
|
public void driveAll(double power) {
|
||||||
frontLeftDrive.setPower(power);
|
frontLeftDrive.setPower(power);
|
||||||
@@ -65,19 +93,22 @@ public class MecanumMinibot {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void driveStrafe(int direction, double power) {
|
public void driveStrafe(int direction, double power) {
|
||||||
if (direction == STRAFE_LEFT) {
|
double dStrafeRatioBack=1.0;
|
||||||
frontLeftDrive.setPower(power);
|
double dStrafeRatioFront=0.5;
|
||||||
frontRightDrive.setPower(-power);
|
|
||||||
|
|
||||||
backLeftDrive.setPower(-power);
|
if (direction == STRAFE_LEFT) {
|
||||||
backRightDrive.setPower(power);
|
frontLeftDrive.setPower(power*dStrafeRatioFront);
|
||||||
|
frontRightDrive.setPower(-power*dStrafeRatioFront);
|
||||||
|
|
||||||
|
backLeftDrive.setPower(-power*dStrafeRatioBack);
|
||||||
|
backRightDrive.setPower(power*dStrafeRatioBack);
|
||||||
|
|
||||||
} else if (direction == STRAFE_RIGHT) {
|
} else if (direction == STRAFE_RIGHT) {
|
||||||
frontLeftDrive.setPower(-power);
|
frontLeftDrive.setPower(-power*dStrafeRatioFront);
|
||||||
frontRightDrive.setPower(power);
|
frontRightDrive.setPower(power*dStrafeRatioFront);
|
||||||
|
|
||||||
backLeftDrive.setPower(power);
|
backLeftDrive.setPower(power*dStrafeRatioBack);
|
||||||
backRightDrive.setPower(-power);
|
backRightDrive.setPower(-power*dStrafeRatioBack);
|
||||||
} else {
|
} else {
|
||||||
throw new RuntimeException("Invalid direction for driveStrafe()");
|
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.cyberarm.engine.V2.CyberarmState;
|
||||||
import org.timecrafters.minibots.cyberarm.MecanumMinibot;
|
import org.timecrafters.minibots.cyberarm.MecanumMinibot;
|
||||||
|
|
||||||
|
|
||||||
public class MecanumMinibotTeleOpState extends CyberarmState {
|
public class MecanumMinibotTeleOpState extends CyberarmState {
|
||||||
private final MecanumMinibot robot;
|
private final MecanumMinibot robot;
|
||||||
private float speed;
|
private float speed;
|
||||||
@@ -16,6 +17,8 @@ public class MecanumMinibotTeleOpState extends CyberarmState {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void exec() {
|
public void exec() {
|
||||||
|
|
||||||
|
/* ............................................................................ drive */
|
||||||
speed = 1.0f - engine.gamepad1.left_trigger;
|
speed = 1.0f - engine.gamepad1.left_trigger;
|
||||||
|
|
||||||
if (engine.gamepad1.y) {
|
if (engine.gamepad1.y) {
|
||||||
@@ -28,13 +31,60 @@ public class MecanumMinibotTeleOpState extends CyberarmState {
|
|||||||
robot.driveStrafe(MecanumMinibot.STRAFE_RIGHT, speed);
|
robot.driveStrafe(MecanumMinibot.STRAFE_RIGHT, speed);
|
||||||
|
|
||||||
} else if (engine.gamepad1.left_bumper) {
|
} 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) {
|
} else if (engine.gamepad1.right_bumper) {
|
||||||
robot.driveTurn(MecanumMinibot.TURN_RIGHT, speed);
|
robot.driveTurn(MecanumMinibot.TURN_RIGHT, speed*.5);
|
||||||
} else {
|
} else {
|
||||||
robot.driveStop();
|
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
|
@Override
|
||||||
|
|||||||
14
build.gradle
14
build.gradle
@@ -12,10 +12,9 @@ buildscript {
|
|||||||
repositories {
|
repositories {
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
google()
|
google()
|
||||||
jcenter()
|
|
||||||
}
|
}
|
||||||
dependencies {
|
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 {
|
repositories {
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
google()
|
google()
|
||||||
jcenter()
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -38,11 +36,11 @@ repositories {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
doc 'org.firstinspires.ftc:Hardware:6.2.0'
|
doc 'org.firstinspires.ftc:Hardware:7.0.0'
|
||||||
doc 'org.firstinspires.ftc:RobotCore:6.2.0'
|
doc 'org.firstinspires.ftc:RobotCore:7.0.0'
|
||||||
doc 'org.firstinspires.ftc:FtcCommon:6.2.0'
|
doc 'org.firstinspires.ftc:FtcCommon:7.0.0'
|
||||||
doc 'org.firstinspires.ftc:OnBotJava:6.2.0'
|
doc 'org.firstinspires.ftc:OnBotJava:7.0.0'
|
||||||
doc 'org.firstinspires.ftc:Inspection:6.2.0'
|
doc 'org.firstinspires.ftc:Inspection:7.0.0'
|
||||||
}
|
}
|
||||||
|
|
||||||
task extractJavadoc {
|
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
|
distributionPath=wrapper/dists
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
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