Merge remote-tracking branch 'origin/branch-silver-14493' into branch-silver-14493
This commit is contained in:
@ -0,0 +1,24 @@
|
||||
package org.firstinspires.ftc.teamcode;
|
||||
|
||||
import com.qualcomm.robotcore.eventloop.opmode.OpMode;
|
||||
import com.qualcomm.robotcore.eventloop.opmode.TeleOp;
|
||||
|
||||
import org.firstinspires.ftc.teamcode.cometbots.CometBotAutoDevelopment;
|
||||
|
||||
@TeleOp(name = "CometBot Auto", group = "Development")
|
||||
public class CometBotDevAuto extends OpMode {
|
||||
|
||||
public CometBotAutoDevelopment runMode;
|
||||
|
||||
@Override
|
||||
public void init() {
|
||||
this.runMode = new CometBotAutoDevelopment(hardwareMap, telemetry, gamepad1, gamepad2);
|
||||
this.runMode.init();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loop() {
|
||||
this.runMode.update();
|
||||
telemetry.update();
|
||||
}
|
||||
}
|
@ -13,9 +13,9 @@ public class PedroConstants {
|
||||
|
||||
// Robot motor configurations
|
||||
public static final String FRONT_LEFT_MOTOR = "front-left";
|
||||
public static final String BACK_LEFT_MOTOR = "back-left";
|
||||
public static final String FRONT_RIGHT_MOTOR = "front-right";
|
||||
public static final String BACK_RIGHT_MOTOR = "back-right";
|
||||
public static final String BACK_LEFT_MOTOR = "back-left";
|
||||
public static final String FRONT_RIGHT_MOTOR = "front-right";
|
||||
public static final String BACK_RIGHT_MOTOR = "back-right";
|
||||
|
||||
// Robot motor direction
|
||||
public static final Direction FRONT_LEFT_MOTOR_DIRECTION = Direction.REVERSE;
|
||||
@ -23,6 +23,11 @@ public class PedroConstants {
|
||||
public static final Direction FRONT_RIGHT_MOTOR_DIRECTION = Direction.FORWARD;
|
||||
public static final Direction BACK_RIGHT_MOTOR_DIRECTION = Direction.FORWARD;
|
||||
|
||||
/*
|
||||
Motor Max Power
|
||||
*/
|
||||
public static final double MAX_POWER = .75;
|
||||
|
||||
// Robot IMU configuration
|
||||
public static final String IMU = "imu";
|
||||
|
||||
|
@ -1,4 +0,0 @@
|
||||
package org.firstinspires.ftc.teamcode.cometbots;
|
||||
|
||||
public class BluenbAutov1 {
|
||||
}
|
@ -0,0 +1,142 @@
|
||||
package org.firstinspires.ftc.teamcode.cometbots;
|
||||
|
||||
import static org.firstinspires.ftc.teamcode.PedroConstants.MAX_POWER;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.acmerobotics.dashboard.telemetry.TelemetryPacket;
|
||||
import com.acmerobotics.roadrunner.Action;
|
||||
import com.acmerobotics.roadrunner.SequentialAction;
|
||||
import com.acmerobotics.roadrunner.SleepAction;
|
||||
import com.acmerobotics.roadrunner.ftc.Actions;
|
||||
import com.qualcomm.robotcore.hardware.Gamepad;
|
||||
import com.qualcomm.robotcore.hardware.HardwareMap;
|
||||
|
||||
import org.firstinspires.ftc.robotcore.external.Telemetry;
|
||||
import org.firstinspires.ftc.teamcode.pedroPathing.follower.Follower;
|
||||
import org.firstinspires.ftc.teamcode.states.FieldStates;
|
||||
import org.firstinspires.ftc.teamcode.subsystem.MotorsSubsystem;
|
||||
|
||||
public class CometBotAutoDevelopment {
|
||||
|
||||
/*
|
||||
Subsystems
|
||||
*/
|
||||
private MotorsSubsystem motors;
|
||||
|
||||
/*
|
||||
Controllers
|
||||
*/
|
||||
public Gamepad GP1;
|
||||
public Gamepad GP2;
|
||||
public Gamepad currentGP1;
|
||||
public Gamepad previousGP1;
|
||||
public Gamepad currentGP2;
|
||||
public Gamepad previousGP2;
|
||||
private Telemetry telemetry;
|
||||
|
||||
public FieldStates fieldStates;
|
||||
private boolean centricity = false;
|
||||
|
||||
private Follower follower;
|
||||
private HardwareMap hardwareMap;
|
||||
|
||||
public CometBotAutoDevelopment(HardwareMap hardwareMap, Telemetry telemetry, Gamepad gp1, Gamepad gp2) {
|
||||
this.motors = new MotorsSubsystem(hardwareMap, telemetry);
|
||||
this.GP1 = gp1;
|
||||
this.GP2 = gp2;
|
||||
this.hardwareMap = hardwareMap;
|
||||
this.telemetry = telemetry;
|
||||
this.currentGP1 = new Gamepad();
|
||||
this.currentGP2 = new Gamepad();
|
||||
this.previousGP1 = new Gamepad();
|
||||
this.previousGP2 = new Gamepad();
|
||||
this.fieldStates = new FieldStates();
|
||||
this.follower = new Follower(hardwareMap);
|
||||
}
|
||||
|
||||
public class ZeroOutPower implements Action {
|
||||
|
||||
@Override
|
||||
public boolean run(@NonNull TelemetryPacket telemetryPacket) {
|
||||
follower = new Follower(hardwareMap);
|
||||
follower.setMaxPower(0);
|
||||
System.out.println("Running ZeroOutPower");
|
||||
return follower.isBusy();
|
||||
}
|
||||
}
|
||||
|
||||
public class ReturnToMaxPower implements Action {
|
||||
|
||||
@Override
|
||||
public boolean run(@NonNull TelemetryPacket telemetryPacket) {
|
||||
follower = new Follower(hardwareMap);
|
||||
follower.setMaxPower(MAX_POWER);
|
||||
follower.startTeleopDrive();
|
||||
System.out.println("Running ReturnToMaxPower");
|
||||
return follower.isBusy();
|
||||
}
|
||||
}
|
||||
|
||||
public Action zeroOutPower() {
|
||||
return new ZeroOutPower();
|
||||
}
|
||||
|
||||
public Action returnToMaxPower() {
|
||||
return new ReturnToMaxPower();
|
||||
}
|
||||
|
||||
public void init() {
|
||||
this.motors.init();
|
||||
this.fieldStates.setFieldLocation(FieldStates.FieldLocation.TRAVELING);
|
||||
follower.setMaxPower(MAX_POWER);
|
||||
follower.startTeleopDrive();
|
||||
}
|
||||
|
||||
public void update() {
|
||||
this.previousGP1.copy(currentGP1);
|
||||
this.currentGP1.copy(this.GP1);
|
||||
this.previousGP2.copy(currentGP2);
|
||||
this.currentGP2.copy(this.GP2);
|
||||
|
||||
this.toFixMotorBlockingIssueFirstMethod();
|
||||
this.toFixMotorBlockingIssueSecondMethod();
|
||||
this.changeCentricity();
|
||||
|
||||
follower.setTeleOpMovementVectors(-this.GP1.left_stick_y, -this.GP1.left_stick_x, -this.GP1.right_stick_x, centricity);
|
||||
follower.update();
|
||||
this.telemetry.addData("Field State", this.fieldStates.getFieldLocation());
|
||||
}
|
||||
|
||||
public void changeCentricity() {
|
||||
if (this.currentGP1.left_bumper && !this.previousGP1.left_bumper) {
|
||||
this.centricity = !centricity;
|
||||
this.follower.breakFollowing();
|
||||
this.follower.startTeleopDrive();
|
||||
}
|
||||
}
|
||||
|
||||
public void toFixMotorBlockingIssueFirstMethod() {
|
||||
if (this.currentGP1.cross && !this.previousGP1.cross) {
|
||||
fieldStates.setFieldLocation(FieldStates.FieldLocation.BUCKET);
|
||||
Actions.runBlocking(new SequentialAction(
|
||||
this.zeroOutPower(),
|
||||
new SleepAction(3),
|
||||
this.returnToMaxPower()
|
||||
));
|
||||
fieldStates.setFieldLocation(FieldStates.FieldLocation.TRAVELING);
|
||||
}
|
||||
}
|
||||
|
||||
public void toFixMotorBlockingIssueSecondMethod() {
|
||||
if (this.currentGP1.circle && !this.previousGP1.circle) {
|
||||
this.follower.breakFollowing();
|
||||
fieldStates.setFieldLocation(FieldStates.FieldLocation.BUCKET);
|
||||
Actions.runBlocking(new SequentialAction(
|
||||
new SleepAction(3)
|
||||
));
|
||||
fieldStates.setFieldLocation(FieldStates.FieldLocation.TRAVELING);
|
||||
this.follower.startTeleopDrive();
|
||||
}
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package org.firstinspires.ftc.teamcode.cometbots;
|
||||
package org.firstinspires.ftc.teamcode.cometbots.projects;
|
||||
|
||||
import com.acmerobotics.dashboard.FtcDashboard;
|
||||
import com.acmerobotics.dashboard.config.Config;
|
@ -1,4 +1,4 @@
|
||||
package org.firstinspires.ftc.teamcode.cometbots;
|
||||
package org.firstinspires.ftc.teamcode.cometbots.projects;
|
||||
|
||||
import com.acmerobotics.dashboard.FtcDashboard;
|
||||
import com.acmerobotics.dashboard.config.Config;
|
@ -1,4 +1,4 @@
|
||||
package org.firstinspires.ftc.teamcode.cometbots;
|
||||
package org.firstinspires.ftc.teamcode.cometbots.projects;
|
||||
|
||||
import com.acmerobotics.dashboard.FtcDashboard;
|
||||
import com.acmerobotics.dashboard.config.Config;
|
@ -1,4 +1,4 @@
|
||||
package org.firstinspires.ftc.teamcode.cometbots;
|
||||
package org.firstinspires.ftc.teamcode.cometbots.projects;
|
||||
|
||||
import com.acmerobotics.dashboard.FtcDashboard;
|
||||
import com.acmerobotics.dashboard.config.Config;
|
@ -1,4 +1,4 @@
|
||||
package org.firstinspires.ftc.teamcode.cometbots;
|
||||
package org.firstinspires.ftc.teamcode.cometbots.projects;
|
||||
|
||||
import com.acmerobotics.dashboard.FtcDashboard;
|
||||
import com.acmerobotics.dashboard.config.Config;
|
@ -1,4 +1,4 @@
|
||||
package org.firstinspires.ftc.teamcode.cometbots;
|
||||
package org.firstinspires.ftc.teamcode.cometbots.projects;
|
||||
|
||||
import com.acmerobotics.dashboard.FtcDashboard;
|
||||
import com.acmerobotics.dashboard.config.Config;
|
@ -1,4 +1,4 @@
|
||||
package org.firstinspires.ftc.teamcode;
|
||||
package org.firstinspires.ftc.teamcode.cometbots.projects;
|
||||
|
||||
import com.acmerobotics.dashboard.FtcDashboard;
|
||||
import com.acmerobotics.dashboard.config.Config;
|
@ -27,7 +27,7 @@
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package org.firstinspires.ftc.teamcode.cometbots;
|
||||
package org.firstinspires.ftc.teamcode.cometbots.projects;
|
||||
|
||||
import static org.firstinspires.ftc.teamcode.PedroConstants.BACK_ENCODER;
|
||||
import static org.firstinspires.ftc.teamcode.PedroConstants.BACK_ENCODER_DIRECTION;
|
@ -1,4 +1,4 @@
|
||||
package org.firstinspires.ftc.teamcode;
|
||||
package org.firstinspires.ftc.teamcode.cometbots.projects;
|
||||
|
||||
|
||||
import org.firstinspires.ftc.teamcode.pedroPathing.pathGeneration.BezierLine;
|
@ -1,4 +1,4 @@
|
||||
package org.firstinspires.ftc.teamcode.cometbots;
|
||||
package org.firstinspires.ftc.teamcode.cometbots.projects;
|
||||
|
||||
import com.qualcomm.robotcore.eventloop.opmode.OpMode;
|
||||
import com.acmerobotics.dashboard.FtcDashboard;
|
@ -1,4 +1,4 @@
|
||||
package org.firstinspires.ftc.teamcode.cometbots;
|
||||
package org.firstinspires.ftc.teamcode.cometbots.projects;
|
||||
|
||||
import com.acmerobotics.dashboard.FtcDashboard;
|
||||
import com.acmerobotics.dashboard.config.Config;
|
@ -0,0 +1,4 @@
|
||||
package org.firstinspires.ftc.teamcode.cometbots.projects;
|
||||
|
||||
public class BluenbAutov1 {
|
||||
}
|
@ -0,0 +1,109 @@
|
||||
package org.firstinspires.ftc.teamcode.cometbots.projects;
|
||||
|
||||
import org.firstinspires.ftc.teamcode.pedroPathing.pathGeneration.BezierLine;
|
||||
import org.firstinspires.ftc.teamcode.pedroPathing.pathGeneration.PathBuilder;
|
||||
import org.firstinspires.ftc.teamcode.pedroPathing.pathGeneration.Point;
|
||||
|
||||
public class GeneratedPath {
|
||||
public GeneratedPath() {
|
||||
PathBuilder builder = new PathBuilder();
|
||||
|
||||
builder
|
||||
.addPath(
|
||||
// Line 1
|
||||
new BezierLine(
|
||||
new Point(9.757, 84.983, Point.CARTESIAN),
|
||||
new Point(28.573, 76.302, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
.setTangentHeadingInterpolation()
|
||||
.addPath(
|
||||
// Line 2
|
||||
new BezierLine(
|
||||
new Point(28.573, 76.302, Point.CARTESIAN),
|
||||
new Point(36.203, 76.140, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
.setTangentHeadingInterpolation()
|
||||
.addPath(
|
||||
// Line 3
|
||||
new BezierLine(
|
||||
new Point(36.203, 76.140, Point.CARTESIAN),
|
||||
new Point(35.067, 35.716, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
.setTangentHeadingInterpolation()
|
||||
.addPath(
|
||||
// Line 4
|
||||
new BezierLine(
|
||||
new Point(35.067, 35.716, Point.CARTESIAN),
|
||||
new Point(73.705, 34.742, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
.setTangentHeadingInterpolation()
|
||||
.addPath(
|
||||
// Line 5
|
||||
new BezierLine(
|
||||
new Point(73.705, 34.742, Point.CARTESIAN),
|
||||
new Point(73.705, 24.839, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
.setTangentHeadingInterpolation()
|
||||
.addPath(
|
||||
// Line 6
|
||||
new BezierLine(
|
||||
new Point(73.705, 24.839, Point.CARTESIAN),
|
||||
new Point(7.630, 26.462, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
.setTangentHeadingInterpolation()
|
||||
.addPath(
|
||||
// Line 7
|
||||
new BezierLine(
|
||||
new Point(7.630, 26.462, Point.CARTESIAN),
|
||||
new Point(64.126, 22.728, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
.setTangentHeadingInterpolation()
|
||||
.addPath(
|
||||
// Line 8
|
||||
new BezierLine(
|
||||
new Point(64.126, 22.728, Point.CARTESIAN),
|
||||
new Point(63.964, 13.150, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
.setTangentHeadingInterpolation()
|
||||
.addPath(
|
||||
// Line 9
|
||||
new BezierLine(
|
||||
new Point(63.964, 13.150, Point.CARTESIAN),
|
||||
new Point(12.338, 15.260, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
.setTangentHeadingInterpolation()
|
||||
.addPath(
|
||||
// Line 10
|
||||
new BezierLine(
|
||||
new Point(12.338, 15.260, Point.CARTESIAN),
|
||||
new Point(63.802, 13.150, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
.setTangentHeadingInterpolation()
|
||||
.addPath(
|
||||
// Line 11
|
||||
new BezierLine(
|
||||
new Point(63.802, 13.150, Point.CARTESIAN),
|
||||
new Point(63.639, 11.689, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
.setTangentHeadingInterpolation()
|
||||
.addPath(
|
||||
// Line 12
|
||||
new BezierLine(
|
||||
new Point(63.639, 11.689, Point.CARTESIAN),
|
||||
new Point(12.014, 11.689, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
.setTangentHeadingInterpolation();
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package org.firstinspires.ftc.teamcode;
|
||||
package org.firstinspires.ftc.teamcode.cometbots.projects;
|
||||
|
||||
|
||||
|
@ -27,11 +27,10 @@
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package org.firstinspires.ftc.teamcode;
|
||||
package org.firstinspires.ftc.teamcode.cometbots.projects;
|
||||
|
||||
import com.qualcomm.hardware.bosch.BNO055IMU;
|
||||
import com.qualcomm.hardware.bosch.JustLoggingAccelerationIntegrator;
|
||||
import com.qualcomm.robotcore.eventloop.opmode.Disabled;
|
||||
import com.qualcomm.robotcore.eventloop.opmode.LinearOpMode;
|
||||
import com.qualcomm.robotcore.eventloop.opmode.TeleOp;
|
||||
|
@ -27,10 +27,9 @@
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package org.firstinspires.ftc.teamcode;
|
||||
package org.firstinspires.ftc.teamcode.cometbots.projects;
|
||||
|
||||
import com.qualcomm.hardware.bosch.BNO055IMU;
|
||||
import com.qualcomm.robotcore.eventloop.opmode.Disabled;
|
||||
import com.qualcomm.robotcore.eventloop.opmode.LinearOpMode;
|
||||
import com.qualcomm.robotcore.eventloop.opmode.TeleOp;
|
||||
import com.qualcomm.robotcore.util.ReadWriteFile;
|
@ -27,7 +27,7 @@
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package org.firstinspires.ftc.teamcode.cometbots;
|
||||
package org.firstinspires.ftc.teamcode.cometbots.projects;
|
||||
|
||||
import static org.firstinspires.ftc.teamcode.PedroConstants.BACK_ENCODER;
|
||||
import static org.firstinspires.ftc.teamcode.PedroConstants.BACK_ENCODER_DIRECTION;
|
@ -0,0 +1,237 @@
|
||||
package org.firstinspires.ftc.teamcode.cometbots.projects;
|
||||
|
||||
import com.qualcomm.robotcore.eventloop.opmode.Autonomous;
|
||||
import com.qualcomm.robotcore.eventloop.opmode.OpMode;
|
||||
|
||||
import org.firstinspires.ftc.robotcore.external.Telemetry;
|
||||
import org.firstinspires.ftc.teamcode.pedroPathing.follower.Follower;
|
||||
import org.firstinspires.ftc.teamcode.pedroPathing.pathGeneration.BezierLine;
|
||||
import org.firstinspires.ftc.teamcode.pedroPathing.pathGeneration.PathBuilder;
|
||||
import org.firstinspires.ftc.teamcode.pedroPathing.pathGeneration.PathChain;
|
||||
import org.firstinspires.ftc.teamcode.pedroPathing.pathGeneration.Point;
|
||||
|
||||
@Autonomous(name = "org.firstinspires.ftc.teamcode.cometbots.projects.bBlueAutoV1", group = "V1")
|
||||
public class bBlueAutoV1 extends OpMode {
|
||||
|
||||
public Telemetry telemetry;
|
||||
public Follower robot;
|
||||
public PathChain path;
|
||||
|
||||
@Override
|
||||
public void init() {
|
||||
robot = new Follower(hardwareMap);
|
||||
|
||||
PathBuilder builder = new PathBuilder();
|
||||
|
||||
path = builder
|
||||
.addPath(
|
||||
// Line 1
|
||||
new BezierLine(
|
||||
new Point(9.757, 84.983, Point.CARTESIAN),
|
||||
new Point(28.573, 76.302, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
|
||||
.addPath(
|
||||
// Line 2
|
||||
new BezierLine(
|
||||
new Point(28.573, 76.302, Point.CARTESIAN),
|
||||
new Point(36.203, 76.140, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
|
||||
.addPath(
|
||||
// Line 3
|
||||
new BezierLine(
|
||||
new Point(36.203, 76.140, Point.CARTESIAN),
|
||||
new Point(35.067, 35.716, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
|
||||
.addPath(
|
||||
// Line 4
|
||||
new BezierLine(
|
||||
new Point(35.067, 35.716, Point.CARTESIAN),
|
||||
new Point(73.705, 34.742, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
|
||||
.addPath(
|
||||
// Line 5
|
||||
new BezierLine(
|
||||
new Point(73.705, 34.742, Point.CARTESIAN),
|
||||
new Point(73.705, 24.839, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
|
||||
.addPath(
|
||||
// Line 6
|
||||
new BezierLine(
|
||||
new Point(73.705, 24.839, Point.CARTESIAN),
|
||||
new Point(7.630, 26.462, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
|
||||
.addPath(
|
||||
// Line 7
|
||||
new BezierLine(
|
||||
new Point(7.630, 26.462, Point.CARTESIAN),
|
||||
new Point(64.126, 22.728, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
|
||||
.addPath(
|
||||
// Line 8
|
||||
new BezierLine(
|
||||
new Point(64.126, 22.728, Point.CARTESIAN),
|
||||
new Point(63.964, 13.150, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
|
||||
.addPath(
|
||||
// Line 9
|
||||
new BezierLine(
|
||||
new Point(63.964, 13.150, Point.CARTESIAN),
|
||||
new Point(12.338, 15.260, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
|
||||
.addPath(
|
||||
// Line 10
|
||||
new BezierLine(
|
||||
new Point(12.338, 15.260, Point.CARTESIAN),
|
||||
new Point(63.802, 13.150, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
|
||||
.addPath(
|
||||
// Line 11
|
||||
new BezierLine(
|
||||
new Point(63.802, 13.150, Point.CARTESIAN),
|
||||
new Point(63.639, 11.689, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
|
||||
.addPath(
|
||||
// Line 12
|
||||
new BezierLine(
|
||||
new Point(63.639, 11.689, Point.CARTESIAN),
|
||||
new Point(12.014, 11.689, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
|
||||
.addPath(
|
||||
// Line 13
|
||||
new BezierLine(
|
||||
new Point(12.014, 11.689, Point.CARTESIAN),
|
||||
new Point(62.665, 30.196, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
|
||||
.addPath(
|
||||
// Line 14
|
||||
new BezierLine(
|
||||
new Point(62.665, 30.196, Point.CARTESIAN),
|
||||
new Point(13.312, 51.463, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
|
||||
.addPath(
|
||||
// Line 15
|
||||
new BezierLine(
|
||||
new Point(13.312, 51.463, Point.CARTESIAN),
|
||||
new Point(16.234, 103.738, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
|
||||
.addPath(
|
||||
// Line 16
|
||||
new BezierLine(
|
||||
new Point(16.234, 103.738, Point.CARTESIAN),
|
||||
new Point(68.023, 108.284, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
|
||||
.addPath(
|
||||
// Line 17
|
||||
new BezierLine(
|
||||
new Point(68.023, 108.284, Point.CARTESIAN),
|
||||
new Point(68.185, 121.109, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
|
||||
.addPath(
|
||||
// Line 18
|
||||
new BezierLine(
|
||||
new Point(68.185, 121.109, Point.CARTESIAN),
|
||||
new Point(21.754, 119.811, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
|
||||
.addPath(
|
||||
// Line 19
|
||||
new BezierLine(
|
||||
new Point(21.754, 119.811, Point.CARTESIAN),
|
||||
new Point(11.526, 129.227, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
|
||||
.addPath(
|
||||
// Line 20
|
||||
new BezierLine(
|
||||
new Point(11.526, 129.227, Point.CARTESIAN),
|
||||
new Point(72.568, 111.856, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
|
||||
.addPath(
|
||||
// Line 21
|
||||
new BezierLine(
|
||||
new Point(72.568, 111.856, Point.CARTESIAN),
|
||||
new Point(58.607, 128.902, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
|
||||
.addPath(
|
||||
// Line 22
|
||||
new BezierLine(
|
||||
new Point(58.607, 128.902, Point.CARTESIAN),
|
||||
new Point(11.364, 130.850, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
|
||||
.addPath(
|
||||
// Line 23
|
||||
new BezierLine(
|
||||
new Point(11.364, 130.850, Point.CARTESIAN),
|
||||
new Point(58.931, 128.577, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
|
||||
.addPath(
|
||||
// Line 24
|
||||
new BezierLine(
|
||||
new Point(58.931, 128.577, Point.CARTESIAN),
|
||||
new Point(58.769, 133.123, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
|
||||
.addPath(
|
||||
// Line 25
|
||||
new BezierLine(
|
||||
new Point(58.769, 133.123, Point.CARTESIAN),
|
||||
new Point(13.475, 133.935, Point.CARTESIAN)
|
||||
)
|
||||
).build();
|
||||
;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void loop() {
|
||||
robot.update();
|
||||
if (robot.atParametricEnd())
|
||||
robot.followPath(path);
|
||||
robot.telemetryDebug(telemetry);
|
||||
}
|
||||
}
|
@ -0,0 +1,174 @@
|
||||
package org.firstinspires.ftc.teamcode.cometbots.projects;
|
||||
|
||||
import org.firstinspires.ftc.teamcode.pedroPathing.pathGeneration.BezierLine;
|
||||
import org.firstinspires.ftc.teamcode.pedroPathing.pathGeneration.PathBuilder;
|
||||
import org.firstinspires.ftc.teamcode.pedroPathing.pathGeneration.Point;
|
||||
|
||||
public class bRedAutoV1 {
|
||||
|
||||
public bRedAutoV1() {
|
||||
PathBuilder builder = new PathBuilder();
|
||||
|
||||
builder
|
||||
.addPath(
|
||||
// Line 1
|
||||
new BezierLine(
|
||||
new Point(133.935, 83.770, Point.CARTESIAN),
|
||||
new Point(79.874, 117.213, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
.setTangentHeadingInterpolation()
|
||||
.addPath(
|
||||
// Line 2
|
||||
new BezierLine(
|
||||
new Point(79.874, 117.213, Point.CARTESIAN),
|
||||
new Point(79.874, 120.785, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
.setTangentHeadingInterpolation()
|
||||
.addPath(
|
||||
// Line 3
|
||||
new BezierLine(
|
||||
new Point(79.874, 120.785, Point.CARTESIAN),
|
||||
new Point(131.824, 118.349, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
.setTangentHeadingInterpolation()
|
||||
.addPath(
|
||||
// Line 4
|
||||
new BezierLine(
|
||||
new Point(131.824, 118.349, Point.CARTESIAN),
|
||||
new Point(79.549, 120.460, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
.setTangentHeadingInterpolation()
|
||||
.addPath(
|
||||
// Line 5
|
||||
new BezierLine(
|
||||
new Point(79.549, 120.460, Point.CARTESIAN),
|
||||
new Point(79.549, 128.740, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
.setTangentHeadingInterpolation()
|
||||
.addPath(
|
||||
// Line 6
|
||||
new BezierLine(
|
||||
new Point(79.549, 128.740, Point.CARTESIAN),
|
||||
new Point(131.337, 128.090, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
.setTangentHeadingInterpolation()
|
||||
.addPath(
|
||||
// Line 7
|
||||
new BezierLine(
|
||||
new Point(131.337, 128.090, Point.CARTESIAN),
|
||||
new Point(79.549, 128.740, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
.setTangentHeadingInterpolation()
|
||||
.addPath(
|
||||
// Line 8
|
||||
new BezierLine(
|
||||
new Point(79.549, 128.740, Point.CARTESIAN),
|
||||
new Point(79.549, 133.610, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
.setTangentHeadingInterpolation()
|
||||
.addPath(
|
||||
// Line 9
|
||||
new BezierLine(
|
||||
new Point(79.549, 133.610, Point.CARTESIAN),
|
||||
new Point(130.850, 133.285, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
.setTangentHeadingInterpolation()
|
||||
.addPath(
|
||||
// Line 10
|
||||
new BezierLine(
|
||||
new Point(130.850, 133.285, Point.CARTESIAN),
|
||||
new Point(130.201, 36.528, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
.setTangentHeadingInterpolation()
|
||||
.addPath(
|
||||
// Line 11
|
||||
new BezierLine(
|
||||
new Point(130.201, 36.528, Point.CARTESIAN),
|
||||
new Point(84.095, 36.203, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
.setTangentHeadingInterpolation()
|
||||
.addPath(
|
||||
// Line 12
|
||||
new BezierLine(
|
||||
new Point(84.095, 36.203, Point.CARTESIAN),
|
||||
new Point(84.095, 23.378, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
.setTangentHeadingInterpolation()
|
||||
.addPath(
|
||||
// Line 13
|
||||
new BezierLine(
|
||||
new Point(84.095, 23.378, Point.CARTESIAN),
|
||||
new Point(119.811, 23.378, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
.setTangentHeadingInterpolation()
|
||||
.addPath(
|
||||
// Line 14
|
||||
new BezierLine(
|
||||
new Point(119.811, 23.378, Point.CARTESIAN),
|
||||
new Point(127.603, 13.475, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
.setTangentHeadingInterpolation()
|
||||
.addPath(
|
||||
// Line 15
|
||||
new BezierLine(
|
||||
new Point(127.603, 13.475, Point.CARTESIAN),
|
||||
new Point(88.640, 28.248, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
.setTangentHeadingInterpolation()
|
||||
.addPath(
|
||||
// Line 16
|
||||
new BezierLine(
|
||||
new Point(88.640, 28.248, Point.CARTESIAN),
|
||||
new Point(87.666, 15.910, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
.setTangentHeadingInterpolation()
|
||||
.addPath(
|
||||
// Line 17
|
||||
new BezierLine(
|
||||
new Point(87.666, 15.910, Point.CARTESIAN),
|
||||
new Point(127.603, 12.014, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
.setTangentHeadingInterpolation()
|
||||
.addPath(
|
||||
// Line 18
|
||||
new BezierLine(
|
||||
new Point(127.603, 12.014, Point.CARTESIAN),
|
||||
new Point(86.692, 12.825, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
.setTangentHeadingInterpolation()
|
||||
.addPath(
|
||||
// Line 19
|
||||
new BezierLine(
|
||||
new Point(86.692, 12.825, Point.CARTESIAN),
|
||||
new Point(86.692, 10.390, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
.setTangentHeadingInterpolation()
|
||||
.addPath(
|
||||
// Line 20
|
||||
new BezierLine(
|
||||
new Point(86.692, 10.390, Point.CARTESIAN),
|
||||
new Point(126.467, 9.903, Point.CARTESIAN)
|
||||
)
|
||||
)
|
||||
.setTangentHeadingInterpolation();
|
||||
}
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
package org.firstinspires.ftc.teamcode.states;
|
||||
|
||||
public class FieldStates {
|
||||
|
||||
public enum FieldLocation {
|
||||
BUCKET, SUBMARINE, FLOATING, TRAVELING
|
||||
}
|
||||
|
||||
private FieldLocation fieldLocation;
|
||||
|
||||
public FieldLocation getFieldLocation() {
|
||||
return fieldLocation;
|
||||
}
|
||||
|
||||
public void setFieldLocation(FieldLocation fieldLocation) {
|
||||
this.fieldLocation = fieldLocation;
|
||||
}
|
||||
}
|
@ -0,0 +1,105 @@
|
||||
package org.firstinspires.ftc.teamcode.subsystem;
|
||||
|
||||
import static org.firstinspires.ftc.teamcode.PedroConstants.BACK_LEFT_MOTOR;
|
||||
import static org.firstinspires.ftc.teamcode.PedroConstants.BACK_LEFT_MOTOR_DIRECTION;
|
||||
import static org.firstinspires.ftc.teamcode.PedroConstants.BACK_RIGHT_MOTOR;
|
||||
import static org.firstinspires.ftc.teamcode.PedroConstants.BACK_RIGHT_MOTOR_DIRECTION;
|
||||
import static org.firstinspires.ftc.teamcode.PedroConstants.FRONT_LEFT_MOTOR;
|
||||
import static org.firstinspires.ftc.teamcode.PedroConstants.FRONT_LEFT_MOTOR_DIRECTION;
|
||||
import static org.firstinspires.ftc.teamcode.PedroConstants.FRONT_RIGHT_MOTOR;
|
||||
import static org.firstinspires.ftc.teamcode.PedroConstants.FRONT_RIGHT_MOTOR_DIRECTION;
|
||||
import static org.firstinspires.ftc.teamcode.PedroConstants.MAX_POWER;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.acmerobotics.dashboard.telemetry.TelemetryPacket;
|
||||
import com.acmerobotics.roadrunner.Action;
|
||||
import com.qualcomm.robotcore.hardware.DcMotor;
|
||||
import com.qualcomm.robotcore.hardware.Gamepad;
|
||||
import com.qualcomm.robotcore.hardware.HardwareMap;
|
||||
|
||||
import org.firstinspires.ftc.robotcore.external.Telemetry;
|
||||
|
||||
public class MotorsSubsystem {
|
||||
|
||||
public HardwareMap hardwareMap;
|
||||
public Telemetry telemetry;
|
||||
|
||||
public DcMotor frontLeftMotor;
|
||||
public DcMotor backLeftMotor;
|
||||
public DcMotor frontRightMotor;
|
||||
public DcMotor backRightMotor;
|
||||
|
||||
public enum TravelState {
|
||||
STOPPED, MOVING
|
||||
}
|
||||
|
||||
public TravelState travelState;
|
||||
|
||||
public double power;
|
||||
|
||||
public MotorsSubsystem(HardwareMap hardwareMap, Telemetry telemetry) {
|
||||
this.hardwareMap = hardwareMap;
|
||||
this.telemetry = telemetry;
|
||||
this.power = MAX_POWER;
|
||||
}
|
||||
|
||||
public MotorsSubsystem(HardwareMap hardwareMap, Telemetry telemetry, double power) {
|
||||
this.hardwareMap = hardwareMap;
|
||||
this.telemetry = telemetry;
|
||||
this.power = power;
|
||||
}
|
||||
|
||||
public void init() {
|
||||
frontLeftMotor = hardwareMap.get(DcMotor.class, FRONT_LEFT_MOTOR);
|
||||
backLeftMotor = hardwareMap.get(DcMotor.class, BACK_LEFT_MOTOR);
|
||||
frontRightMotor = hardwareMap.get(DcMotor.class, FRONT_RIGHT_MOTOR);
|
||||
backRightMotor = hardwareMap.get(DcMotor.class, BACK_RIGHT_MOTOR);
|
||||
|
||||
frontLeftMotor.setDirection(FRONT_LEFT_MOTOR_DIRECTION);
|
||||
backLeftMotor.setDirection(BACK_LEFT_MOTOR_DIRECTION);
|
||||
frontRightMotor.setDirection(FRONT_RIGHT_MOTOR_DIRECTION);
|
||||
backRightMotor.setDirection(BACK_RIGHT_MOTOR_DIRECTION);
|
||||
|
||||
frontLeftMotor.setZeroPowerBehavior(DcMotor.ZeroPowerBehavior.BRAKE);
|
||||
backLeftMotor.setZeroPowerBehavior(DcMotor.ZeroPowerBehavior.BRAKE);
|
||||
frontRightMotor.setZeroPowerBehavior(DcMotor.ZeroPowerBehavior.BRAKE);
|
||||
backRightMotor.setZeroPowerBehavior(DcMotor.ZeroPowerBehavior.BRAKE);
|
||||
|
||||
this.setState(TravelState.STOPPED);
|
||||
}
|
||||
|
||||
public void setFrontLeftMotorPower(double power) {
|
||||
frontLeftMotor.setPower(power);
|
||||
}
|
||||
|
||||
public void setBackLeftMotorPower(double power) {
|
||||
backLeftMotor.setPower(power);
|
||||
}
|
||||
|
||||
public void setFrontRightMotorPower(double power) {
|
||||
frontRightMotor.setPower(power);
|
||||
}
|
||||
|
||||
public void setBackRightMotorPower(double power) {
|
||||
backRightMotor.setPower(power);
|
||||
}
|
||||
|
||||
|
||||
public void setState(TravelState travelState) {
|
||||
this.travelState = travelState;
|
||||
}
|
||||
|
||||
public TravelState getState() {
|
||||
return this.travelState;
|
||||
}
|
||||
|
||||
public void setPower(DcMotor motor, double power) {
|
||||
motor.setPower(power);
|
||||
if (power < 0.05) {
|
||||
this.setState(TravelState.MOVING);
|
||||
} else {
|
||||
this.setState(TravelState.STOPPED);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user