Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @Autonomous(name = "BlueSkystoneNOSplines", group = "Auto")
- public class BlueSkystoneNOSplines extends LinearOpMode {
- FtcDashboard dashboard = FtcDashboard.getInstance();
- Telemetry dashboardTelemetry = dashboard.getTelemetry();
- Intake intake = new Intake();
- Scorer scorer = new Scorer();
- int[] vals;
- SkystoneDetector detector = new SkystoneDetector();
- public void setup() {
- }
- public void runOpMode() throws InterruptedException {
- MecanumBase drive = new MecanumAuto(hardwareMap);
- intake.init(hardwareMap);
- //pattern1
- //get the first stone
- Trajectory mid1 = new TrajectoryBuilder(new Pose2d(-33.0,63.0, Math.toRadians(180.0)),
- new DriveConstraints(
- 25.0, 20.0, 0,
- Math.toRadians(180.0), Math.toRadians(180.0), 0.0))
- .lineTo(new Vector2d(-20.0,36.0), new SplineInterpolator(Math.toRadians(-90.0), Math.toRadians(-150.0)))
- .addMarker(new Vector2d(-20.0,36.0), () ->
- {
- intake.collect(0.275); //in
- return Unit.INSTANCE;
- })
- .lineTo(new Vector2d(-32.0, 24.0), new SplineInterpolator(Math.toRadians(-150.0), Math.toRadians(-150.0)))
- .addMarker(new Vector2d(-32.0, 24.0), () ->{
- intake.collect(0);
- return Unit.INSTANCE;
- })
- .build();
- //move to delivery
- Trajectory mid2 = new TrajectoryBuilder( /*new Pose2d(-32.0, 24.0, Math.toRadians(180.0))*/mid1.end(),
- new DriveConstraints(
- 45.0, 25.0, 0,
- Math.toRadians(180.0), Math.toRadians(180.0), 0.0))
- .lineTo(new Vector2d(-16.0, 38.0), new SplineInterpolator(Math.toRadians(-145.0), Math.toRadians(-180.0)))
- .reverse()
- .lineTo(new Vector2d(24.0, 40.0), new LinearInterpolator(Math.toRadians(-90.0), Math.toRadians(-90.0)))
- .reverse()
- .addMarker(new Vector2d(24.0,40.0), () ->{
- intake.collect(-0.8);
- return Unit.INSTANCE;
- })
- .lineTo(new Vector2d(-48.0, 40.0),new LinearInterpolator(Math.toRadians(-90.0), Math.toRadians(-150.0)))
- .addMarker(new Vector2d(0.0, 40.0), () ->{
- intake.collect(0);
- return Unit.INSTANCE;
- })
- .addMarker(new Vector2d(-48.0,40.0), () ->
- {
- intake.collect(0.275); //in
- return Unit.INSTANCE;
- })
- .build();
- // get second skystone
- Trajectory mid3 = new TrajectoryBuilder(/*new Pose2d(-48.0, 40.0, Math.toRadians(180.0))*/mid2.end(),
- new DriveConstraints(25.0, 20.0, 0,
- Math.toRadians(180.0),Math.toRadians(180.0), 0.0))
- .lineTo(new Vector2d(-56.0, 24.0), new SplineInterpolator(Math.toRadians(-150.0), Math.toRadians(-150.0)))
- .addMarker(new Vector2d(-56.0, 24.0), () ->{
- intake.collect(0);
- return Unit.INSTANCE;
- })
- .build();
- //deposit second skystone
- Trajectory mid4 = new TrajectoryBuilder(/*new Pose2d(-56.0, 24.0, Math.toRadians(180.0))*/ mid3.end(),
- new DriveConstraints(
- 45.0, 25.0, 0,
- Math.toRadians(180.0), Math.toRadians(180.0), 0.0))
- .reverse()
- .lineTo(new Vector2d(24.0, 40.0), new LinearInterpolator(Math.toRadians(-90.0), Math.toRadians(-90.0)))
- .reverse()
- .addMarker(new Vector2d(24.0,40.0), () ->{
- intake.collect(-0.8);
- return Unit.INSTANCE;
- })
- .lineTo(new Vector2d(0.0, 40.0), new LinearInterpolator(Math.toRadians(-90.0), Math.toRadians(-90.0)))
- .addMarker(new Vector2d(0.0, 40.0), () ->{
- intake.collect(0);
- return Unit.INSTANCE;
- })
- .build();
- //left stone
- Trajectory left1 = new TrajectoryBuilder(new Pose2d(-33.0,63.0, Math.toRadians(180.0)),
- new DriveConstraints(
- 25.0, 20.0, 0,
- Math.toRadians(180.0), Math.toRadians(180.0), 0.0))
- .lineTo(new Vector2d(-40.0, 36.0), new SplineInterpolator(Math.toRadians(-90.0), Math.toRadians(-140.0)))
- .addMarker(new Vector2d(-40.0,36.0), () ->{
- intake.collect(.275);
- return Unit.INSTANCE;
- })
- .lineTo(new Vector2d(-48.0, 24.0), new SplineInterpolator(Math.toRadians(-140.0),Math.toRadians(-140.0)))
- .addMarker(new Vector2d(-48.0, 24.0), () ->{
- intake.collect(0);
- return Unit.INSTANCE;
- })
- .build();
- Trajectory left2 = new TrajectoryBuilder(left1.end() /*new Pose2d(-48.0, 24.0, Math.toRadians(180.0))*/,
- new DriveConstraints(
- 45.0, 25.0, 0,
- Math.toRadians(180.0), Math.toRadians(180.0), 0.0))
- .lineTo(new Vector2d(-40.0,40.0), new SplineInterpolator(Math.toRadians(-140.0), Math.toRadians( -180.0)))
- .reverse()
- .lineTo(new Vector2d(24.0, 40.0), new LinearInterpolator(Math.toRadians(-90.0), Math.toRadians(-90.0)))
- .reverse()
- .addMarker(new Vector2d(24.0,40.0), () ->{
- intake.collect(-0.8);
- return Unit.INSTANCE;
- })
- .lineTo(new Vector2d(-15.0, 40.0), new SplineInterpolator(Math.toRadians(-90.0), Math.toRadians(-130.0)))
- .addMarker(new Vector2d(0.0, 40.0), () ->{
- intake.collect(0);
- return Unit.INSTANCE;
- })
- .addMarker(new Vector2d(-15.0,40.0), () ->
- {
- intake.collect(0.275); //in
- return Unit.INSTANCE;
- })
- .build();
- //move to second skystone
- Trajectory left3 = new TrajectoryBuilder(/*new Pose2d(-15.0, 40.0, Math.toRadians(180.0))*/ left2.end(),
- new DriveConstraints(25.0, 20.0, 0,
- Math.toRadians(180.0),Math.toRadians(180.0), 0.0))
- .lineTo(new Vector2d(-23.0, 24.0), new SplineInterpolator(Math.toRadians(-130.0), Math.toRadians(-130.0)))
- .addMarker(new Vector2d(-23.0, 24.0), () ->{
- intake.collect(0);
- return Unit.INSTANCE;
- })
- .build();
- //get second skystone
- Trajectory left4 = new TrajectoryBuilder(/*new Pose2d(-23.0, 24.0, Math.toRadians(180.0))*/ left3.end(),
- new DriveConstraints(
- 45.0, 25.0, 0,
- Math.toRadians(180.0), Math.toRadians(180.0), 0.0))
- .lineTo(new Vector2d(-20.0,40.0), new SplineInterpolator(Math.toRadians(-140.0), Math.toRadians( -180.0)))
- .reverse()
- .lineTo(new Vector2d(24.0, 40.0), new LinearInterpolator(Math.toRadians(-90.0), Math.toRadians(-90.0)))
- .reverse()
- .lineTo(new Vector2d(0.0,40.0), new LinearInterpolator(Math.toRadians(-90.0), Math.toRadians(-90.0)))
- .build();
- //pattern 3 or right stone
- Trajectory right1 = new TrajectoryBuilder(drive.getPoseEstimate(),
- new DriveConstraints(
- 25.0, 20.0, 0,
- Math.toRadians(180.0), Math.toRadians(180.0), 0.0))
- .lineTo(new Vector2d(-30.0,36.0), new SplineInterpolator(Math.toRadians(-90.0), Math.toRadians(-145.0)))
- .addMarker(new Vector2d(-30.0, 38.0), () ->{
- intake.collect(0.275);
- return Unit.INSTANCE;
- })
- .lineTo(new Vector2d(-38.0,24.0), new SplineInterpolator(Math.toRadians(-145.0), Math.toRadians(-145.0)))
- .addMarker(new Vector2d(-38.0, 24.0), () ->
- {
- intake.collect(0);
- return Unit.INSTANCE;
- })
- .build();
- //move to delivery
- Trajectory right2 = new TrajectoryBuilder(right1.end(),
- new DriveConstraints(
- 45.0, 25.0, 0,
- Math.toRadians(180.0), Math.toRadians(180.0), 0.0))
- .lineTo(new Vector2d(-30.0, 40.0), new SplineInterpolator(Math.toRadians(-145.0), Math.toRadians(-180.0)))
- .reverse()
- .lineTo(new Vector2d(24.0, 40.0), new LinearInterpolator(Math.toRadians(-90.0), Math.toRadians(-90.0)))
- .reverse()
- .addMarker(new Vector2d(24.0, 40.0), ()->{
- intake.collect(-0.8);
- return Unit.INSTANCE;
- })
- .lineTo(new Vector2d(-53.0,40.0), new SplineInterpolator(Math.toRadians(-90.0), Math.toRadians(-145.0)))
- .addMarker(new Vector2d(0.0, 40.0), ()->{
- intake.collect(0);
- return Unit.INSTANCE;
- })
- .addMarker(new Vector2d(-53.0, 40.0), ()->{
- intake.collect(0.275);
- return Unit.INSTANCE;
- })
- .build();
- //move to second skystone
- Trajectory right3 = new TrajectoryBuilder(right2.end(),
- new DriveConstraints(25.0, 20.0, 0,
- Math.toRadians(180.0),Math.toRadians(180.0), 0.0))
- .lineTo(new Vector2d(-61.0,24.0), new SplineInterpolator(Math.toRadians(-145.0), Math.toRadians(-145.0)))
- .addMarker(new Vector2d(-61.0, 24.0), ()->{
- intake.collect(0);
- return Unit.INSTANCE;
- })
- .build();
- //get second skystone
- Trajectory right4 = new TrajectoryBuilder(right3.end(),
- new DriveConstraints(
- 45.0, 20.0, 0,
- Math.toRadians(180.0), Math.toRadians(180.0), 0.0))
- .reverse()
- .lineTo(new Vector2d(24.0, 40.0),new LinearInterpolator(Math.toRadians(-90.0), Math.toRadians(-90.0)))
- .reverse()
- .addMarker(new Vector2d(24.0,40.0), () ->{
- intake.collect(-0.8);
- return Unit.INSTANCE;
- })
- .lineTo(new Vector2d(0.0, 40.0), new LinearInterpolator(Math.toRadians(-90.0), Math.toRadians(-90.0)))
- .addMarker(new Vector2d(0.0, 40.0), () ->{
- intake.collect(0);
- return Unit.INSTANCE;
- })
- .build();
- //else condition
- Trajectory park = new TrajectoryBuilder(drive.getPoseEstimate(), DriveConstants.BASE_CONSTRAINTS)
- .lineTo(new Vector2d(-33.0, 40.0), new SplineInterpolator(Math.toRadians(-90.0), Math.toRadians(-180.0)))
- .lineTo(new Vector2d(0.0, 40.0), new SplineInterpolator(Math.toRadians(-180.0), Math.toRadians(-180.0)))
- .build();
- detector.setOffset(-1f / 8f, 3f / 8f);
- detector.camSetup(hardwareMap);
- waitForStart();
- while (!opModeIsActive() && !isStopRequested()) {
- telemetry.addData("status", "waiting for start command...");
- telemetry.update();
- }
- if (isStopRequested()) return;
- intake.hitter.setPosition(0.4); //closed
- if (opModeIsActive()) {
- detector.updateVals();
- vals = detector.getVals();
- telemetry.addData("Values", vals[1] + " " + vals[0] + " " + vals[2]);
- telemetry.update();
- if (vals[0] == 0) { //mid
- drive.followTrajectorySync(mid1);
- drive.followTrajectorySync(mid2);
- drive.followTrajectorySync(mid3);
- drive.followTrajectorySync(mid4);
- } else if (vals[1] == 0) {//left
- //turn and get first stone
- drive.followTrajectorySync(left1);
- drive.followTrajectorySync(left2);
- drive.followTrajectorySync(left3);
- drive.followTrajectorySync(left4);
- } else if (vals[2] == 0) {
- drive.followTrajectorySync(right1);
- drive.followTrajectorySync(right2);
- drive.followTrajectorySync(right3);
- drive.followTrajectorySync(right4);
- } else {
- drive.followTrajectorySync(park);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement