mirror of
https://github.com/TimeCrafters/FTC_2022
synced 2025-12-15 21:22:33 +00:00
all servos working.
strafe needs weight balance to be efficient.
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user